|
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
Эскизы прикрепленных изображений
|
|
|
|
|
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 оказался у этих двух МК. Чем грозит дальнейшее применение этих мк, так как в идеальном случае хотелось бы не только для себя...?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|