|
CodevisionAVR что-то с eeprom |
|
|
|
Jun 30 2011, 14:03
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Здравствуйте Уважаемые форумчане. Нужна помощь, пишу программу в CodeVisionAVR. Микроконтроллер atmega168 Задал некоторый буффер в память eeprom: Код eeprom char buffer[60]; В программе написал следующее: Код buffer[0]=0x00;buffer[1]=0x01;buffer[2]=0x02;buffer[3]=0x03;buffer[4]=0x04;buffer[5]=0x05;buffer[6]=0x06;buffer[7]=0x07;buffer[8]=0x08;buffer[9]=0x09; buffer[10]=0;buffer[11]=0;buffer[12]=0;buffer[13]=0;buffer[14]=0;buffer[15]=0;buffer[16]=0;buffer[17]=0;buffer[18]=0;buffer[19]=0; buffer[20]=0;buffer[21]=0;buffer[22]=0;buffer[23]=0;buffer[24]=0;buffer[25]=0;buffer[26]=0;buffer[27]=0;buffer[28]=0;buffer[29]=0; buffer[30]=0;buffer[31]=0;buffer[32]=0;buffer[33]=0;buffer[34]=0;buffer[35]=0;buffer[36]=0;buffer[37]=0;buffer[38]=0;buffer[39]=0; buffer[40]=0;buffer[41]=0;buffer[42]=0;buffer[43]=0;buffer[44]=0;buffer[45]=0;buffer[46]=0;buffer[47]=0;buffer[48]=0;buffer[49]=0; buffer[50]=0x50;buffer[51]=0x51;buffer[52]=0x52;buffer[53]=0x53;buffer[54]=0x54;buffer[55]=0x55;buffer[56]=0x56;buffer[57]=0x57;buffer[58]=0x58;buffer[59]=0x59;
for (;;) {Led_R ^= 1; Led_G^= 1; delay_ms(30);}
// Global enable interrupts #asm("sei") Читаю eeprom когда программа уже в бесконечном цикле и вижу, что на картинке. Вопрос - почему нет значений 0x01, 0x02, 0x03?
Сообщение отредактировал Павел_Б - Jun 30 2011, 14:05
Эскизы прикрепленных изображений
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 26)
|
Jun 30 2011, 14:40
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(goodwin @ Jun 30 2011, 18:28)  Да вроде как все на месте... Паинт рулит Я серьёзно.
Сообщение отредактировал Павел_Б - Jun 30 2011, 14:40
|
|
|
|
|
Jun 30 2011, 14:51
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(goodwin @ Jun 30 2011, 18:49)  я тоже... Дак у меня при чтении как будьто значения в первые ячейки eeprom не прописались. А у Вас отредактированная моя картинка.
|
|
|
|
|
Jun 30 2011, 16:08
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(Палыч @ Jun 30 2011, 19:51)  Как предположение: при включении питания на Vcc напряжение нарастает слишком медленно, и в момент записи в EEPROM первых Х значений напряжение ещё недостаточное для осуществления нормальной записи. Верно. Поставив паузу в 1 секунду все ячейки прописались! Только вот в чём дело - я питание не снимаю. Прошивку заливаю внутрисхемно и контроллер стартует. Питание остаётся включенным. Но с паузой работает! Делааа... есть хоть какое-то разумное объяснение этому феномену?
|
|
|
|
|
Jun 30 2011, 16:37
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(Палыч @ Jun 30 2011, 20:28)  Чтобы были объяснения, необходимы результаты всяко-разных замеров и экспериментов. Вы же предлагаете гадать на кофейной гуще. Вы абсолютно правы... тут нужны исследования и эксперименты...
|
|
|
|
|
Jul 1 2011, 17:58
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(Палыч @ Jun 30 2011, 22:06)  Уберите задержку в начале программы. Включите BOD. Сообщите результат выполнения программы. Перед тем как произвести манипуляции с фьюзами bodlevel, хотел спросить. По даташиту atmega168 работает от напряжения 2,7-5,5 вольт. У меня питание 3,6 вольта. Вопрос. Если я прошью фьюзы VCC=4.3 вольт (BODLEVEL=100) у меня МК вообще не запустится. Смогу ли я перепрошить внутрисхемно микроконтроллер при таких фьюзах и напряжении 3,6 вольта? Или придётся поднимать напряжение чтобы тактовый генератор запустился у мк и уж только потом перепрошивать. Спасибо.
|
|
|
|
|
Jul 3 2011, 13:40
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Выбрал наконец-то время и произвёл эксперименты с фьюзами BODLEVEL. Задержку в начале программы убрал. 1. Выставил фьюзы BODLEVEL=100 (VCC=4.3 V). МК не запустился. 2. Выставил фьюзы BODLEVEL=101 (VCC=2.7 V). МК запустился как обычно будь-то фьюзы не трогал. EEPROM записался опять только наполовину. 3. С VCC=1.8 V работает аналогично что и с VCC=2.7 V На закуску провл другой эксперимент. У меня была строка: Код buffer[0]=0x00;buffer[1]=0x01;buffer[2]=0x02;buffer[3]=0x03;buffer[4]=0x04;buffer[5]=0x05;buffer[6]=0x06;buffer[7]=0x07;buffer[8]=0x08;buffer[9]=0x09; Заменил на: Код buffer[5]=0x05;buffer[6]=0x06;buffer[7]=0x07;buffer[8]=0x08;buffer[9]=0x09;buffer[0]=0x00;buffer[1]=0x01;buffer[2]=0x02;buffer[3]=0x03;buffer[4]=0x04; Результат не изменился. Первые ячейки опять не прописались  Что скажете
Сообщение отредактировал Павел_Б - Jul 3 2011, 13:42
|
|
|
|
|
Jul 4 2011, 00:52
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(Палыч @ Jul 3 2011, 21:04)  Р.S. Кстати, Вы в курсе того, что этот МК уже более двух лет не рекомендуется к применению в новых разработках? Или использование этого МК - "поиграться для себя"? Нет Первый раз слышу об этом. Случайно не знаете в связи с чем? Их скоро перестанут выпускать? Я писал сначала на atmega8, но памяти не хватило, "пересел" на atmega168 - это самое дешёвое что нашёл у atmel с объёмом в 16 кБ. И корпус TQFP32 pin-to-pin оказался у этих двух МК. Чем грозит дальнейшее применение этих мк, так как в идеальном случае хотелось бы не только для себя...?
|
|
|
|
|
Jul 4 2011, 05:34
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(Павел_Б @ Jun 30 2011, 18:03)  Здравствуйте Уважаемые форумчане. Нужна помощь, пишу программу в CodeVisionAVR. Микроконтроллер atmega168 Задал некоторый буффер в память eeprom: Код eeprom char buffer[60]; В программе написал следующее: .... Читаю eeprom когда программа уже в бесконечном цикле и вижу, что на картинке. Вопрос - почему нет значений 0x01, 0x02, 0x03? Проверяйте готовность eeprom к записи. Не начинайте запись, пока готовность н наступит.
|
|
|
|
|
Jul 4 2011, 05:39
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(Палыч @ Jul 4 2011, 07:14)  Да, их перестанут выпускать Очень плохая новость! Что порекомендуете от атмела на 16 кБ? Очень было бы замечательно из бюджетного и Pin-to-pin с Atmega8. Может знаете когда точно прекратится выпуск atmega168? Какая-то проверенная информация есть?
Сообщение отредактировал Павел_Б - Jul 4 2011, 07:03
|
|
|
|
|
Jul 4 2011, 16:30
|
Профессионал
    
Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364

|
Цитата Не стоит так переживать - на смену ей вышла Atmega168A Скорее даже Atmega168РА... Цитата Справедливости ради девайсы у меня стартуют с задержой в три секунды Без задержек (почти - кроме иннициализации) так-же за последние 5 лет на нескольких тысячах автомобильных устройств проблем не обнаружено... ЗЫ. Правда все-же по моим наблюдениям этот камень менее надежен чем остальные Атмелы. На те несколько тысяч было штук пять померших без каких либо видимых причин. К примеру для моих любимых 48-х я такого ни разу не наблюдал хотя прошло их через нас раз в пять больше. Цитата Правильно будет сразу проинициализировать eeprom буфер значениями какими надо и зашить вместе с прошивкой. Или как вариант иннициализировать заводскими значениями только тогда, когда невозможно восстановление по контрольной сумме. Что в частности совпадает со случаем чистой EEPROM-ки.
|
|
|
|
|
Jul 5 2011, 04:26
|

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Чудес не бывает... Посмотреть: 1. С какой скоростью нарастает напряжение питания. 2. Подключена ли нога аналогового питания и все GND (частая ошибка начинающих). Если все это в норме, то виноват Платан
|
|
|
|
|
Jul 5 2011, 08:18
|
Местный
  
Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046

|
Цитата(goodwin @ Jul 5 2011, 08:26)  Чудес не бывает... Посмотреть: 1. С какой скоростью нарастает напряжение питания. 2. Подключена ли нога аналогового питания и все GND (частая ошибка начинающих). Если все это в норме, то виноват Платан  Платан не при чём По поводу скорости - меняю последовательность записи в eeprom, те регистры которые были не прописаны, опять не прописались  Разводка сделано верно. GND - 3, 5, 21. VCC - 4, 6, 18.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|