Технический форум по робототехнике.
CoSS » 02 сен 2009, 23:59
ALHIMIKПрежде всего неплохо бы указать МК, если в Classic/Tiny/Mega TWI более или менее совместим, то же самое не относится к Xmega.
twi_status = (TWSR & (~ ( (1<<1) | (1<<0) ) ) );
Технически правильно, но есть вполне справедливое замечание входящее в десятку заповедей программиста любого урповня - никаких констант в коде. В итоге:
- Код: Выделить всё • Развернуть
twi_status = (TWSR & (~ ( (1 << TWPS1) | (1 << TWPS0) ) ) );
Либо через макрос:
- Код: Выделить всё • Развернуть
#define TWI_GetStatus() (TWSR & 0xF8) //0xF8 - TWS7..TWS3
ALHIMIK » 03 сен 2009, 14:51
мк естественно мега 16
спасибо за развёрнутый ответ

blindman » 05 сен 2009, 16:13
В документации на МК AVR указывается, что EEPROM держит до 100000 циклов стирания-записи. Запись побайтовая. Значит ли это, что можно 100000 раз перезаписывать каждый отдельный байт, или 100000 - это общее количество циклов перезаписи?
Duhas » 05 сен 2009, 16:36
по идее это для каждого байта)
galex1981 » 08 сен 2009, 00:46
Возникла задача - сделать программную перезагрузку МК. Как проще всего это реализовать?
blindman » 08 сен 2009, 03:40
Собака + бесконечный цикл.
dmq » 08 сен 2009, 07:44
galex1981 писал(а):Возникла задача - сделать программную перезагрузку МК. Как проще всего это реализовать?
Я бы очистил стек и переход на метку reset, ну или какая в данном случае метка начала прораммы. Стек очищать на случай если "сброс" производится из процедуры и не оставалось лишних адресов возврата.
Или например включить watchdog и не сбрасывать его счетчик - тоже ведь помоему перезагрузиться должен?
---------
А, собака Blindman'а это и есть ведь watchdog

EdGull » 08 сен 2009, 08:33
или тупо нажать самому себе ресет
Duhas » 08 сен 2009, 09:01
тупо нажать на электрониксе обсуждали.. пришли к выводу что можно не отвиснуть потом ))) собака рулез )
avr123.nm.ru » 08 сен 2009, 09:11
galex1981 писал(а):Возникла задача - сделать программную перезагрузку МК. Как проще всего это реализовать?
Никак наверно. Нужен расширитель импульса аппаратный.
blindman » 08 сен 2009, 09:15
Какого импульса??! Сторожевой таймер - общеизвестное надёжное решение.
avr123.nm.ru » 08 сен 2009, 09:21
Я про расширитель импульса сброса от ноги до нужной длины импульса для ресет.
А собака так же как ресет сбрасывает ?
Duhas » 08 сен 2009, 09:24
ну собака вроде сбрасывает полностью.. есть люди довольные сбросом через собаку и их не мало.. остальным видимо ручной сброс не нужен )
avr123.nm.ru » 08 сен 2009, 09:45
По даташиту они равнозначны. А аппаратные расширитель импульса сброса в МК встроен

blindman » 08 сен 2009, 10:10
Собака так же как и ресет сбрасывает. А при старте через регистр MCUCSR можно определить, что вызвало перезапуск - включение питания, внешний вход сброса, собака или монитор питания.