реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> CodevisionAVR что-то с eeprom
Павел_Б
сообщение Jun 30 2011, 14:03
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 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
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
goodwin
сообщение Jun 30 2011, 14:28
Сообщение #2


Местный
***

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



Да вроде как все на месте...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Павел_Б
сообщение Jun 30 2011, 14:40
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046



Цитата(goodwin @ Jun 30 2011, 18:28) *
Да вроде как все на месте...

Паинт рулит rolleyes.gif
Я серьёзно.

Сообщение отредактировал Павел_Б - Jun 30 2011, 14:40
Go to the top of the page
 
+Quote Post
goodwin
сообщение Jun 30 2011, 14:49
Сообщение #4


Местный
***

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



я тоже...
Go to the top of the page
 
+Quote Post
Павел_Б
сообщение Jun 30 2011, 14:51
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046



Цитата(goodwin @ Jun 30 2011, 18:49) *
я тоже...

Дак у меня при чтении как будьто значения в первые ячейки eeprom не прописались.
А у Вас отредактированная моя картинка.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 30 2011, 15:51
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Павел_Б @ Jun 30 2011, 18:51) *
значения в первые ячейки eeprom не прописались.

Как предположение: при включении питания на Vcc напряжение нарастает слишком медленно, и в момент записи в EEPROM первых Х значений напряжение ещё недостаточное для осуществления нормальной записи.
Go to the top of the page
 
+Quote Post
Павел_Б
сообщение Jun 30 2011, 16:08
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046



Цитата(Палыч @ Jun 30 2011, 19:51) *
Как предположение: при включении питания на Vcc напряжение нарастает слишком медленно, и в момент записи в EEPROM первых Х значений напряжение ещё недостаточное для осуществления нормальной записи.

Верно. Поставив паузу в 1 секунду все ячейки прописались!
Только вот в чём дело - я питание не снимаю. Прошивку заливаю внутрисхемно и контроллер стартует. Питание остаётся включенным.
Но с паузой работает!
Делааа... есть хоть какое-то разумное объяснение этому феномену?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 30 2011, 16:28
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Павел_Б @ Jun 30 2011, 20:08) *
есть хоть какое-то разумное объяснение этому феномену?
Чтобы были объяснения, необходимы результаты всяко-разных замеров и экспериментов. Вы же предлагаете гадать на кофейной гуще.
Go to the top of the page
 
+Quote Post
Павел_Б
сообщение Jun 30 2011, 16:37
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046



Цитата(Палыч @ Jun 30 2011, 20:28) *
Чтобы были объяснения, необходимы результаты всяко-разных замеров и экспериментов. Вы же предлагаете гадать на кофейной гуще.

Вы абсолютно правы... тут нужны исследования и эксперименты...
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 30 2011, 18:06
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Уберите задержку в начале программы. Включите BOD. Сообщите результат выполнения программы.
Go to the top of the page
 
+Quote Post
Павел_Б
сообщение Jul 1 2011, 17:58
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 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 вольта? Или придётся поднимать напряжение чтобы тактовый генератор запустился у мк и уж только потом перепрошивать.
Спасибо.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 1 2011, 19:40
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Павел_Б @ Jul 1 2011, 21:58) *
Если я прошью фьюзы VCC=4.3 вольт (BODLEVEL=100) у меня МК вообще не запустится. Смогу ли я перепрошить внутрисхемно микроконтроллер при таких фьюзах и напряжении 3,6 вольта?
Это было бы критично, если бы Вы заливали программу через Bootloader.
Go to the top of the page
 
+Quote Post
Павел_Б
сообщение Jul 3 2011, 13:40
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 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;

Результат не изменился. Первые ячейки опять не прописались sad.gif
Что скажете smile3046.gif

Сообщение отредактировал Павел_Б - Jul 3 2011, 13:42
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 3 2011, 18:04
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Вижу только два момента, которые могут препятствовать занасению значений в EEPROM:
1. Напряжение питания. При низком напряжении нормальная запись в EEPROM не гарантируется. В DS при описании записи в EEPROM напряжение питания, при котором гарантируется нормальная работа, ловко обходится, указано только, что необходим внешний супервизор питания при ненормальной работе EEPROM. В Errata описана проблема с EEPROM при напряжении ниже 2.7 вольт. Однако, установка BODLEVEL=101 (VCC=2.7 V) проблему не решила. Хорошо бы посмотреть на значение напряжения в момент пуска МК.
2. Внутренний RC-генератор. Он использется для тактирования автомата стирания/записи в EEPROM. Можно попробовать "поиграться" с его частотой.

Р.S. Кстати, Вы в курсе того, что этот МК уже более двух лет не рекомендуется к применению в новых разработках? Или использование этого МК - "поиграться для себя"?
Go to the top of the page
 
+Quote Post
Павел_Б
сообщение Jul 4 2011, 00:52
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 354
Регистрация: 21-11-10
Пользователь №: 61 046



Цитата(Палыч @ Jul 3 2011, 21:04) *
Р.S. Кстати, Вы в курсе того, что этот МК уже более двух лет не рекомендуется к применению в новых разработках? Или использование этого МК - "поиграться для себя"?

Нет sad.gif
Первый раз слышу об этом. Случайно не знаете в связи с чем? Их скоро перестанут выпускать?
Я писал сначала на atmega8, но памяти не хватило, "пересел" на atmega168 - это самое дешёвое что нашёл у atmel с объёмом в 16 кБ. И корпус TQFP32 pin-to-pin оказался у этих двух МК.
Чем грозит дальнейшее применение этих мк, так как в идеальном случае хотелось бы не только для себя...?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 21:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016