Отговори на тема  [ 38 мнения ]  Отиди на страница 1, 2, 3  Следваща
Запис в EEPROM Data на PIC16F84A 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Запис в EEPROM Data на PIC16F84A
Здравейте,
Използвам PIC16F84A и MPLAB. Искам да запиша в пет адреса (от 0х00 до 0х04) на EEPROM Data memory. Използвам процедурата, дадена от разработчиците, но ми записва само на първия адрес (0х00). Давам Ви пример за запис на три клетки от EEPROM, както съм го направил:
Код:
; Запис на регистър 0x28 в клетка 0x00 от EEPROM.
Label       BCF     INTCON    , GIE  ; Глобална забрана за прекъсване.
            MOVLW   0x00             ; Номер на клетка от EEPROM,
            MOVWF   EEADR            ; в която ще се записва.
            MOVF    0x28      , W    ; Копиране на съдържанието на регистър 0x28
            MOVWF   EEDATA           ; в регистър EEDATA.
            BSF     STATUS    , RP0  ; Преход в 1-ва банка.
            BSF     EECON1    , 02   ; Разрешаване на запис.
            MOVLW   0x55             ; Задължителни.
            MOVWF   EECON2           ; Задължителни.
            MOVLW   0xAA             ; Задължителни.
            MOVWF   EECON2           ; Задължителни.
            BSF     EECON1    , 01   ; Задължителни.
            BCF     EECON1    , 04   ; Нулиране флагът за прекъсване за завършване на записа в EEPROM.
            BCF     STATUS    , RP0  ; Преход в 0-ва банка.
; Запис на регистър 0x29 в клетка 0x01 от EEPROM.
            BCF     INTCON    , GIE  ; Глобална забрана за прекъсване.
            MOVLW   0x01             ; Номер на клетка от EEPROM,
            MOVWF   EEADR            ; в която ще се записва.
            MOVF    0x29      , W    ; Копиране на съдържанието на регистър 0x29
            MOVWF   EEDATA           ; в регистър EEDATA.
            BSF     STATUS    , RP0  ; Преход в 1-ва банка.
            BSF     EECON1    , 02   ; Разрешаване на запис.
            MOVLW   0x55             ; Задължителни.
            MOVWF   EECON2           ; Задължителни.
            MOVLW   0xAA             ; Задължителни.
            MOVWF   EECON2           ; Задължителни.
            BSF     EECON1    , 01   ; Задължителни.
            BCF     EECON1    , 04   ; Нулиране флагът за прекъсване за завършване на записа в EEPROM.
            BCF     STATUS    , RP0  ; Преход в 0-ва банка.
; Запис на регистър 0x2А в клетка 0x02 от EEPROM.
            BCF     INTCON    , GIE  ; Глобална забрана за прекъсване.
            MOVLW   0x02             ; Номер на клетка от EEPROM,
            MOVWF   EEADR            ; в която ще се записва.
            MOVF    0x2A      , W    ; Копиране на съдържанието на регистър 0x2A
            MOVWF   EEDATA           ; в регистър EEDATA.
            BSF     STATUS    , RP0  ; Преход в 1-ва банка.
            BSF     EECON1    , 02   ; Разрешаване на запис.
            MOVLW   0x55             ; Задължителни.
            MOVWF   EECON2           ; Задължителни.
            MOVLW   0xAA             ; Задължителни.
            MOVWF   EECON2           ; Задължителни.
            BSF     EECON1    , 01   ; Задължителни.
            BCF     EECON1    , 04   ; Нулиране флагът за прекъсване за завършване на записа в EEPROM.
            BCF     STATUS    , RP0  ; Преход в 0-ва банка.
            RETURN

Защо не ми записва в другите адреси? Каква грешка допускам?
Благодаря Ви предварително!


Пон Ное 21, 2016 10:28 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение Re: Запис в EEPROM Data на PIC16F84A
проверявай си флага за край на записа. проца е мн по бърз от времето за запис


Пон Ное 21, 2016 10:31 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Re: Запис в EEPROM Data на PIC16F84A
Начинаещ съм. Някакъв пример да ми дадете.
След записа на всяка клетка ли трябва да го правя? И ако има грешка, какво трябва да направя?


Пон Ное 21, 2016 10:35 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Запис в EEPROM Data на PIC16F84A
Да, след записа на всяка клетка трябва да проверяваш и да чакаш докато приключи предходния запис.


Пон Ное 21, 2016 11:45 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Re: Запис в EEPROM Data на PIC16F84A
Кое точно да проверявам, стойността на адреса в EEPROM или флага (WRERR) за грешка при запис?
Как да изчакам предходния запис? Да направя първия запис, да пусна програмата да си работи и след това да направя втория и пак програмата да работи и т.н.
Използвам ги за таймер и времената са ми от значение.


Пон Ное 21, 2016 12:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Запис в EEPROM Data на PIC16F84A
Имаш флаг за прекъсване след приключване на записа, който нулираш. И да не си сложил прекъсване, флага ти показва кога записа е приключил. Чети datasheet-а на процесора - там си пише всичко.


Пон Ное 21, 2016 12:10 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Re: Запис в EEPROM Data на PIC16F84A
Не бях се досетил за флаг EEIF. Трябва да го проверя и тогава да предприема следващия запис. Ще го пробвам.
Благодаря Ви!


Пон Ное 21, 2016 12:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Запис в EEPROM Data на PIC16F84A
pldimitroff написа:
Не бях се досетил за флаг EEIF.


Няма нужда да се сещаш. Чети чаршафите на чипа внимателно. Там си пише всичко, а документацията на Микрочип е една от най-достъпните и лесни за четене.


Пон Ное 21, 2016 12:25 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Re: Запис в EEPROM Data на PIC16F84A
Това е първия микрконтролер, с който се занимавам. Нямам никакъв опит и затова ми е трудно.
Реших да включа и EEPROM-а, при спиране на захранването и повторното му появяване, да продължи таймера да работи, от където е стигнал, но се появи горния проблем, а в симулатора на MPLAB си работи без проблем.
Пак Ви благодаря!


Пон Ное 21, 2016 12:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12765
Местоположение: София
Мнение Re: Запис в EEPROM Data на PIC16F84A
Нали не правиш запис в еепрома на всеки такт на таймера?
Тия памети имат някакъв брой гарантирани цикли за запис, и след това могат да се приемат за загинали...


Пон Ное 21, 2016 1:12 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Re: Запис в EEPROM Data на PIC16F84A
Мислех на половин секунда да правя записи, но мога и на минута да го направя. Какво ще ми препоръчате?
Ако в различни адреси записвам, ще се увеличи ли броя на записи без да загинат?
И на Вас благодаря за информацията!


Пон Ное 21, 2016 2:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Запис в EEPROM Data на PIC16F84A
По-добре е с този флаг да проверяваш края на записа. Друг вариант е да се изчаква известно време след всеки запис. Този вариант не го препоръчвам. Става само за проби.
Аз бих направил системата като сложа голям кондензатор на захранването само на контролера, но през някакъв диод за да не се разрежда от останалата част на схемата. Един от пиновете ще назнача за следене на захранването и така когато то отпадне, процесора да направи запис.

_________________
https://github.com/slav4ocom/


Пон Ное 21, 2016 3:15 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Re: Запис в EEPROM Data на PIC16F84A
Това е много хубава идея да се следи захранването и след отпадането му, контролера да работи още малко време. Лошото е, когато контролера захранва, например дисплей, и консумацията на схемата основно да е от контролера. Може да се помисли контролера да има малка консумация, да не захранва директно консуматори.


Пон Ное 21, 2016 3:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение Re: Запис в EEPROM Data на PIC16F84A
Или просто изчакай Комет да заредят от тези и ще си решиш проблема.


Пон Ное 21, 2016 4:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Запис в EEPROM Data на PIC16F84A
Това е същото но го прави самата схема. А контролера ако захранва дисплея, може при хващане на отпадането на захранването да се изкючи веднага.

_________________
https://github.com/slav4ocom/


Пон Ное 21, 2016 4:23 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 38 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни