Люди, подскажите пожалста. Программку пишу и захотел сделать сохранение данные в ЕЕПРОМ. Программа данные туда успешно записывает, но вот считывает почему-то все нули. Уже пробую просто вывести в порт, на котором весят светодиоды то что прочтено из ЕЕПРОМ. Результат аналогичен Подскажите в каком месте криво сделано
А вы уверены что у вас что-то записывает? Что за биты EEPE и ЕЕMPE? что за контроллер, что за среда программирования? Вот пример записи в ЕЕПРОМ из ДШ.
Код:
EEPROM_write: ; Wait for completion of previous write sbic EECR,EEWE rjmp EEPROM_write ; Set up address (r18:r17) in address register out EEARH, r18 out EEARL, r17 ; Write data (r16) to data register out EEDR,r16 ; Write logical one to EEMWE sbi EECR,EEMWE ; Start eeprom write by setting EEWE sbi EECR,EEWE ret
Да, что записывает это 100%. Потому что при считывании памяти программатором там есть данные. Контроллер Attiny2313. Среда - AVR Studio4.16. Бит EEPE разрешает программирование ЕЕПРОМ, EEMPE разрешает работу предыдущего бита.
Цитата:
Вот пример записи в ЕЕПРОМ из ДШ.
Этот код я и использовал при написании программы. В протеусе работает замечательно, но вот в МК нивкакую Есть еще идеи?
Люди, подскажите пожалста. Программку пишу и захотел сделать сохранение данные в ЕЕПРОМ. Программа данные туда успешно записывает, но вот считывает почему-то все нули. Уже пробую просто вывести в порт, на котором весят светодиоды то что прочтено из ЕЕПРОМ. Результат аналогичен Подскажите в каком месте криво сделано
Есть еще 1 вариант, в вашем "tn2313def.inc" стоит неправильное значение RamEnd и потому программа после каждого rcall EEPROM_write начинается с 0. Попробуйте заменить RamEnd на 0хDF.
Проверьте fuse-биты, может у вас включен WD и постоянно перезагружает контроллер? Может что-то не так с reset?
Зарегистрирован: Вс мар 04, 2007 01:17:12 Сообщений: 690
Рейтинг сообщения:0
Igor писал(а):
Люди, подскажите пожалста. Программку пишу и захотел сделать сохранение данные в ЕЕПРОМ. Программа данные туда успешно записывает, но вот считывает почему-то все нули.
Попробуй адрес записи поменять, возми что нть из последних- где то читал, что начальные адреса еепром могут глючить и не писаться...
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
нужно красиво написать на асме но ника не уловлю "нить красоты". Наверно потому что 2 ночи на дворе Алгоритм такой
Код:
Если бит 0 в регистре установлен, то Если бит 1 в регистре установлен, то rjmp end иначе sbr r16, (1<<7) rjmp l2_end иначе если бит 1 в регистре установлен, то cbr r16, (1<<7) rjmp l2_end иначе rjmp end
в условиях работа с регистром r0. сам пытаюсь построить конструкцию из sbrc, sbrs но получается дофига меток.
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Попробуйте сначало на бумаге нарисовать алгоритм переходов, к сожалению без кучи меток не обойтись - это все-таки ASM.
1) со своей стороны я бы порекомендовал как-нибудь обзывать биты, очень удобно если надо к примеру поменять ногу на процике, да и наглядней чем просто цифра.
2) ИМХО не используйте R0 для хранения переменных, он используется для многих операций типа косвенного чтения, работы с EEPROM и т.п., очень легко допустить ошибку.
_________________ Чем дальше, тем больше становлюсь занудой...
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
ну по поводу битов и r0 - это я так, для примера. А по поводу бумаги - я уже её стока замарал, что коту хватит на целый год... Эх... ну раз куча меток значит куча меток
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
А кому сейчас легко Бывает на бумаге все красиво, начинаешь писать..., и приходится опять рисовать исправлять, менять BRLO на BRSH, BRPL на BRMI и т.д. и так по кругу пока не получится "красиво"
_________________ Чем дальше, тем больше становлюсь занудой...
Доброго времени суток. Недавно начал изучать асм, добрел до массивов и вот не могу понять. Загружаю адрес массива в регистровую пару Z и далее командой lpm гружу данные в регистр R0. Это касаемо пары Z. А если, например, используется пара X?
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Доброго времени суток. Недавно начал изучать асм, добрел до массивов и вот не могу понять. Загружаю адрес массива в регистровую пару Z и далее командой lpm гружу данные в регистр R0. Это касаемо пары Z. А если, например, используется пара X?
Из памяти программ можно считать данные только по указателю Z, правда есть варианты
Код:
lpm rd, Z; загрузить в rd данные по указателю Z rd - от r0 до r31 lpm rd, Z+ ;загрузить в rd данные по указателю Z с постинкрементом Z rd - от r0 до r29
Если r30 или r31 в варианте с постинкрементом использовать, то результат неопределен, ибо это и есть пара Z.
Из памяти программ можно считать данные только по указателю Z, правда есть варианты
Код:
lpm rd, Z; загрузить в rd данные по указателю Z lpm rd, Z+ ;загрузить в rd данные по указателю Z с постинкрементом Z lpm rd, -Z ;загрузить в rd данные по указателю Z с предекрементом Z
Да, спасибо. Нашел я такую информацию.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
lpm rd, Z; загрузить в rd данные по указателю Z rd - от r0 до r31 lpm rd, Z+ ;загрузить в rd данные по указателю Z с постинкрементом Z rd - от r0 до r29
А с LD разница есть?
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Вся разница в том что команды LD-ST работают с памятью данных и могут адресоваться через регистровые пары X,Y,Z
в том числе и с регистрам R0-R31 и служебными регистрами
_________________ Чем дальше, тем больше становлюсь занудой...
Я снова к вам и снова с той же темой. Не могу я разобраться с массивом, а дальше идти не хочу. Я понимаю что
Код:
ldi ZH, high (Array*2) ldi ZL, low (Array*2)
загружает в старшую и младшую часть пары соответственно старшую и младшую часть адреса.
Но как LPM загружает данные из пары Z в R0 понять не могу. Адрес-то 16-ти битный. Вероятнее всего я глупость спрашиваю, но разобраться хочу.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Что именно Вам не понятно?
Загрузка high:low характерна для старших кристалов семейства с большим объемом памяти, а для =128= и =256= серии еще один регистр нужен.
множитель (хххх*2) нужен из-за того что память программ имеет словную организацию
зы: врядли вы найдете описание того как конкретно по указателю Z данные из памяти попадают в R0. если вам так интересен механизм данного процесса ищите описание старых ЭВМ у которых ЦПУ собрано на логических элементах. (в свое время изучал СМ1480 он же PDP-11 там в мануале все процессы были расписаны по тактам )
_________________ Чем дальше, тем больше становлюсь занудой...
Что именно Вам не понятно? Загрузка high:low характерна для старших кристалов семейства с большим объемом памяти, а для =128= и =256= серии еще один регистр нужен. множитель (хххх*2) нужен из-за того что память программ имеет словную организацию
Про множитель понятно, и про загрузку в регистровую пару тоже. Адрес ПЗУ 16-ти битный, так? И все это в пару грузится нормально (два регистра). А вот как этот адрес в R0 загружается я не понимаю.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения