Charoit
Участник-
Постов
48 -
Зарегистрирован
-
Посещение
Весь контент Charoit
-
Проблема была в перепутанной полярности батарейки - ошибка монтажника (шелкографии на плате нет).
-
Да, уже проверил..
-
К батарее вопросов не должно быть - из той же коробки коллеги брали неделю назад, проблем не было. Кондер - керамический, типоразмер 0603, какая утечка - не знаю.. Прибор - мультиметр UNI-T, модель UT70B. Не Fluke конечно, но и не хлам вроде? Или нет? :)
-
Я не писал, что они отработали по часу :) Я написал, что должно было хватить на 1,5 часа, то есть на заведомо большее время, чем получилось по факту. По факту вторая батарея проработала считанные минуты. А посчитал неверно, да - при 400 мкА должно быть не менее 120 часов. Не менее - потому что округлил ток в большую сторону. Сколько отработала первая - неизвестно, плата была собрана давно, RTC был проинициализирован - проверил что часы работают и забыл про них, все это время работал с другой периферией.
-
Ошибся, действительно 120 часов. Речь про вывод VBAT?
-
Отключил RTC, разницы по потреблению нет. Стер флэш вообще - тоже самое, жрет сотни мкА и все тут. Зачем емкость воткнули - не знаю, задам вопрос разработчику. Спасибо за идею, попробую проверить.
-
Есть небольшой девайс на данном процессоре, в бэкап-регистрах хранит данные, плюс идут часы. К выводу VBAT подключена батарейка на 3В, CR1225SM. При отладке выяснилось, что при отсутствии питания на VDD содержимое бэкап-регистров сохраняется, а часы сбросились. Посмотрел код, вроде все норм. Проверил напряжение на батарее - а там 0,4 вольта. Видимо для BKP хватало, а для работы часов уже нет (кварц внешний на 32 кГц). Заменил батарею на хорошую - но очень быстро проблема вернулась. Проверяю напряжение - 0,6 В.. Подключил мультиметр в разрыв цепи батареи, замерил ток - 400 мкА потребляет схема при отсутствии питания на VDD. При емкости батарейки 48 мАч она должна разрядиться примерно через 1,5 часа, а у меня вторая батарея умерла быстрее.. Может у кого есть идеи, в чем проблема и где искать? Кусок схемы прилагаю, батарейка больше ни к каким пинам не подключена.
-
Вопрос по перепрошивке МК.
Charoit ответил Charoit тема в MCS51, AVR, PIC, STM8, 8bit
Это потому, что для записи используется nvm_flash_erase_and_write_buffer() ? :) -
Вопрос по перепрошивке МК.
Charoit опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
Всем привет. Вопрос такой - обязательно ли стирать флэш-память перед перепрошивкой? Экспериментирую с бутлоадером для XMega32A4AU, попробовал перепрошить чип без стирания - прошился и работает.. -
Спасибо за ответ. Пробовал менять диапазон, но результата нет, а в документации IAR'а не все понятно. Я правильно понимаю, что : 1) Верхняя граница, которая определяется физ.размером памяти, в данном случае : -D_..X_CODE_END=8FFF ? 2) -P(CODE)BOOT=_..X_FLASH_BASE-_..X_CODE_END -P(CODE)CODE=_..X_FLASH_BASE-_..X_CODE_END -P(CODE)FARCODE=_..X_FLASH_BASE-_..X_CODE_END Эти строки означают, что определены сегменты BOOT, CODE и FARCODE и располагаются они во флэш, а директива -P означает что части сегмента могут быть размещены не непрерывно, а с разрывами? Эти сегменты могут быть расположены в любой части секции Бутлоадера, т.к. указано _..X_FLASH_BASE-_..X_CODE_END? Еще непонятно с сегментом INTVEC : он описан как -Z(CODE)INTVEC=81F4-81FF, при этом выше есть строка : -D_..X_INTVEC_END=81FB, что означает верхнюю границу сегмента. Но почему это значение меньше 81FF?
-
Всем привет! Изучаю код бутлоадера для XMega32A4AU, взял атмеловский пример для IAR. Линковщик выдает вот такую ошибку : Открыл файл xcl, но пока не понимаю, что и как надо там изменить:( -D_..X_FLASH_BASE=8002 -D_..X_CODE_END=8FFF -D_..X_INTVEC_END=81FB ////////////////////////////////////////////////////////////////////////////// // Code (flash) segments -Z(CODE)INTVEC=81F4-81FF -P(CODE)BOOT=_..X_FLASH_BASE-_..X_CODE_END -P(CODE)CODE=_..X_FLASH_BASE-_..X_CODE_END -P(CODE)FARCODE=_..X_FLASH_BASE-_..X_CODE_END -Z(CODE)INITTAB=81FC-_..X_CODE_END -Z(CODE)NEAR_ID=81FC-_..X_CODE_END Подскажите пжлста, в чем проблема..
-
Новая цена - 3000 рублей :)
-
Продаю отладочный комплект Atmel SAM3N-EK. Новый, в коробке. Внутри сама плата с ARM-процессором, дисплеем и т.д. + плата QT600 USB Bridge (для использования в качестве программатора) + блок питания + кабели. Фото прилагается. Цена - 4000 рублей, Москва. Пишите в личку или mak1308[at]mail.ru
-
Контроллер впадает в ступор..
Charoit ответил Charoit тема в MCS51, AVR, PIC, STM8, 8bit
Если бит убираю - устройство работает неправильно, но похоже, что причина где-то в другом месте.. Видимо, код был написан без учета существования других компиляторов. Буду разбираться дальше. Спасибо всем ответившим, пока есть куда копать :) -
Контроллер впадает в ступор..
Charoit ответил Charoit тема в MCS51, AVR, PIC, STM8, 8bit
Обработчик прерывания (USART__UDRE_vect - правильно понимаю?) не написан.. Взведение бита UDRIE сделано потому, что так было в исходнике, который мне достался по наследству, как уже писал выше, этот проект изначально был сделан в IAR'e, я же решил его перенести в среду AVR Studio. Удивительно, что этот же код работает после IAR'а - hex-файл прошил в контроллер, все функционирует.. -
Контроллер впадает в ступор..
Charoit ответил Charoit тема в MCS51, AVR, PIC, STM8, 8bit
У меня есть пищалка, включается программно, чтобы определять переход устройства из одного состояния в другое. Ее и использовал для определения проблемного места. Если включать пищалку до записи в регистр UCSRB - пищит, если после записи в этот регистр - уже не пищит. Выше идет вот это (сразу после этих строк вызов InitUART) : SREG=0x80; GICR=0x00; GIFR=0x00; MCUCR = 0x80; MCUCSR=0x00; WDTCR=0x10; SFIOR=0x00; DDRA =0x00; // if '1' --> PORTAn --> OUT; if '0' --> PORTAn --> IN DDRB =0xFF; // if '1' --> PORTBn --> OUT; if '0' --> PORTBn --> IN DDRC =0xFF; // if '1' --> PORTCn --> OUT; if '0' --> PORTCn --> IN DDRD =0x0C; // if '1' --> PORTDn --> OUT; if '0' --> PORTDn --> IN //****************************************************************************** PORTA=0xDF; // ножку 5 порта А переводим в Z-состояние, на остальных Pull-up //****************************************************************************** PORTB=0x00; PORTC=0xFF; PORTD=PORTD | 0xFC; SPCR=0x00;//F0; SPSR=0x01; //------- Настройка таймера TIMER0 -------------------------------------- ASSR = 0x00; TIMSK = 0x42; TCNT0 = 0x00; TCCR0 = 0x0D; //------- Кварцевый резонатор 12 МГц -------------------------------------- OCR0 = 11; -
Контроллер впадает в ступор..
Charoit ответил Charoit тема в MCS51, AVR, PIC, STM8, 8bit
Ступор - зависание. Поле Initial Stack Address проверял (как раз прочитал ваш пост об этом на форуме) - было пустым, прописал Ramend - не помогло. -
Контроллер впадает в ступор..
Charoit опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
Имеется проект для IAR'a под Атмегу32А, он компилится и работает нормально.. Решил перенести проект в AVR Studio 5.1, не сразу, но получилось, компилится нормально, без ошибок и предупреждений. Однако в железе работать не хочет, микроконтроллер впадает в ступор :( Опытным путем выяснилось, что происходит это во время инициализации UART, а именно после записи в регистр UCSRB. Причем контроллеру не нравится запись именно бита UDRIE - если его оставить нулем, то ступора не будет (но при этом не будет работать правильно железо) Сам исходник большой, наверно нет смысла его тут приводить, а функция инициализации UART'a выглядит вот так : void InitUART() { UCSRA=0x00; UCSRB = (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN)|(1<<UDRIE); UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); UBRRH=0; UBRRL=12;//BAUD=57692.31 (+0.16%) <-baudrate for Fosc=12 MHz и 6 MHz. UART_RxBufIndex=0; } Даташит на Мегу32А читал, насколько понял, есть особенность только при записи в регистры UCSRC и UBRRH, в остальном все нормально.. Что делать, не понимаю :( Помогите пжлста.. -
Как прочитать РОН в WinAVR?
Charoit ответил Charoit тема в Программирование
Не получается писать в память программ:( Для начала решил просто стереть страницу - и это не работает.. Обязательно ли макросы boot_page_erase должны находиться в области загрузчика? Вызываемая функция выглядит вот так : void boot_program_page (uint16_t page) { uint8_t sreg; // Disable interrupts. sreg = SREG; cli(); eeprom_busy_wait (); boot_page_erase (page); boot_spm_busy_wait (); // Wait until the memory is erased. // Reenable RWW-section again. We need this if we want to jump back // to the application after bootloading. boot_rww_enable (); // Re-enable interrupts (if they were ever enabled). SREG = sreg; } -
Если в розницу, тогда условия немного меняются.. По 30 рублей, место встречи - Белорусская или Новогиреево, утром или вечером. Юзеру HotkeyM - в личку Вам отправить сообщение не получилось.
-
Как прочитать РОН в WinAVR?
Charoit ответил Charoit тема в Программирование
Тьфу, блин, конечно о памяти программ.. Спасибо, буду смотреть boot.h. -
Как прочитать РОН в WinAVR?
Charoit ответил Charoit тема в Программирование
Кстати, в файле pgmspace.h есть макроопределения для чтения памяти данных - pgm_read в разных вариантах.. А как писать в память данных? :rolleyes: Ничего похожего в pgmspace.h я не нашел:( -
Как прочитать РОН в WinAVR?
Charoit ответил Charoit тема в Программирование
А вроде командой LPM без операндов байт всегда читается в регистр R0? -
Как прочитать РОН в WinAVR?
Charoit ответил Charoit тема в Программирование
Да признаться стыдно..:) Хотел прочитать несколько байт памяти программ - на асме это делал командой LPM, в принципе все понятно было. Решил попробовать на С, выяснил, что есть макрос pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short)) - ну и решил, что результат чтения как и на асме тоже сохраняется в регистре R0. Микроконтроллерный С не так просто в освоении оказался.. -
Как прочитать РОН в WinAVR?
Charoit ответил Charoit тема в Программирование
Мне бы пример, если Вам несложно:)