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

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

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

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

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

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

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

 
Опции темы
Непрочитано 16.06.2011, 11:23  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
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,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

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

Мой склероз напоминает о том, что обычно запись в ЕПРОМ выполняется вызовом соответсвующей функции, которая требует довольно много времени на выполнение. Соответственно тут возможна ситуация, когда запись провести не успевают.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Сказали "Спасибо" MisterDi
E_C_C (16.06.2011)
Непрочитано 16.06.2011, 11:50  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
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,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Сообщение от E_C_C Посмотреть сообщение
Попробую емкость побольше.
А как у вас организована схема контроля питания? Как настроен BOD?
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Непрочитано 16.06.2011, 12:01  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
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.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
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,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
RY723 на пути к лучшему
По умолчанию Re: Некорректно пишется/читается EPROM в AVR

Сообщение от E_C_C Посмотреть сообщение
Схема простейшаяВложение 22743
Рисунок очень мелкий, не разобрать надпией. А сигнал состояния внешнего питания подан не на вход прерывания? Если не на прерывание, то контроллер время теряет напрасно. И для этого сигнала лучше использовать вход компаратора и не ждать, пока напряжение питания опустится практически до нуля. Если питание 12В, то срабатывание компаратора можно настроить вольт 8. Контроллер гораздо раньше получит сигнал о пропадании внешнего напряжения.
RY723 вне форума  
Непрочитано 16.06.2011, 13:37  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
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.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 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, время: 17:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot