в виде кода хотелось бы увидеть.Engineer_Keen писал(а):побайтно естественно (младший идет первым)...
AVR studio в вопросах и ответах
- Реклама
Ну е-мое...
Используя вышенаписанное:
Используя вышенаписанное:
Код: Выделить всё
LDI R18,0
LDI R20,0
RCALL EE_READ
MOV ZL,R17
LDI R18,1
LDI R20,0
RCALL EE_READ
MOV ZH,R17 ;в ZH:ZL - будет 16-битная константа из адреса 00:01
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
На самом деле, алгоритм должен быть несколько более сложный. EEPROM очень коварная штука, и поскольку туда пишутся данные побайтно существует вероятность потерять значение при записи слова. Представьте себе такую неприятность как отключение питания контроллера ровно в момент или после записи первого байта из слова.
Записывать надо слово в 4 байта(дублировать записанное), а при чтении сравнивать равны ли слова если не равны значит произошел сбой записи и надо что-то делать. Как правило добавляют еще и признак завершения записи, чтобы знать где именно произошел сбой. А там где необходима более менее частая запись и вовсе надо применять алгоритмы уменьшения износа ячеек.
Записывать надо слово в 4 байта(дублировать записанное), а при чтении сравнивать равны ли слова если не равны значит произошел сбой записи и надо что-то делать. Как правило добавляют еще и признак завершения записи, чтобы знать где именно произошел сбой. А там где необходима более менее частая запись и вовсе надо применять алгоритмы уменьшения износа ячеек.
следуя вашему подходу при записи 4-байтного числа следует писать 8-байтное... и так далее. и вообще, лучше ставить 3 контроллера и мажоритировать их выходные сигналы...Alexeyslav писал(а):Представьте себе такую неприятность как отключение питания контроллера ровно в момент или после записи первого байта из слова.
Записывать надо слово в 4 байта(дублировать записанное), а при чтении сравнивать равны ли слова если не равны значит произошел сбой записи и надо что-то делать.
не доходите до маразма
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Ни кто не сталкивался на 7 студии автокомплит пропал и все кроме операторов черного цвета, даже main, думал файл какой похерился, переустановил-бестолку...
код теперь выглядит так:

код теперь выглядит так:
Спойлер


Последний раз редактировалось Mishany Чт июн 02, 2016 07:58:31, всего редактировалось 1 раз.
- Реклама
Код: Выделить всё
EE_WRITE: LDI YH,High(ROM)
LDI YL,Low(ROM)
ADD YL,R18
ADC YH,R20
WAIT_W: SBIC EECR,EEWE
RJMP WAIT_W
OUT EEARH,YH
OUT EEARL,YL
OUT EEDR,R17
SBI EECR,EEMWE
SBI EECR,EEWEнадо так .............. В R18 храним индекс ячейки
Код: Выделить всё
EE_WRITE:
LDI R20,0
LDI YH,High(ROM)
LDI YL,Low(ROM)
ADD YL,R18
ADC YH,R20
WAIT_W: SBIC EECR,EEWE
RJMP WAIT_W
OUT EEARH,YH
OUT EEARL,YL
OUT EEDR,R17
SBI EECR,EEMWE
SBI EECR,EEWEПравильнее было бы вообще вычисление базового адреса и смещения вынести за пределы функций записи-чтения (например в макрос), а в них оставить только копирование Y-регистра в регистры EEADR, так функции будут более универсальные, просто я написал по образу и подобию ваших функций работы с RAM.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
http://easyelectronics.ru/avr-uchebnyj- ... mbler.htmlСЦБист писал(а):как это в авр реализовано ?
Станислав
А я нашел в чем косяк был, был отключен Visual Assist, который входит в Visual Studio(который я удалил не задолго до обнаружения пропажи
).
- Сообщения: 75
- Зарегистрирован: Пн янв 10, 2011 00:12:19
Здравствуйте где можно узнать какая AVR studio работает с Windows 10?
У меня стоял Windows 7 и studio 4.13 все работало O.K
Случайно обновил и настали вилы.
У меня стоял Windows 7 и studio 4.13 все работало O.K
Случайно обновил и настали вилы.
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
седьмая версия точно поддерживается на вин10
ей конечно надо сильно больше памяти чем четвертой
ей конечно надо сильно больше памяти чем четвертой
- Сообщения: 218
- Зарегистрирован: Ср дек 02, 2015 15:06:01
всем привет
вопрос - кто может написать такое на с++ и на атмегу 8
http://www.rlocman.ru/shem/schematics.html?di=52291
интересует замер а/ч
вопрос - кто может написать такое на с++ и на атмегу 8
http://www.rlocman.ru/shem/schematics.html?di=52291
интересует замер а/ч
- Вложения
-
- Foto1.jpg
- (20.04 КБ) 295 скачиваний
Я могу.
Docendo discimus
- Сообщения: 75
- Зарегистрирован: Пн янв 10, 2011 00:12:19
А как в макросе можно создать номер регистра, например хочу так:
.macro LDIW
ldi R@0,@1
ldi R@+1,@2
.endmacro
но на вторую строчку ругается
.macro LDIW
ldi R@0,@1
ldi R@+1,@2
.endmacro
но на вторую строчку ругается
А у вас наверное, параметр вообще без номера получился.
Может так R@0+1 ?
Может так R@0+1 ?
Станислав
И так не работает. Компилятор воспринимает R с цифрами как единое целое - строку, а не R с числом, потому вычислений не производит.
наверно надо использовать Concatenation (##), но ума не приложу как...
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
Поиграйтесь с настройками совместимостиarm-17 писал(а):А может есть способ



