Делаю формирователь сигнала точного времени (00 минут 00 секунд) по сигналам от GPS.
Программка для PIC12F1822 написана на АСМе в MPLABX. Для симуляции сделал проект в Proteus 8.11 в связке с программкой Docklight. В итоге пока еще "сырая" программка отрабатывает в симуляторе нормально, на выходе два сигнала, каждую секунду сигнал GPS и сигнал точного времени.
В реале же не все так радужно, как в Протеусе. Если секундный импульс есть, то на выходе сигнала точного времени постоянно торчит единичка. И даже когда настраиваю линию порта на выход только при совпадении с нулевыми значениями, на выходе светодиод включен постоянно.
С этими камешками (12F1xxx) работаю впервые, может чего напутал при инициализации МК?
Буду признателен толковому совету.
непонятная ошибка PIC12F1822
- wws63
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Вс май 21, 2006 16:07:59
- Откуда: Алтай
непонятная ошибка PIC12F1822
- Вложения
-
- gps_p1822_00.asm
- (8.83 КБ) 116 скачиваний
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: непонятная ошибка PIC12F1822
[uquote="wws63",url="/forum/viewtopic.php?p=4238769#p4238769"]Буду признателен толковому совету.[/uquote]
Должен вас огорчить, но код очень плохо читается.
Единственный совет - включить дебаг и посмотреть на железе в MPLABX.
Но для этого нужно использовать штатный метод резервирования оперативной памяти вместо древнего определения переменных как констант имен.
Сиречь, вместо:
нужно написать:
После чего использовать переменную FLAG как 16-битную с младшим байтом FLAG и старшим байтом FLAG+1. А в окне Watches установить размер этой переменной - 2 байта.
Если этого не сделать, то переменные наблюдать в окне Watches будет невозможно, а в окне File Registers крайне неудобно из-за отсутствия имен.
Должен вас огорчить, но код очень плохо читается.
Единственный совет - включить дебаг и посмотреть на железе в MPLABX.
Но для этого нужно использовать штатный метод резервирования оперативной памяти вместо древнего определения переменных как констант имен.
Сиречь, вместо:
Код: Выделить всё
cblock 0x20
uart_byte
FLAG
FLAG1
time_null
endc
Код: Выделить всё
udata 0x20
uart_byte: res 1
FLAG: res 2
time_null: res 1
Если этого не сделать, то переменные наблюдать в окне Watches будет невозможно, а в окне File Registers крайне неудобно из-за отсутствия имен.
- wws63
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Вс май 21, 2006 16:07:59
- Откуда: Алтай
Re: непонятная ошибка PIC12F1822
[uquote="КРАМ",url="/forum/viewtopic.php?p=4238856#p4238856"]Если этого не сделать, то переменные наблюдать в окне Watches будет невозможно, а в окне File Registers крайне неудобно из-за отсутствия имен.[/uquote]
Спасибо, буду пробовать.
Надеялся, что в Протеусе можно будет пошагово пройтись по программке, но классическая замена hex на исполняемый файл cof результата не дала, окно исходника пустое.
Спасибо, буду пробовать.
Надеялся, что в Протеусе можно будет пошагово пройтись по программке, но классическая замена hex на исполняемый файл cof результата не дала, окно исходника пустое.
- wws63
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Вс май 21, 2006 16:07:59
- Откуда: Алтай
Re: непонятная ошибка PIC12F1822
[uquote="НовыйДень",url="/forum/viewtopic.php?p=4238924#p4238924"]Но вот в Протеусе же можно запустить пошаговую отладку, создав проект с этим микроконтроллером и выбрав вот так:[/uquote]
Спасибо, вот про такой вариант решения задачи я не знал
Спасибо, вот про такой вариант решения задачи я не знал
- Реклама
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: непонятная ошибка PIC12F1822
НовыйДень, спасибо. Для PIC, и на C при помощи CCS попробовал, быстро, легко и точно получилось. Будем использовать
.
Виртуальный blink заморгал за нескольких секунд писания кода
.
Виртуальный blink заморгал за нескольких секунд писания кода


