Генератор импульсов для газовой форсунки.
|
|
xxxmonejall |
Дата: Вт, 07.01.2014, 00:32 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
139
Замечания:
±
На сайте с 17.05.2008
Статус:
Offline
|
Доброго времени суток уважаемые форумчани... Столкнулся с проблемой недостатком памяти контролера, не вмещается моя программа в кристалл... PIC16F628А. Может возможно как-то ее упростить? Прилагаю саму программу... На данном этапе она помещается. А во если еще что-то добавить, тогда уже нет. Что делать не знаю... А так оставлять не очень хочется:( Я думаю что вот с этим кусочком можно что-то сделать В программе еще таких 15 кусочков:)
Сообщение отредактировал
xxxmonejall - Вт, 07.01.2014, 00:32
|
|
|
|
demanik |
Дата: Вт, 07.01.2014, 01:05 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
"Print" сделать подпрограммой и вызывть через GOSUB чуть высвободит места. и "imp = imp + 100: DelayMS 200" тоже как подпрограмму
Попробуй всё и вся... может быть пол...
|
|
|
|
demanik |
Дата: Вт, 07.01.2014, 01:51 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
По быстрому переделал. Занято 64,31%
Попробуй всё и вся... может быть пол...
|
|
|
|
xxxmonejall |
Дата: Вт, 07.01.2014, 19:23 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
139
Замечания:
±
На сайте с 17.05.2008
Статус:
Offline
|
Спасибо:)) Наверное придется внимательней изучать команды протона:)
|
|
|
|
DAlexV |
Дата: Чт, 09.01.2014, 13:30 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Цитата demanik ( ) По быстрому переделал. Переделал по среднему Кто меньше ?????
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Чт, 09.01.2014, 14:32
|
|
|
|
xvovanx |
Дата: Пт, 10.01.2014, 00:39 | Сообщение # 6 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
328
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Посмотрел тело проги у автора в начале темы - вроде как и понятно, что она делает. Посмотрел тело проги у DAlexV - прерывание на прерывании и регистром погоняет . Кто на ком сидит и с кем сравнивает - каша в голове, зато 26%
|
|
|
|
dimitriy-bc |
Дата: Пт, 10.01.2014, 01:19 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Цитата DAlexV ( ) Переделал по среднему Круто!!! Если не секрет, а что в Вашем понимании кардинально Но, в любом случае сокращение программы на 3/4 это круто!!!!!!!!!
|
|
|
|
xvovanx |
Дата: Пт, 10.01.2014, 11:36 | Сообщение # 8 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
328
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Цитата dimitriy-bc ( ) Если не секрет, а что в Вашем понимании кардинально
Думаю, что кардинально - это когда прога выглядит как безпорядочный набор знакомых (и не знакомых) команд, но все далает как надо. А разобраться кто что делает и за что отвечает . Ведь алгоритм программы можно воспроизвести разными командами, а после компиляции объем проги ой как отличается. Скажем +1 и инкримент- действие одинаковое, а объем разный. А если в обработку данных "замутить" булеву алгебру и проверки старших, младших байтов, то ... мозг опухает, по крайней мере у меня
|
|
|
|
DAlexV |
Дата: Пт, 10.01.2014, 11:50 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Цитата xvovanx ( ) Посмотрел тело проги у автора в начале темы - вроде как и понятно, что она делает. Посмотрел тело проги у DAlexV - прерывание на прерывании и регистром погоняет Тут дело в подходе. Результат в итоге один и тот же, зато есть еще что модернизировать(память еще позволяет). Там есть Шпротеуский файл где можно пощупать как она работает вживую. Используется всего один таймер. На нем и точная настройка длительность-пауза, и обслуживание клавиатуры(с програмным подавлением дребезга, которым народ частенько принебрегает) , и при желании еще и часы пристроить можно. И .... Сам пока еще не придумал :D. Да просто захотелось таким образом мозги от праздников разгрузить Цитата dimitriy-bc ( ) Круто!!! Если не секрет, а что в Вашем понимании кардинально Переписать все по новой. Когда создал что то и оно работает не редко через некоторое время начинаешь осозновать что можно было бы написать это по другому, что то улудшить, что то добавить, что то исправить. Нельзя же останавливаться на Ver 1.0.0
Удачи всем
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
xvovanx |
Дата: Сб, 11.01.2014, 20:31 | Сообщение # 10 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
328
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Цитата DAlexV ( ) обслуживание клавиатуры с програмным подавлением дребезга, которым народ частенько принебрегает
А можно в двух словах о самом принципе програмного подавления дребезга. Выжидание промежутка времени в нажатом состоянии?
Сообщение отредактировал
xvovanx - Сб, 11.01.2014, 20:34
|
|
|
|
DAlexV |
Дата: Вс, 12.01.2014, 16:26 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Цитата xvovanx ( ) А можно в двух словах о самом принципе програмного подавления дребезга. Можно. Цитата xvovanx ( ) Выжидание промежутка времени в нажатом состоянии? Можно конечно и так но это не совсем правильно. Если постоянно в цикле или с применением спец операторов это делать, то на момент опроса клавы вся программа будет этим занята, что уже само по себе не всегда хорошо. Как вариант делать два замера через некоторый промедуток времени. Код ' кнопки на порте В по дефу 0, при нажатии 1 ' порт С леды состояния кнопок, Е.0 Лед нажатой(любой) кнопки(кнопок)
KeyPrev=portb delayms 5 KeyDef=portb if Keydef=keyprev and Keydef<>0 then portc=KeyDef PortE.0=1 else PortE.0=0 end if Вместо ледов можно использвать переменные за счет которых можно будет распозновать код нажатой кнопки. PortE.0-> KeyPress(as bit or boolean)
Код if KeyPress=1 then KeyCode=keyDef KeyNew=1 ' else KeyCode=0 end if
' обработка клавиатуры по флагу keyNew if keyNew=1 then ' непосредственно сам обработчик клавиатуры
keyNew=0 end if Ну и далее по желанию и вкусу. Все выше сказанное подходит к тем программа в которых не требуется точная выдержка по времени. Если это нужно, то уже лучше пользоваться таймерами и прерываниями(как в пиложенной программе). за счет 1 таймера реализованно:Точная выдержка периода импульса (в прерывании) Точная выдержка длятельности импульса (в прерывании) Обработка клавиатуры по определенным интервалам( за счет счетчика в прерывании) Вывод на индикацию (основной блок) Ну и куча места для расширения возможностей Примерно тот же принцип используется и для матричной клавиатуры. Только добавляется сканирование столбцов. Если будет интерес к данной теме заварганим статейку по ентому поводу. Удачи
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
dimitriy-bc |
Дата: Пн, 13.01.2014, 20:54 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Цитата DAlexV ( ) Если будет интерес к данной теме заварганим статейку по ентому поводу. Было бы очень интересно почитать. Я обычно ставлю интегральную цепочку по входу. А с программным решением было бы поинтересней.
|
|
|
|