Во-первых, хочу поддержать автора за его стремление сделать красивый экономичный девайс. Добавить микросхему, аккумулятор и написать инструкцию, куда не нажимать - это просто, но НЕ ПРАВИЛЬНО. Правильно когда девайс работает несмотря ни на что.
Цитата(Electronic) @ Oct 5 2008, 15:27)

Здравствуейте. У меня свой проэкт в котором M8 работает как регистратор внешних событий, а внешний комп записывает приходящие на СОМ порт дные и подписывает их время. И есть задание сделать так что бы если комп отключен то что бы логи записывались в память а потом скидывались на сом порт при подключении компа. память я выбрал 24LC256 microchip (5ms). Так как ночью могут отключать вобще рубильник света а включать утром то устройство должно включится в рабочий режим с правильным временем.
Из чего тут следует, что питания не бывает сутками?
Цитата(Electronic) @ Oct 5 2008, 15:27)

Как имено грамотно сделать RTC немного не понятно. начну с главного вопроса. если исптользовать таймер 2 асинхронно то получается нужно использовать внутрений RC генератор. а его стабильность в зависимости температуры не известна. а ведь довольно важно что бы скорость обмена с СОМ портом (UART) была в районе +/- 0.5 %. Так же не смог найти калибровочный байт (нужен для частоты 8Мг). Подскажите плиз как и где его прочитать!? В книгах написано что он должен прочитатся программатором при програмировании и т.д. у меня програматор STK 200\300самодельный а программа ICC_AVR V7. 000. я вощем не смог разобратся.
Всё правильно - один кварц уже есть, под него подгоняем RC генератор. Есть аппнота AVR055: Using a 32kHz XTAL for run-time calibration of the internal RC. Точность частоты COM-порта должна быть 2%. Это согласуется с 5%, о которых говорят другие авторы, если учитывать погрешность н аобеих сторонах канала. Калибровочный байт называется OSCCAL, адрес его 0x31(0x51) в даташите на мегу8 есть про него много. Он читается программатором, напрмер avreal'ом:
Device connected, MEGA16 detected
Chip not locked
Fuses
OSCCAL = BD, BD, B7, B7
BODLEVEL = 1
BODEN = 1
SUT = 2
CKSEL = F
BLB1 = 3
BLB0 = 3
OCDEN = 1
JTAGEN = 1
CKOPT = 0
EESAVE = 1
BOOTSZ = 0
BOOTRST = 1
Цитата(Electronic) @ Oct 5 2008, 15:27)

Второе это как именно организовать отсчёт времени , ведь Т2 переполняется после 255. (при частоте кварца 32768 и коэфициенте деления 1024 частота работы таймера будет 32). тоесть переполнение произойдёт после 8 секундн. а контролер находится в слип режиме, тоесть надо получается через 8 сек пробудить его и добавить +8 секунд в переменну памяти и снова отправить в слип
Именно так!
Цитата(Electronic) @ Oct 5 2008, 15:27)

Ещё есть впрос как пробуждать контролер если появилось питание? Физически могу организовать изменение напряжения на практичски любой из ножек (0-нет питания, 4В - есть питание, или наоборот). но я посмотрел асинхнно внешние прерывания в мегах 8/88 определятся не могут. тоже нужен совет!
Глядя на таблицу 14 даташита "Table 14. Active Clock Domains and Wake-up Sources in the Different Sleep Modes" вижу, что светит Вам режим Power save, в котором Wake-up Sources INT0,1 и Timer2. Если не получается с INT, что мешает проверить какую-нибудь ногу на наличие высокого уровня от основного источника питания? Всё равно по таймеру просыпаться - время наращивать.
Сообщение отредактировал Maik-vs - Oct 7 2008, 11:56