Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Некорректно пишется/читается EPROM в AVR

Непрочитано 16.06.2011, 11:23  
E_C_C
Почётный гражданин KAZUS.RUN
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 750
Сказали Спасибо 679 раз(а) в 382 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Некорректно пишется/читается EPROM в AVR

Такая проблема - мк AT90S2313 две переменные x, y изменяются в зависимости от состояния порта. При выключении должны записаться в EPROM , а при включении считаться оттуда. Вешаю на PIND.1 контроль питания -1 есть 0 нет. Питание на МК держится за счет емкости 470 мкф,
5 вольт держит около 0,5 сек, тактовая 10Мгц, должен успеть записать. Работает , но со сбоями, раз нормально , на другой раз происходит искажение данных, записываю 5555 не изменяю три четыре шелчка питанием и все вылазит случайное число. Вот код писалось в кодевижен.
Код:
int x,y;
eeprom int Ex,Ey;
void main(void)
{
#asm("sei") 

x=Ex;              // считали из EPROM  
y=Ey;
while (PIND.1)           //пока есть питание крутим основной цикл
      {
          switch (PressKey)                                   
            {
             case 0:break;
              case 1: x++;break;
               case 2: x--;break;
                case 3: x=0;break;
                 case 4: y++;break;
                  case 5: y--;break;
                   case 6: y=0;break; 
                  } 
           PressKey=0;      
         
          if (x==10000)x=0;
          if(x==-1)x=9999;
          if (y==10000)y=0;
          if(y==-1)y=9999;          
          
          i3++;                                              // этот  
          if(i3==100)                                      //  кусок
          {  i3=0;                                         // для индикации
            RevriteDig(x);                               // каждые 100
            for (i=0;i‹4;i++) buffer[i]= D[i];       // циклов
            RevriteDig(y);                              // обновление
            for (i=0;i‹4;i++) buffer[i+5]= D[i];   // х и у
          }     
       
       } 
       // питание снялось PIND.1 = 0       
        Ex=x;Ey=y;  // записали в EPROM                          
          }
Реклама:
__________________
Да здравствует Разум,да сгинет Маразм!

Последний раз редактировалось E_C_C; 16.06.2011 в 11:27.
E_C_C вне форума  
Непрочитано 16.06.2011, 11:36  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Так ведь запись в eeprom не мгновенна. Смотрите даташит, не помню точно, но время записи байта порядка 10 мс. А у вас пишется 4 байта. А питания уже нет...
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Сказали "Спасибо" nml
E_C_C (16.06.2011)
Непрочитано 16.06.2011, 11:41  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Мой склероз напоминает о том, что обычно запись в ЕПРОМ выполняется вызовом соответсвующей функции, которая требует довольно много времени на выполнение. Соответственно тут возможна ситуация, когда запись провести не успевают.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Сказали "Спасибо" MisterDi
E_C_C (16.06.2011)
Непрочитано 16.06.2011, 11:50  
E_C_C
Почётный гражданин KAZUS.RUN
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 750
Сказали Спасибо 679 раз(а) в 382 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Из даташита
The write access time is in the range of 2.5 - 4 ms, depending on the VCC voltages.
Попробую емкость побольше.
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
Непрочитано 16.06.2011, 11:58  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Сообщение от E_C_C Посмотреть сообщение
Попробую емкость побольше.
А как у вас организована схема контроля питания? Как настроен BOD?
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Непрочитано 16.06.2011, 12:01  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Схему детектора понижения покажите. Скорее всего он слишком поздно срабатывает - за 0,5 с контроллер сможет записать ваши данные раз 10 подряд. И сразу после записи программа должна переходить в бесконечный цикл с отключенными прерываниями, адрес ЕЕПРОМ установить в 000 - и соответственно в эту (000) ячейку ничего не писать
niXto вне форума  
Сказали "Спасибо" niXto
E_C_C (16.06.2011)
Непрочитано 16.06.2011, 12:48  
E_C_C
Почётный гражданин KAZUS.RUN
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 750
Сказали Спасибо 679 раз(а) в 382 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Схема простейшаяНажмите на изображение для увеличения
Название: 11112222.JPG
Просмотров: 73
Размер:	18.0 Кб
ID:	22745
Сообщение от niXto Посмотреть сообщение
И сразу после записи программа должна переходить в бесконечный цикл с отключенными прерываниями, адрес ЕЕПРОМ установить в 000 - и соответственно в эту (000) ячейку ничего не писать
Примерно так ?
Код:
// питание снялось PIND.1 = 0       
        Ex=x;Ey=y;  // записали в EPROM   
while(EECR & (1‹‹EEWE)); //ждем установки бита EEWE
EEAR = 0х000
#asm ("cli")
while(1);
А компилятор не будет адресовать в ту же ячейку ? откуда ему знать что она занята ,наверное надо в программе указать начальный адрес например с ячейки 002 ?
Код:
while(EECR & (1‹‹EEWE)); 
EEAR = 0х002                           //начальный адрес установил
eeprom int Ex,Ey;                     // и объявляю переменные
Будет правильно воспринята такая конструкция ? переменные попадут в ячейки 002 и 004 ? или для надежности самому на ассемблере расписать все что связано с ЕЕПРОМ.
Сообщение от nml Посмотреть сообщение
А как у вас организована схема контроля питания? Как настроен BOD?
BOD ? если он есть в AT90S2313 , то никак по умолчанию.
__________________
Да здравствует Разум,да сгинет Маразм!

Последний раз редактировалось E_C_C; 16.06.2011 в 13:34.
E_C_C вне форума  
Непрочитано 16.06.2011, 13:20  
RY723
Заблокирован
 
Регистрация: 08.08.2007
Сообщений: 2,820
Сказал спасибо: 375
Сказали Спасибо 1,364 раз(а) в 744 сообщении(ях)
RY723 на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Сообщение от E_C_C Посмотреть сообщение
Схема простейшаяВложение 22743
Рисунок очень мелкий, не разобрать надпией. А сигнал состояния внешнего питания подан не на вход прерывания? Если не на прерывание, то контроллер время теряет напрасно. И для этого сигнала лучше использовать вход компаратора и не ждать, пока напряжение питания опустится практически до нуля. Если питание 12В, то срабатывание компаратора можно настроить вольт 8. Контроллер гораздо раньше получит сигнал о пропадании внешнего напряжения.
RY723 вне форума  
Непрочитано 16.06.2011, 13:37  
E_C_C
Почётный гражданин KAZUS.RUN
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 750
Сказали Спасибо 679 раз(а) в 382 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Сообщение от RY723 Посмотреть сообщение
И для этого сигнала лучше использовать вход компаратора и не ждать, пока напряжение питания опустится практически до нуля.
Заняты все ноги, если только снаружи компаратор лепить, что тоже не айс ,места мало.
з.ы рисунок перезалил.
__________________
Да здравствует Разум,да сгинет Маразм!

Последний раз редактировалось E_C_C; 16.06.2011 в 15:26.
E_C_C вне форума  
Непрочитано 16.06.2011, 14:39  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Сообщение от E_C_C Посмотреть сообщение
Заняты все ноги, если только снаружи компаратор лепить, что тоже не айс ,места мало.
После обнаружения отсутствия питания, запустить цикл, в цикле переменные ЕЕПРОМ и сверять с РАМ, если НЕ РАВНО - то записать переменую ПОБАЙТНО с паузами между БАЙТАМИ 5-10 милисек.

Хотите гарантированой записи ЕЕПРОМ? - пишите гарантированые алгоритмы, с проверками и выдержками времени между записью БАЙТ в ЕЕПРОМ.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 16.06.2011 в 14:43.
picavr вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собираем глюки и "подводные камни" AVR и AVR Studi Don_Ambrosio Коллекция глюков 27 14.11.2010 12:24
Архив проектов на AVR fmssp Proteus, KiCAD и другие ECAD 4 25.10.2010 17:14


Часовой пояс GMT +4, время: 10:33.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.