Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 12.04.2016, 00:05   #1
kaligraf
Member
 
Регистрация: 22.10.2010
Возраст: 49
Сообщений: 36
Вес репутации: 100/35
kaligraf will become famous soon enoughkaligraf will become famous soon enough
По умолчанию Время записи в EEPROM PIC12F683

Здравствуйте,

Из спортивного интереса решил проверить время записи одного байта в EEPROM. При помощи TMR1 измерил, получилось около 26 миллисекунд один байт записывается в EEPROM.

Коды такие:
Код:
             banksel       EEADR
             movlw         0x10
             movwf         EEADR
             movlw         .100
             movwf         EEDATA
             call          ee_wr_p

             banksel       EEADR
             movlw         0x00
             movwf         EEADR
             movf          TMR1L,W
             call          ee_wr

             banksel       EEADR
             movlw         0x01
             movwf         EEADR
             movf          TMR1H,W
             call          ee_wr

И подпрограммы:

; подпрограмма записи в EEPROM
; ВХОД:
; в EEDATA загружен записываемый байт
; в EEADR загружен адрес регистра EEPROM
; - ee_wr_p
;=========================================
ee_wr_p:
;-----------------------------------------------------------------------
; Проверка времени записи в EEPROM с помощью TMR1  ШАГ 1
             banksel       TMR1L           ; 
             clrf          TMR1L           ; 
             clrf          TMR1H           ; 
             bcf           T1CON,TMR1ON    ; обнулили и остановили TMR1
;------------------------------------------------------------------------

             banksel       EECON1

             bsf           EECON1,WREN     ; разрешение записи
             
             bcf           INTCON,GIE      ; запрет всех прерываний
             btfsc         INTCON,GIE
             goto          $-2

;-----------------------------------------------------------------------
; Проверка времени записи в EEPROM с помощью TMR1  ШАГ 2
             banksel       TMR1L           ; 
             bsf           T1CON,TMR1ON    ; Запустили TMR1
             banksel       EECON1
;-----------------------------------------------------------------------

             movlw         0x55            ;
             movwf         EECON2          ;
             movlw         0AAh            ;
             movwf         EECON2          ; контрольная последовательность
             bsf           EECON1,WR       ; старт записи данных

ee_wr_p00    btfsc         EECON1,WR       ; проверяем закончена ли запись
; WR=1 запись не закончена
             goto          ee_wr_p00       ; повтор проверки

;-----------------------------------------------------------------------
; Проверка времени записи в EEPROM с помощью TMR1  ШАГ 3
             banksel       TMR1L           ;
             bcf           T1CON,TMR1ON    ; остановили TMR1
             banksel       EECON1
;------------------------------------------------------------------------

; WR=0 запись завершена
             bcf           EECON1,WREN     ; запрет записи

             banksel       PIR1            ; банк 0

             bcf           PIR1,EEIF       ; сброс флага прерывания по окончанию записи

             bsf           INTCON,GIE      ; разрешение прерываний
             return
;-------------------------------

; подпрограмма записи в EEPROM
; ВХОД:
; в аккумуляторе записываемый байт
; в EEADR уже загружен адрес регистра EEPROM
; - ee_wr
;=========================================
ee_wr:

             banksel       EECON1
             movwf         EEDATA          ; загрузили записываемое значение из аккомулятора в EEDATA
             bsf           EECON1,WREN     ; разрешение записи
             
             bcf           INTCON,GIE      ; запрет всех прерываний
             btfsc         INTCON,GIE
             goto          $-2

             movlw         0x55            ;
             movwf         EECON2          ;
             movlw         0AAh            ;
             movwf         EECON2          ; контрольная последовательность
             bsf           EECON1,WR       ; старт записи данных

ee_wr00      btfsc         EECON1,WR       ; проверяем закончена ли запись
; WR=1 запись не закончена
             goto          ee_wr00         ; повтор проверки
; WR=0 запись завершена
             bcf           EECON1,WREN     ; запрет записи

             banksel       PIR1            ; банк 0

             bcf           PIR1,EEIF       ; сброс флага прерывания по окончанию записи

             bsf           INTCON,GIE      ; разрешение прерываний
             return
;-------------------------------
В итоге считываю программатором из 0-й и 1-й ячеек значения 0x10 и 0x65. Соответственно результат в HEX 0x6510, или в десятичной 25872 микросекунд. Слишком долго по моему получается. Порыл даташиты, но времени записи в EEPROM что- то не нашёл(может искал плохо конечно).

Кто что подскажет - это вообще нормальное время записи, или я что-то не так сделал?
kaligraf вне форума   Ответить с цитированием
Старый 12.04.2016, 00:16   #2
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 835
Вес репутации: 1630/60
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Re: Время записи в EEPROM PIC12F683

нормальное 5-6мс
параметр D122 раздел электрические спецификации....

Последний раз редактировалось DmitrijVDN; 12.04.2016 в 00:25.
DmitrijVDN вне форума   Ответить с цитированием
Старый 12.04.2016, 02:00   #3
kaligraf
Member
 
Регистрация: 22.10.2010
Возраст: 49
Сообщений: 36
Вес репутации: 100/35
kaligraf will become famous soon enoughkaligraf will become famous soon enough
По умолчанию Re: Время записи в EEPROM PIC12F683

Спасибо, параметр нашёл в даташите. Грабли тоже обнаружились. Надо было banksel добавить перед считыванием ячеек таймера.
Код:
             banksel       EEADR
             movlw         0x10
             movwf         EEADR
             movlw         .100
             movwf         EEDATA
             call          ee_wr_p

             banksel       EEADR
             movlw         0x00
             movwf         EEADR
             banksel       TMR1L
             movf          TMR1L,W
             call          ee_wr

             banksel       EEADR
             movlw         0x01
             movwf         EEADR
             banksel       TMR1H
             movf          TMR1H,W
             call          ee_wr
Время измерилось, получилось 0x0F36 или 3894 микросекунды, меньше 4 миллисекунд.
kaligraf вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
EEPROM 93LC46 nayabuka Продукция MICROCHIP 16 20.07.2009 08:29
EEPROM PIC18F1320 - нет записи Aleksander Продукция MICROCHIP 15 08.06.2009 14:33
16F84 - зависание программы после записи в EEPROM... Rabber Продукция MICROCHIP 18 07.05.2009 13:58
Вопрос по записи в EEPROM Koren Продукция MICROCHIP 7 19.02.2008 22:10
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 00:54.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot