Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Фокусы с Pic18F8722
Фокусы с Pic18F8722
xvovanx Дата: Ср, 18.03.2015, 22:52  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 294
Репутация: 13   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Добрый вечер, форумчане. 18 серия меня не перестает удивлять и опять у меня стоп-кран. Нужна помощь по программе. Суть в том, что при командах записи/чтения в Eeprom программа в симуляторе и в железе наглухо зависает-зацикливается в обработчике прерываний. Если прерывания убрать, то программа идет, но при выводе на экран вылезают еще каких-то три знака 000. Все очень сумбурно и непонятно наверно описал. Возможно понятней будет с конца - в цикле печатаем значения - всё ОК. В цикл добавляем запись/чтение - при печати вылазит три "левых" знака. Добавляем прерывания (даже пустые) - зависон. Вот это и шляпа, с 16 серией таких фокусов не встречал. Ума не приложу, не курю, но даташит пришлось скурить, жонглирование регистрами по памяти Еепром - не помогло cool . Выручайте, в трех соснах заплутал. Без команд записи/чтения вся огромная прога в 64кВ отлично работает, решил добавить запись в память на случай пропажи электро - и все встало. В приложении кусок кода для демонстрации.
Прикрепления: TTTEST.zip(93Kb)

Сообщение отредактировал xvovanx - Чт, 19.03.2015, 10:11
ЯНДЕКС Дата: 18.03.2015
dimvad Дата: Чт, 19.03.2015, 01:53  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 69
Репутация: 10   ±
Замечания:   ±
На сайте с 20.07.2012

Статус: Offline

Ну, вообще-то, мне кажется, надо запретить прерывание по окончании записи в ЕЕПРОМ , а оно у Вас разрешено, либо в обработчике прерываний, уж если Вы его разрешили,  сбрасывать соответствующий флаг (PIR2.4)
xvovanx Дата: Чт, 19.03.2015, 10:05  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 294
Репутация: 13   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата dimvad ()
мне кажется, надо запретить прерывание по окончании записи в ЕЕПРОМ , а оно у Вас разрешено

Если чесно, то первый раз о таком слышу, что для записи в память надо отключать прерывания (16 серия работает без таких манипуляций). А как быть, если сигнал от внешнего устройства прерывания прийдет именно в тот момент, когда у нас отключен контроль прерываний и идет запись? Пропускаем важную посылку извне. Нет, тут явно что-то другое
dimvad Дата: Чт, 19.03.2015, 11:40  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 69
Репутация: 10   ±
Замечания:   ±
На сайте с 20.07.2012

Статус: Offline

Вы сами разрешили прерывание (PIE2.4 = 1) по окончании записи в ЕЕПРОМ зачем- то, а в обработчике прерываний флаг не сбрасываете, вот программа и зависает.  Если Вы его запретите, то все заработает.
Прикрепления: 6589605.zip(97Kb)
ivan_fd Дата: Чт, 19.03.2015, 12:10  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Специалист
Сообщений: 915
Репутация: 54   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата xvovanx ()
Если чесно, то первый раз о таком слышу, что для записи в память надо отключать прерывания

Вы наверно не внимательно читали даташит.


Меня все время преследуют умные мысли...но я быстрее!!!
xvovanx Дата: Чт, 19.03.2015, 13:01  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 294
Репутация: 13   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

ivan_fddimvad,  Спасибо надоумили! Не учел, что бит регистра PIE2.4 (EEIE) - прерывание по записи в память, оказывается что и такие прерывания бывают (не знал).
Вам с меня как и полагается формулка smile

формула = (8//3)/2
репутация = репутация + формула

P.S. ivan_fd, ссылочкой на отечественные сигары (даташит) не поделитесь, а то от английских сильно першит в горле happy . А в тех даташитах, что у меня есть на русском (16 семейство), половина хитрых регистров отсутствует.

Сообщение отредактировал xvovanx - Чт, 19.03.2015, 14:11
ivan_fd Дата: Чт, 19.03.2015, 14:03  |                                                                                                                Сообщение # 7
Группа: Модераторы
Ранг:  Специалист
Сообщений: 915
Репутация: 54   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Насколько я знаю, есть только эти  переводы на русский.
PIC12C5XX
PIC16F62X
PIC16F87X
Справочник по всем микроконтроллерам PIC16
PIC12F6XX
PIC18Fxx2

Находятся здесь.


Меня все время преследуют умные мысли...но я быстрее!!!
xvovanx Дата: Чт, 19.03.2015, 14:20  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 294
Репутация: 13   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата ivan_fd ()
...есть только эти  переводы на русский. ...PIC18Fxx2 Находятся здесь.


То, что нужно! А то от английских сигар "взатяг" голова уже кружится wacko , чуть слово не так перевел - и на те - двойка surprised

Сообщение отредактировал xvovanx - Чт, 19.03.2015, 14:24
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Фокусы с Pic18F8722
Страница 1 из 11
Поиск: