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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 15.01.2013, 15:35  
ArtemKolesnikov
Прописка
 
Аватар для ArtemKolesnikov
 
Регистрация: 16.03.2007
Адрес: Невинномысск, STAVROPOL REGION (26)
Сообщений: 118
Сказал спасибо: 583
Сказали Спасибо 28 раз(а) в 15 сообщении(ях)
ArtemKolesnikov на пути к лучшему
По умолчанию Нумб вопрос про внешнюю EEPROM и AVR

Всем привет.
Боялся создавать тему в разделе, вопрос нумбский, боюсь засмеете и загрызете, но решился.
Вот разобрался более-менее с записью по шине I2C во внешнюю EEPROM AVR. Помогла статья http://avrlab.com/node/84.
Но вот незадача: на другом сайте автор по прозвищу DI-HALT пишет, что данный способ записи не самый лучший. Он предлагает не ждать, пока изменится бит в регистре TWI, а обрабатывать все (писать байты) в прерываниях от модуля TWI.
Я тут обмыслил немного, в силу своих возможностей, и решил что он в какой то степени прав. Ведь если мы будем ждать, пока модуль TWI нам изменит статус-бит, пусть даже микросекунды, теоретически же у нас может выскочить какое-нибудь прерывание (например на INT1), пока мы пишем свои байты?
Казалось бы, ну и ладно, ну произойдет прерывание, ну выполнится оно, а программа то потом вернется в свое место, откуда прервалась.
Дело в том, что я планирую в прерывании на INT1 запретить все действия, которые МК выполняет в обычном режиме, в том числе работу с EEPROM, в общем, успокоить MK, пока не выполнится другое прерывание, и только потом, спустя 10 минут после этого другого прерывания возобновить работу в обычном режиме.
В итоге, если прервется запись в EEPROM, данные будут потеряны. Это недопустимо.
Ответ - запретить прерывания на время записи своих данных.
Но мне нельзя пропускать прерывание на INT1!!!. Будет катастрофа, если его упустить...)
Замкнутый круг получается.
Что можно придумать?
Реклама:
ArtemKolesnikov вне форума  
Непрочитано 15.01.2013, 16:34  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,792
Сказал спасибо: 2,912
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR.

Что такое на INT1 и почему его нельзя пропускать и зачем останавливать всю остальную программу аж на 10 минут?
Прерывания как-бы для того и сделаны, "что-бы не пропустить важного". Разрешить оба (ну или разрешить вложенные прерывания для TWI) - и дело с концом.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
ArtemKolesnikov (15.01.2013)
Непрочитано 15.01.2013, 16:39  
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,727
Сказал спасибо: 2,417
Сказали Спасибо 894 раз(а) в 581 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR.

Создать отдельный флаг разрешения и проверять его во всех прерываниях.Пока он установлен,тело прерывания не выполняется.
baiderin вне форума  
Сказали "Спасибо" baiderin
ArtemKolesnikov (15.01.2013)
Непрочитано 15.01.2013, 17:29  
ArtemKolesnikov
Прописка
 
Аватар для ArtemKolesnikov
 
Регистрация: 16.03.2007
Адрес: Невинномысск, STAVROPOL REGION (26)
Сообщений: 118
Сказал спасибо: 583
Сказали Спасибо 28 раз(а) в 15 сообщении(ях)
ArtemKolesnikov на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR.

Сообщение от baiderin Посмотреть сообщение
Создать отдельный флаг разрешения и проверять его во всех прерываниях.Пока он установлен,тело прерывания не выполняется.
Спасибо!

Мне сейчас, пока ездил по делам тоже пришла идея о флаге "Незавершенная запись", который ставить в начале записи данных, и сбрасывать в конце. В других процедурах обработки прерываний в первую очередь первой строчкой while (!FLAG); - Подождем, пока флаг не сбросится.
Сообщение от ForcePoint Посмотреть сообщение
Что такое на INT1 и почему его нельзя пропускать и зачем останавливать всю остальную программу аж на 10 минут?
Прерывания как-бы для того и сделаны, "что-бы не пропустить важного". Разрешить оба (ну или разрешить вложенные прерывания для TWI) - и дело с концом.
Нужно, это я грубо написал, на самом деле, если произойдет прерывание на INT1, то настраиваем таймер и считаем 500 тактов от внешнего генератора, при этом ничего не делая. По окончании счета - отключить таймер, настроить TWI, настроить INT1 и возобновить вычисления.

Последний раз редактировалось ArtemKolesnikov; 15.01.2013 в 17:37.
ArtemKolesnikov вне форума  
Непрочитано 15.01.2013, 18:13  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR.

А зачем ждать именно 500 тактов, ни одним больше/меньше? ТВИ с его частотой 100 кГц и так довольно неторопливый, там по любому тысячи тактов будут до выхода первого байта

Программы так не пишут... Для чего именно это надо?
niXto вне форума  
Непрочитано 15.01.2013, 19:25  
ArtemKolesnikov
Прописка
 
Аватар для ArtemKolesnikov
 
Регистрация: 16.03.2007
Адрес: Невинномысск, STAVROPOL REGION (26)
Сообщений: 118
Сказал спасибо: 583
Сказали Спасибо 28 раз(а) в 15 сообщении(ях)
ArtemKolesnikov на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR.

Сообщение от niXto Посмотреть сообщение
Для чего именно это надо?
Думаю над контроллером для теплицы, сочетающим в себе функцию сбора данных с датчиков, сохранения графика изменения данных с этих датчиков в памяти, и небольшую сигнализацию на открытие двери. Все планирую свалить на одну ATMEGA8, думаю справится.
В нормальном режиме идет сбор данных с датчиков, сохранение в памяти и при необходимости - отправка данных с помощью SIM900 (это еще обдумается). Раз в час. При открытии двери сбор данных прекращается, фиксируется событие на ИНТ1 (открытие двери), посылается байт по UART- SIM900 мне на телефон (это еще обдумается). И это состояние длится отведенное время (грубо, 500 секунд).
Думаю включать при этом еще питание видеорегистратора, у которого настроена автоматическая запись при подаче питания. Как раз на 500 секунд.
Вот такая затея. Просто дача далековато находится, 15 минут ехать, и там соседи вызывают сомнение. И мне интересно...

Последний раз редактировалось ArtemKolesnikov; 15.01.2013 в 19:28.
ArtemKolesnikov вне форума  
Непрочитано 15.01.2013, 20:00  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR

Возьмите STM32F05x - стоит 1 зеленый рубль, и пишите прямо в FLASH - ее там 64 кило. Программа мало займет. Если писать 4 байта минут в 5 (а больше и чаще вряд ли понадобится) , то хватит на полмесяца 32 кб.
Boba_spb вне форума  
Непрочитано 15.01.2013, 21:08  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR

Сообщение от ArtemKolesnikov Посмотреть сообщение
При открытии двери сбор данных прекращается, фиксируется событие на ИНТ1 (открытие двери), посылается байт по UART- SIM900 мне на телефон (это еще обдумается). И это состояние длится отведенное время (грубо, 500 секунд)
Для чего прекращать сбор данных, контроллер прекрасно сможет собирать их в фоне. Просто по прерыванию от двери пусть захватывает текущее время (пусть даже в попугаях) и сравнивает со временем предыдущего срабатывания, если прошло больше 500 с - фиксирует как новую сработку, если меньше - игнорирует

Сообщение от Boba_spb Посмотреть сообщение
Возьмите STM32F05x - стоит 1 зеленый рубль
Тогда лучше взять ММС-карточку на 64 МБ - стоит все тот же рубль, а памяти ещё в 2000 раз больше
niXto вне форума  
Сказали "Спасибо" niXto
ArtemKolesnikov (15.01.2013)
Непрочитано 15.01.2013, 21:25  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR

ArtemKolesnikov, у Вас соседи там со скоростью света летают, и дверь так же быстро открывается/закрывается, что надо через прерывание ловить? Вот запись в память - да, критично. И этот процесс лучше не прерывать (особенно, если на карточку писАть, как посоветовал niXto. Кстати, очень хорошая мысль. Прикрутить туда еще RTC и писать все события с нормальным временем). А если на открытие двери на 10мс позже отработает... Я думаю, нестрашно.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Сказали "Спасибо" DK
ArtemKolesnikov (15.01.2013)
Непрочитано 15.01.2013, 21:38  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Нумб вопрос про внешнюю EEPROM и AVR

Сообщение от niXto Посмотреть сообщение
Тогда лучше взять ММС-карточку на 64 МБ - стоит все тот же рубль, а памяти ещё в 2000 раз больше
Токо тут исчо 32 битный проц 48 МГц с преферией, RTC и ОЗУ на борту (Про все - просто один корпус )

В ММС то же все это появилось?
Boba_spb вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глупый вопрос. Как писать EEPROM PIC18? Easyrider83 Микроконтроллеры, АЦП, память и т.д 4 09.01.2011 19:55
Вопрос по EEPROM begun Микроконтроллеры, АЦП, память и т.д 17 03.11.2010 23:44
Вопрос по чтению/записи eeprom mega16 на си code-by Микроконтроллеры, АЦП, память и т.д 7 29.10.2008 18:46
Вопрос про МК ? malyshevsergey Цифровые сигнальные процессоры 3 07.01.2007 10:36
Вопрос по EEPROM AT24C04 BS Микроконтроллеры, АЦП, память и т.д 5 08.05.2006 19:50


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


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