|
Программирование микроконтроллеров
|
|
| flampard | Дата: Воскресенье, 14.12.2014, 12:56 | Сообщение # 31 |
Группа: Пользователи
Сообщений: 5
Статус: Offline
| У меня есть только два 629, с ними идентичный результат. Другие прошивки еще не пробовал. Может есть разница между прошивками для 629 и 675? Прошивка приемника радио датчиков для какого МК?
|
| |
| |
| Admin | Дата: Воскресенье, 14.12.2014, 13:02 | Сообщение # 32 |
 Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
| Цитата flampard (  ) Может есть разница между прошивками для 629 и 675? Нет разницы
|
| |
| |
| ketiv | Дата: Среда, 18.05.2016, 16:54 | Сообщение # 33 |
Группа: Пользователи
Сообщений: 15
Статус: Offline
| Добрый день уважаемые форумчане! помогите разобраться с pic16f876a, не получается записать в eeprom, вроде сделал все по даташиту
======================================================================================== Write BSF STATUS,RP1 BSF STATUS,RP0 ;ВЫБРАТЬ БАНК 3 BTFSC EECON1,WR ;ПРОВЕРИТЬ ЗАВЕРШЕНИЯ GOTO $-1 ;ОПЕРАЦИИ ЗАПИСИ BCF STATUS,RP0 ;ВЫБРАТЬ БАНК 2 CLRW ;УКАЗАТЬ АДРЕС ЯЧЕЙКИ ; MOVF Reg_3,W MOVWF EEADR MOVF Reg_4,W ;УКАЗАТЬ ДАНЫЕ ДЛЯ ЗАПИСИ MOVWF EEDATA BSF STATUS,RP0 ;ВЫБРАТЬ БАНК 3 BCF EECON1,EEPGD ;ВЫБРАТЬ EEPROM ПАМЯТЬ BSF EECON1,WREN ;РАЗРЕШИТЬ ЗАПИСЬ В EEPROM BCF INTCON,GIE ;ЗАПРЕТИТЬ ПРЕРЫВАНИЯ MOVLW 0x55 MOVWF EECON2 MOVLW 0xAA MOVWF EECON2 BSF EECON1,WR ;ИНИЦИАЛИЗИРОВАТЬ ЗАПИСЬ ; BSF INTCON,GIE ;РАЗРЕШИТЬ ПРЕРЫВАНИЯ BCF EECON1,WREN ;ЗАПРЕТИЬ ЗАПИСЬ В EEPROM BCF STATUS,RP1 ;Выбор банка 0 BCF STATUS,RP0 return ============================================================================================
TAXO1 MOVLW .100 MOVWF Reg_4 CALL Write =============================================================================================
|
| |
| |
| Admin | Дата: Среда, 18.05.2016, 17:56 | Сообщение # 34 |
 Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
| А по какому адресу Вы пытаетесь писать данные, если регистр Reg_3 закомментирован в приведённом коде?
|
| |
| |
| ketiv | Дата: Среда, 18.05.2016, 18:16 | Сообщение # 35 |
Группа: Пользователи
Сообщений: 15
Статус: Offline
| я пробовал записывать в регистр Reg_3 разные адреса, но все ровно не записывает в eeprom, команда clrw вроде как должна очистить аккумулятор, то есть записать в W нули, с чтением проблем нет,
|
| |
| |
| Admin | Дата: Среда, 18.05.2016, 20:45 | Сообщение # 36 |
 Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
| Цитата ketiv (  ) команда clrw вроде как должна очистить аккумулятор, то есть записать в W нули, Все правильно и данные должны были записаться в нулевую ячейку (0х00) А конфигурационный бит защиты записи в EEPROM случайно не установлен? Какое значение конфигурационного слова?
|
| |
| |
| ketiv | Дата: Пятница, 20.05.2016, 20:52 | Сообщение # 37 |
Группа: Пользователи
Сообщений: 15
Статус: Offline
| Значение конфигурационного слова __config 3D39h. С записью наполовину я уже разобрался, только вот записывает не то, что надо. Например надо записать ( .400 ), а записывает (.144) или надо (.300) записывает (.44), может выложить исходник? посмотрите когда будет время, это ваш проект бортовой компьютер, просто я решил не много переделать под свои хотелки
Сообщение отредактировал ketiv - Пятница, 20.05.2016, 20:58 |
| |
| |
| Admin | Дата: Пятница, 20.05.2016, 21:03 | Сообщение # 38 |
 Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
| Цитата ketiv (  ) Например надо записать ( .400 ), а записывает (.144) или надо (.300) записывает (.44) Так все правильно, Вы пытаетесь записать в 1 байт (т.е в одну ячеку памяти) значение больше .255. Смотрите, ведь для записи значения .400 требуется два байта:
.400 = b'00000001 10010000' "Обрезаем" старший байт:
b'10010000' = .144
Т.е., если нужно записать значение больше .255, необходимо использовать два байта, больше .65535 - три байта и т.д
|
| |
| |
| ketiv | Дата: Воскресенье, 22.05.2016, 18:41 | Сообщение # 39 |
Группа: Пользователи
Сообщений: 15
Статус: Offline
| Спасибо. Вот это я тупанул Добавлено (22.05.2016, 18:41) --------------------------------------------- Замучила меня эта EEPROM, в протеусе работает без проблем а в железе нет, например подаю питания на бортавик перехожу на тахометр должно записать .5 а записывает через раз, когда не записывает всегда FF вот кусок кода добавил даже проверку
TAXO1 BSF STATUS,RP1 BCF STATUS,RP0 ;ВЫБРАТЬ БАНК 2 MOVLW .0 MOVWF Reg_3 MOVLW .5 MOVWF Reg_4 CALL Write ; ЗАПИСАТЬ TAXO CALL Read ; ПРОЧИТАТЬ SUBLW .5 BTFSS STATUS,Z GOTO TAXO1 BCF STATUS,RP1 ;Выбор банка 0 BCF STATUS,RP0
|
| |
| |
| Admin | Дата: Воскресенье, 22.05.2016, 18:47 | Сообщение # 40 |
 Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
| А регистры Reg_3 и Reg_4 у Вас находятся во втором банке? Если нет, то для чего Вы тут выбираете второй банк???
BSF STATUS,RP1 BCF STATUS,RP0 ;ВЫБРАТЬ БАНК 2
|
| |
| |