![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
vesago
-
Постов
747 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные vesago
-
-
Если не затруднит - можно выложить хексы? И если терминальный режим откючен как забить версию фирмвари?
-
По поводу полевика. Привожу кусок схемы. В ней на проц питанеи подается через узел на полевике, дабы в случае потери питания на конденсаторе сохранить журнал. Если откинуть ключ на транзисторе, получится аналог диода с низким падением.
-
К сожалению 9vs10 не существует необходимого вам решения. Видал я нечто подобное на фт-эшной микрухе, но стоимомть ее соизмерима с ценой кабеля.
-
Имхо лучьше прикрутить клон аврисп на m8 + батник + консольную стк500. Вот примерец.
-
Убедитесь, что не залочен. Для этого флешмагиком слейте прошивку. Если залочен, бутлодер при старте отваливает жтаг. Насчет дров - дело тонкое. Иногда последние криво пашут. Я ставлю новые, потом длл накатываю с 3_48b.
-
На проце надеюсь соответсвующая нога сидит на земле для активации обмена по жтагу? Сигналя нормально доходят + питание, тактирование, сброс тоже в норме? Проц не залочен?
-
Нет к сожаленю флешка. Хорошая штука стандарт. Хочешь ставишь AM29lv320, хочешь другого производителя. Они по ногам и командам как из одной бочки розлиты. Почти. На счет битых не знаю. Все - таки амд качественная контора. Разве что ошибка в коде и молотит в один сектор, в результате 100000 циклов расходуется. Приедет ворая плата подробнее посмотрю.
-
Нда. Я еще ставлю атмеловские флехи, там пока не было такого. К слову сказать во флехе журнал на 300000 событий и в связи с недавностью начала выпуска мало где он полноценно пользовался. В первой плате флеха встала так в ступор, что ни сброс питания ни перешивка не помогла. Застопорилась программа на определенном указателе записи во флешку. Подсоединился мтлинком и руками в программе проставил, что якобы Get_Memory_Status() в норме. Как программа перевалила через этот адрес, пошло нормально. Причем выход реди/бази показывал вроде что флеха в норме. Приедет вторая плата повнимательнее посмотрю. Пока переписал статус проверять по ноге.
-
У меня в приборе к LPC2214 подключена упомянутая флешка, поэтому и решил сюда написать. Возникали ли у вас проблемы при ее использовании? У меня возникла следующая ситуация. Во флешке я держу базу и журнал. Журнал пишется по кольцу. При записи события проц проверяет сначала возможность записи - флеха в пределах размера записи должна быть стерта. Если это не так - предварительно стирается сектор. Так вот уже в парочке приборов приключилась неисправность - зависает проц по причине неготовности флешки, которую я проверяю после записи. Готовность я проверяю не по ноге реди/бази а по командному интерфейсу. Поделитесь мыслями - когда такая ситуация может происходить?
-
Типовой атмеловский пример
-
Гм, действительно. Век живи - век учись...
#define _SPM_GET_LOCKBITS() \ __AddrToZByteToSPMCR_LPM((void __flash*)0x0001, 0x09) #define _SPM_GET_FUSEBITS() \ __AddrToZByteToSPMCR_LPM((void __flash*)0x0000, 0x09)
-
Я думаю, маловероятно, что юзер будет пытаться слить прошивку дабы клонировать железку.
-
Никак нельзя. Вот по этому я и полюбил консольные программаторы. Прописал в батнике нужные фузы и только тискаешь на батник.
-
Для перехода в исп режим я запускал батник с содержимым:
AVRDragon.exe -d ATmega168 -W. Потом не снимая питания подключал аврисп и убирал фуз дебагваре. На драконе исп чего-то не запускался. Я не стал разбираться особо. По поводу дисконнекта донгла - дебагваре чувствителен к емкости по сбросу. Уберите все кондеры по ресету, подтяжку оставьте.
-
Посмотрите настройки лпт порта в биосе, убедитесь, что просаживается ресет при программировании, отсутсвуют сопли в монтаже.
-
Ну тогда, когда отделите мух от котлет - убедитесь в безгрешности софта, внешний вачдог. Зря не поставили вроде fm3104. Еще - понизить подтяжку по и2ц и частоту.
-
А индуктивной нагрузочкой случаем не управляет ваш аппарат?
-
Дракона я тоже прикупил летом под акцию атмела. Но так и не довелось попользовать. Хватает возможностей m128. Там я применяю самопальный айс. На ней и для более мелких отлаживаю.
-
а UIIR_NO_INT случайно не равно нулю?
Единичке она равна. Да я и просто iid инициализировал нулем. Я бы давно соскочил с этого поганого карма на реалвью, да память внешняя прицеплена - не разобрался со скратчем.
1. Зачем цикл по флагу прерывания, если и так обработчик прерывания + циклы в приеме/передаче?2. Вполне допускаю, что keil "не понимает" такой конструкции while(((iid = U1IIR) & UIIR_NO_INT)
3. iid=0, такая вот "отключенная оптимизация". Была похожая фигня, решалась через указатели...
1 - все так и должно быть, дабы из фифо все выбрать - борюсь с невекторными прерываниями.
2 - а в других местах отлично понимает. Видно с оптимизацией его переклинило. Эх, так хорошо все начиналось. Я уже и волатайл ставил перед перменной. Как только цикл вайл - заходит только если напрямую указать вайл(1){}
-
Коллеги, не могу понять - что я не так делаю? Пишу обработчик уарта для LPC2214.
//******************************************************************************** ********** //Обработчик прерывания UART1 //******************************************************************************** ********** void UART1_Handler(void) __irq { u8_t iid; u8_t tmphead; u8_t tmptail; //iid = U1IIR; iid = 0; while(((iid & 1) == 0)) //while(((iid = U1IIR) & UIIR_NO_INT) == 0) { switch(iid & UIIR_ID_MASK) { case UIIR_RLS_INT: //Receive Line Status U1LSR; //read LSR to clear break; //Прием case UIIR_CTI_INT: //Character Timeout Indicator case UIIR_RDA_INT: //Receive Data Available do { iid = U1RBR; if((uart1.flags & (1<<UART1_FLAG_TX_IN_PROGRESS)) == 0) { tmphead = (uart1.rx_head + 1) & UART1_RX_BUFFER_MASK; uart1.rx_head = tmphead; if(tmphead == uart1.rx_tail) { //ERROR! Receive buffer overflow uart1.flags |= (1<<UART1_FLAG_ERR); } uart1.rx_buf[tmphead] = iid; } }while(U1LSR & U1LSR_RDR_BIT); break; //Прередача case UIIR_THRE_INT: while(U1LSR & U1LSR_THRE_BIT) { tmptail = uart1.tx_tail; if(uart1.tx_head != tmptail) { tmptail = (uart1.tx_tail + 1) & UART1_TX_BUFFER_MASK; uart1.tx_tail = tmptail; U1THR = uart1.tx_buf[tmptail]; } else { uart1.flags &= ~(1<<UART1_FLAG_TX_IN_PROGRESS); uart1.flags |= (1<<UART1_FLAG_TX_COMPLETE); } } break; case UIIR_MS_INT: //MODEM Status U1MSR; //read MSR to clear break; default: //Unknown U1LSR; U1RBR; U1MSR; break; } } VICVectAddr = 0x00000000; }
Начал проверять - не работает. Начал разбираться, смотрю - при передаче байта выражение while(((iid = U1IIR) & UIIR_NO_INT) == 0) всегда ложно. Я тогда тупо iid проинициализировал 0 - все равно. Посмотрел в дизасме (см. картинку) компилятор вместо while сразу поставил выход из цикла. Что это значит? Оптимизацию вообще отключил. Пишу в кейл/карм.
Еще - в автомате тоже циклы вида while(...){} не работают - компилер сразу ставит выход из цикла. Зато do{}while(...); отлично работает. Эх видно особенность карма.
-
Имхо отладка посредством уарта и светодиода сродни черчению на кульмане. В общем-то и жтаг и гонка отладочной инфы всего лишь инструменты. Применение их - дело вкуса и привычки. Все равно и там и там нужно анализировать ситуацию. А 256 мегу (может 2561?) дракон не задебажит - мк2 нужен.
-
Я при старте всегда проверяю корректность данных в разрезе диапазона. Когда имею дело со внешней RTC то при каждом чтении. С LPC имел проблему следующего характера - бывало криво тикало. Подлечилось путем начального обнуления всех регистров RTC.
-
Охранная система на GSM модеме. Исходники в яре TCP/IP прилагаются. Книга знаю только на местном фтп. Приаттачиваю код идущий всместе с ней.
-
Проблема с mega88
в AVR
Опубликовано · Пожаловаться
Если вы используете вачдог, убедитесь в правильной инициализации. Пример на 2 секунды.
Если не используете вообще, значит что-то одно - или фуз постоянного включения вачдога включили или стек проседает.