Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.03.2005, 22:27
|
|
Прохожий
Регистрация: 21.12.2004
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
PIC16F84A за гранью понимания!!!!!
Есть некий девайс на оном ПИКе, которому требуется записать в память данных два значения.Естественно запись оформлена в виде двух прцедур которые вызываются по очереди.Так вот в ПИКе прописывается одна ячейка процедура которой была вызвана первой, вторая ячейка не пишется хоть тресни.В MPLAB все прописывается как надо. Может какие мысли будут по этому поводу или кто-то сталкивался чем-то подобным поделитесь.Заранее благодарен.
|
|
|
|
09.03.2005, 03:01
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: PIC16F84A за гранью понимания!!!!!
Сообщение от Jerry86
|
Есть некий девайс на оном ПИКе, которому требуется записать в память данных два значения.Естественно запись оформлена в виде двух прцедур которые вызываются по очереди.Так вот в ПИКе прописывается одна ячейка процедура которой была вызвана первой, вторая ячейка не пишется хоть тресни.В MPLAB все прописывается как надо. Может какие мысли будут по этому поводу или кто-то сталкивался чем-то подобным поделитесь.Заранее благодарен.
|
Как я понимаю, речь идет о записи в EEPROM? И супервизора питания нету? Попробуйте либо его поствить, либо по окончанию записи - в регистр адреса записать, ну например 0... А значния расположить в других адресах.
|
|
|
|
09.03.2005, 20:58
|
|
Временная регистрация
Регистрация: 26.12.2003
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
|
|
|
|
13.03.2005, 01:03
|
|
Гость
|
Конечно информации мало, но очень похоже на отсутствие таймаута после записи - моделирование такие вещи не учитывает, а ошибка произойдет сразу после записи первого значения...
|
|
|
|
17.03.2005, 20:18
|
|
Прохожий
Регистрация: 17.03.2005
Сообщений: 5
Сказал спасибо: 86
Сказали Спасибо 1 раз в 1 сообщении
|
Уж очень и очень похоже на ИМЕННО ОТСУТСТВИЕ таймаута. Попробуй писАть второе значение после получения прерывания о записи первого. Наступал когда-то на эти грабли...
|
|
|
|
18.03.2005, 06:02
|
|
Гость
|
KRUTOI MP PIC BCE OPERACII DELAET ODNOVREMENO ???
PO IDEE ZAPISI DOLJNA SOOTVETSTBOBAT 1 PEREMENAIA ???
|
|
|
|
18.03.2005, 10:31
|
|
Прохожий
Регистрация: 17.03.2005
Сообщений: 5
Сказал спасибо: 86
Сказали Спасибо 1 раз в 1 сообщении
|
Записи м соответствует одна переменная (если я правильно понял написанное). Но запись не происходит за время одного цикла, там стоИт, грубо говоря, такая же ЕЕПРОМина как и 24С... только со своим генератором. То есть по факту окончания цикла записи ОДНОГО БАЙТА генерируется прерывание, которое НУЖНО обрабатывать в 99% случаев, особенно, когда пишется больше чем одно значение. Не ленитесь, если не обрабатываете прерывание, хотя бы проверяйте наличие флага прерывания.
|
|
|
|
18.03.2005, 16:39
|
|
Прописка
Регистрация: 21.01.2005
Сообщений: 194
Сказал спасибо: 9
Сказали Спасибо 30 раз(а) в 18 сообщении(ях)
|
VSE PRAVILNO
|
|
|
|
22.03.2005, 20:33
|
|
Прохожий
Регистрация: 15.09.2004
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Ну, думаю прерывание на такой пустяк разрешать было бы роскошью (с одним-то вектором!), а почитать спецификацию на максимальное время записи не помешало бы. Если не критичны остальные операции, то можно в подпрограмме записи вначале опрашивать бит окончания предыдущей записи, далее сама процедура записи, ну и для надежности верификация...Я в свое время делал так:
;*************************************
WR_EE
;запись в память
;вход: W = адрес, по которому требуется запись
; RG1 = данные для записи
;выход:
BANKSEL PIR2 ;
BCF PIR2,EEIF ;сброс флага окончания записи
BANKSEL EEADR ;
MOVWF EEADR ; установка адреса
BANKSEL RG1 ;
MOVF RG1,W ;
BANKSEL EEADR ;
MOVWF EEDATA ; установка данных
WR_EE_ERR
BANKSEL EECON1 ;
BCF EECON1,EEPGD ;
BCF EECON1,WRERR ;
BSF EECON1,WREN ;
BCF INTCON,GIE ; запрет прерываний
BCF INTCON,GIE ; запрет прерываний
MOVLW 055H ;;необходимая последовательность
MOVWF EECON2 ;;для записи
MOVLW 0AAH ;;
MOVWF EECON2 ;;
BSF EECON1,WR ;;
BSF INTCON,GIE ;
BCF EECON1,WREN ;
NO_WR_EE
BANKSEL PIR2 ;
PAGESEL NO_WR_EE
BTFSS PIR2,EEIF ; проверка окончания записи
GOTO NO_WR_EE ;
BCF PIR2,EEIF ;
BANKSEL PORTA ;
RETURN
;**********************************
|
|
|
|
23.03.2005, 09:42
|
|
Прохожий
Регистрация: 17.03.2005
Сообщений: 5
Сказал спасибо: 86
Сказали Спасибо 1 раз в 1 сообщении
|
Совершенно согласен (только это под более навороченый PIC из серии более восьмикилобайтного F874), но принцип один - дал команду на запись - подождал - проверил флаг окончания записи.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
PIC16F84A и MT-16S2D
|
Runtime_error |
Микроконтроллеры, АЦП, память и т.д |
2 |
09.05.2007 19:18 |
PIC16F84A документацыя
|
макс |
Микроконтроллеры, АЦП, память и т.д |
3 |
11.12.2005 14:03 |
PIC16F84A
|
макс |
Микроконтроллеры, АЦП, память и т.д |
1 |
11.12.2005 00:01 |
PIC16F84A???
|
RETAS |
Микроконтроллеры, АЦП, память и т.д |
7 |
04.03.2005 05:20 |
pic16f84a
|
khorght |
Микроконтроллеры, АЦП, память и т.д |
1 |
09.09.2004 20:37 |
Часовой пояс GMT +4, время: 19:47.
|
|