Вывод на дисплей сожрал весь ресурс МК

PIC версия программы(разные темы)

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение milcin68 (Александр) » 16 янв 2020, 09:51

в этом варианте математика с переменными float осталась на месте
убрано только преобразование в string
и сразу все хватает
Код: выделить все
ROM available:4096 words, used:1985 words (48.5%), free:2111 words (51.5%)


то есть вывод на дисплей в этой программе без потери памяти сделать нельзя?
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение milcin68 (Александр) » 16 янв 2020, 10:05

Кстати может всем это уже и известно, но хочу поделится.
Допустим у МК PIC16F628 или PIC16F883 есть прерывание RB0INT только или по положительному фронту или по отрицательному фронту.
Если изменить файл FCD c такого
Код: выделить все
[RB0INT]
Name="INT"
REMask=0x00,0x01
FEMask=0x00,0x01
ConfOpt=0x03
EdgeOpt=0x01
HandlerCode="#ifndef MX_INTHANDLER_intcon_INTF\n#define MX_INTHANDLER_intcon_INTF\nif (ts_bit(intcon, INTF) && ts_bit(intcon, INTE))\n{\n\t#ifdef USE_FLOWCODE_ICD\n\t\textern char ICD_Interrupt_Enable = 1;\n\t#endif\t\n\tFCM_%n();\n\tcr_bit(intcon, INTF);\n\t#ifdef USE_FLOWCODE_ICD\n\t\textern char ICD_Interrupt_Enable = 0;\n\t#endif\t\n}\n#else\n#warning "This interrupt has previously been enabled, so the macro <%n> may never get called."\n#endif\n"
EnableCode="st_bit(intcon, INTE);\n"
DisableCode="cr_bit(intcon, INTE);\n"
OptCnt=1
Opt1="Interrupt Edge Select"
Opt1Cnt=2
Opt1_1="rising edge of INT"
Opt1_1Val="st_bit(option_reg,INTEDG);\n"
Opt1_2="falling edge of INT"
Opt1_2Val="cr_bit(option_reg,INTEDG);\n"


на такой
Код: выделить все
[RB0INT]
Name="INT"
REMask=0x00,0x01
FEMask=0x00,0x01
ConfOpt=0x03
EdgeOpt=0x01
HandlerCode="#ifndef MX_INTHANDLER_intcon_INTF\n#define MX_INTHANDLER_intcon_INTF\nif (ts_bit(intcon, INTF) && ts_bit(intcon, INTE))\n{\n\t#ifdef USE_FLOWCODE_ICD\n\t\textern char ICD_Interrupt_Enable = 1;\n\t#endif\t\n\tFCM_%n();\n\tcr_bit(intcon, INTF);\n\t#ifdef USE_FLOWCODE_ICD\n\t\textern char ICD_Interrupt_Enable = 0;\n\t#endif\t\n}\n#else\n#warning "This interrupt has previously been enabled, so the macro <%n> may never get called."\n#endif\n"
EnableCode="st_bit(intcon, INTE);\n"
DisableCode="cr_bit(intcon, INTE);\n"
OptCnt=1
Opt1="Interrupt Edge Select"
Opt1Cnt=3
Opt1_1="rising edge of INT"
Opt1_1Val="st_bit(option_reg,INTEDG);\n"
Opt1_2="falling edge of INT"
Opt1_2Val="cr_bit(option_reg,INTEDG);\n"
Opt1_3="any edge of INT"
Opt1_3Val="st_bit(option_reg,INTEDG);\n cr_bit(option_reg,INTEDG);\n"


то прерывание будет по обоим фронтам, опробовано в железе на 883 МК
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение Yushik (Андрей) » 16 янв 2020, 18:13

Да я тоже припоминаю, если работать с переменными String память подъедается но не катастрофически. У себя помнится тоже пришлось отказаться от преобразований Float в String по причине нехватки памяти. Большой памятью программ насколько я помню обладают уже Pic18Fxxxx. Как отображать на дисплее значения меньше 1 способов несколько всё зависит от того будут ли они всегда меньше 1 и не будет ли меняться количество знаков после запятой и т. д. расскажите подробнее какой формат может принимать переменная которую нужно отобразить. И на конец-то вынесите инициализацию и очистку дисплея в начало программы после объявления прерывания, его нужно выполнять один раз это базовые принципы работы с дисплеями, очистку дисплея можно делать много раз в процессе программы. Но учитывайте если делать очистку в основном цикле то дисплей начнёт мерцать, я обычно делаю это в условиях обработки кнопок если таковы есть. Хотя эти дисплеи и их макросы в ФК это отдельная тема у них много нюансов с которыми вы ещё столкнётесь.
Аватар пользователя
Ник: Yushik
Имя: Андрей
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение WiseOwl (WiseOwl) » 17 янв 2020, 06:58

Комментировать такой способ генерации частоты я не стану... дабы не ругаться матом...
Просто покажу как уйти от применения переменных Float. Для примера изменил пересчет микросекунд в частоту и вывод частоты на ЖКИ.
Если взять примеры с форума, то в этот МК можно впихнуть невпихуемое...
Также, думаю, автор понимает что линейное изменение периода - это нелинейное изменение частоты...
GENA.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: WiseOwl
Имя: WiseOwl
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение milcin68 (Александр) » 17 янв 2020, 11:44

У вас там вставки на "С" я не знаю этот язык.
Если бы я знал язык программирования то зачем мне эта программа?

вот такое решение нашёл.
PROBA.rar


там в программе есть комментарий :" Вместо плавающих вычислений - целочисленные"
как это сделать допустим период равен 50 мкс , что бы найти частоту надо 1/50 = 0.02 и если использовать
целочисленные то калькуляция не происходит.

Так же нет регулировки и вывода процентов заполнения, в мой версии программы верхняя строка отображает частоту
нижняя проценты заполнения.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение WiseOwl (WiseOwl) » 17 янв 2020, 12:33

milcin68 писал(а):1. У вас там вставки на "С" я не знаю этот язык.
2. допустим период равен 50 мкс , что бы найти частоту надо 1/50 = 0.02 и если использовать целочисленные то калькуляция не происходит.
3. Так же нет регулировки и вывода процентов заполнения, в мой версии программы верхняя строка отображает частоту
нижняя проценты заполнения.

1. Без стремления... такую задачу через такой вывод в порты по другому не решить. Можешь вернуть свое и сравнить...
2. Смотреть картинку.... видна калькуляция, про имитацию таких задач в ФК нужно забыть...
4 раза.jpg

3. Читать мой пост выше, цитирую - "Для примера изменил пересчет микросекунд в частоту и вывод частоты на ЖКИ." Все остальное нужно сделать самому по аналогии....
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: WiseOwl
Имя: WiseOwl
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение milcin68 (Александр) » 17 янв 2020, 17:32

Спасибо, за участие потихоньку разберусь.
Я его юзаю всего то 4 - 5 день это мои первые шаги в написании.
Немного изучал ассемблер , но там то же встрял с математикой.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение milcin68 (Александр) » 17 янв 2020, 23:47

Вот так я пытался сделать изначально.
Этот этот вариант я не выкладывал, в нем не было вывода на дисплей.
GENA 2.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение milcin68 (Александр) » 18 янв 2020, 18:52

немного скорректировал показания на выходе, но меня весь этот результат не устраивает
полезно для опыта, но в корень все буду переделывать интересует что то типа этого
https://aliexpress.ru/item/32835541668. ... 66a18b6f-1

GENA 2,1.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Вывод на дисплей сожрал весь ресурс МК

Сообщение milcin68 (Александр) » 18 янв 2020, 19:19

у них этот генератор построен на другом контроллере , для людей давно занимающиеся программированием думаю это не составит труда
https://whycan.cn/t_1275.html
https://github.com/OpenNuvoton/N76E003-BSP
это так для информации.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Flowcode PIC

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей