GSK 0 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба Всем привет. У меня следующая проблема: Контроллет ATmega128. Установки заводские. CKSEL=0001 SUT=10 К ножке 7 порта B и шине питания подключен светодиод. Конструкция питаеться от 3,3 В. В CodeVision в опциях выставлен кристал 1.000 МГц #include <mega128.h> #include <delay.h> void main(void){ PORTB=0x80; DDRB=0x80; PORTB.7=0; delay_us(10000); // delay_us(10000); //<-------------------- Вот проблема !!!! // delay_us(10000); // delay_us(10000); PORTB.7=1; } При включени питания светодиод загораеться и гаснет. Вроде всё как должно быть. Затем я убираю коментарий со строки delay_us(10000); и задержка увеличиваеться в двое. Диод также при включении мигает, но заметно дольше. Если же я убираю коментарий с третьей строки, то диод при подаче питания зажигаеться и больше не гаснет. Т.е. контроллер зависает. delay_ms(10); - задержка в милисикунды также вешает контроллер. Пробовал на BascomAVR $regfile = "m128def.dat" $crystal = 1000000 $baud = 19200 $baud1 = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Ddrb = &HFF Portb = 0 Waitus 10 Portb = 255 End Работает до тех пор пока задержка меньше 15 микросекунд. В чем проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба А нет ли у Вас проблем с питанием и фильтрацией. Может быть, светодиод включается и сжирает питание. Пока конденсатор фильтра не разрядился - все работает. Программно так быть не может. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба К ножке 7 порта B и шине питания подключен светодиод. Конструкция питается от 3,3 В У вас светодиод подключен без балластного резистора? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psw 0 13 мая, 2008 Опубликовано 13 мая, 2008 (изменено) · Жалоба так и должно быть, зажигаем --- пауза---- тушим---- и тутже зажигаем может так попробовать PORTB.7=0; delay_us(10000); // delay_us(10000); //<-------------------- Вот проблема !!!! // delay_us(10000); // delay_us(10000); PORTB.7=1; delay_us(10000); // delay_us(10000); //<-------------------- Вот проблема !!!! // delay_us(10000); // delay_us(10000); Изменено 13 мая, 2008 пользователем psw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 7 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба ...и тутже зажигаем Нет этого у автора вопроса! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IEC 0 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба А не включен ли аппаратный ВатчДог? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GSK 0 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба Всем спасибо, кто откликнулся. Проблема неожиданно снялась после снятия фьюза совместимости М103 и М128. (Хотя я понять почему не могу). Эксперемены я провожу на плате AVR-SAVVY128. 1.Проблем с питанием нет. На плате есть регулятор. 2.Светодиод включен с баластным резистором. 3.ВатчДог выключен. 4.Перестановка функции delay_us не интересна, т.к. контроллер виснет, если задержки идут одна за одной или время задержки больше 20000 микросекунд. Похоже этот глюк необьясним! Бывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба Проблема неожиданно снялась после снятия фьюза совместимости М103 и М128. (Хотя я понять почему не могу). Потому что m103 и m128 это разные МК. Программа для m103 не будет работать на m128, также как и программа для m128 на m103 - разное распределение памяти. при вызове функции используется стек, а значит - память. Т.е. у вас стек мог располагаться по адресам, где нет памяти физически. Отсюда и глюк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GSK 0 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба Ну, несовсем так. ATmega128 полностью совместим по расположению выводов с ATmega103 и может быть установлен на существующую плату для ATmega103. Если запрограммировать конфигурационный бит M103C, то ATmega128 будет функционировать в режиме совместимости с ATmega103, настраивая ОЗУ, линии ввода-вывода и векторы прерываний как описано выше. Однако, некоторые новые функции ATmega128 в этом режиме станут недоступными. Данные функции перечислены ниже: Т.е. при запрограмированном бите M103C (заводская учтановка) неиспользуемая память будет недоступна для стека. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 13 мая, 2008 Опубликовано 13 мая, 2008 · Жалоба Т.е. при запрограмированном бите M103C (заводская учтановка) неиспользуемая память будет недоступна для стека. Cмотря как его CV распределяет. Если стек расположен внизу, то он может пересечся с периферией. настраивая ОЗУ, линии ввода-вывода и векторы прерываний. Вы код в CV компилировали под m103 или под m128 с запрограммированным M103C? Если под m128 то чему удивляться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться