limbura Опубликовано 3 сентября, 2012 Поделиться Опубликовано 3 сентября, 2012 Приветствую всех! Я только-только начал иметь иметь дело как с контроллерами, так и с ассемблером. Пишу сейчас в Atmel Studio 6 для ATMega16. Чтобы получше разобраться, вбил я такой код: .include "m16def.inc" //------------------------------- .CSEG .ORG $000 ; (RESET) RJMP Reset .ORG $002 RETI ; (INT0) External Interrupt Request 0 .ORG $004 RETI ; (INT1) External Interrupt Request 1 .ORG $006 RETI ; (TIMER2 COMP) Timer/Counter2 Compare Match .ORG $008 RETI ; (TIMER2 OVF) Timer/Counter2 Overflow .ORG $00A RETI ; (TIMER1 CAPT) Timer/Counter1 Capture Event .ORG $00C RETI ; (TIMER1 COMPA) Timer/Counter1 Compare Match A .ORG $00E RETI ; (TIMER1 COMPB) Timer/Counter1 Compare Match B .ORG $010 RETI ; (TIMER1 OVF) Timer/Counter1 Overflow .ORG $012 RETI ; (TIMER0 OVF) Timer/Counter0 Overflow .ORG $014 RETI ; (SPI,STC) Serial Transfer Complete .ORG $016 RJMP RX_OK ; (USART,RXC) USART, Rx Complete .ORG $018 RETI ; (USART,UDRE) USART Data Register Empty .ORG $01A RETI ; (USART,TXC) USART, Tx Complete .ORG $01C RETI ; (ADC) ADC Conversion Complete .ORG $01E RETI ; (EE_RDY) EEPROM Ready .ORG $020 RETI ; (ANA_COMP) Analog Comparator .ORG $022 RETI ; (TWI) 2-wire Serial Interface .ORG $024 RETI ; (INT2) External Interrupt Request 2 .ORG $026 RETI ; (TIMER0 COMP) Timer/Counter0 Compare Match .ORG $028 RETI ; (SPM_RDY) Store Program Memory Ready .ORG INT_VECTORS_SIZE ; Конец таблицы прерываний RX_OK: IN R16,UDR RETI Reset: LDI R16,Low(RAMEND) OUT SPL,R16 LDI R16,High(RAMEND) OUT SPH,R16 SEI LDI R17,(1<<RXCIE) OUT UCSRB,R17 M1: NOP NOP NOP NOP RJMP M1 Начну с того, что команда SEI не меняет значение флага I регистра SREG. Но это еще не все. Если забить и установить этот флаг вручную, то при установки флага прерывания RXC в регистре UCSRA ничего не происходит - на следующий же такт он сам возвращается в исходное состояние, а контроллер продолжает бегать циклом по NOP. Что я забыл, что не так? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
hd44780 Опубликовано 3 сентября, 2012 Поделиться Опубликовано 3 сентября, 2012 (изменено) Я не знаю, что там с SEI, но что ты забыл сделать - включить приёмник битом RXEN в том же регистре UCSRB . У Вас же он отключен и никогда никакого прерывания Вам не сгенерит ... А вообще - программы писать удобнее и проще на Си, а проверять лучше в железе. Уж сколько лбов разбито об все эти эмуляторы ... Изменено 3 сентября, 2012 пользователем hd44780 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Григорий Т. Опубликовано 3 сентября, 2012 Поделиться Опубликовано 3 сентября, 2012 Начну с того, что команда SEI не меняет значение флага I регистра SREG. Плохо смотрели, всё меняет. 0 Никогда не спорьте с дураком - люди могут не заметить между вами разницы Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
limbura Опубликовано 3 сентября, 2012 Автор Поделиться Опубликовано 3 сентября, 2012 Я не знаю, что там с SEI, но что ты забыл сделать - включить приёмник битом RXEN в том же регистре UCSRB . Попробовал. После этого флаг RXC перестал сам сниматься на следующий же такт, однако никакого прерывания по прежнему не возникает. А на счет SEI, уж поверьте, не вру, но флаг I почему-то не хочет ставить. Ума не приложу, что же может быть не так. Попробую создать новый проект и заново написать код. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Григорий Т. Опубликовано 3 сентября, 2012 Поделиться Опубликовано 3 сентября, 2012 (изменено) limbura, вы же не думаете, что я вру? Я проверил именно ваш проект. После 6-го шага флаг I стоит, как вкопанный. Изменено 3 сентября, 2012 пользователем Григорий Т. 0 Никогда не спорьте с дураком - люди могут не заметить между вами разницы Ссылка на комментарий Поделиться на другие сайты Поделиться
limbura Опубликовано 3 сентября, 2012 Автор Поделиться Опубликовано 3 сентября, 2012 (изменено) Да нет, конечно не думаю, просто пытаюсь понять, почему же у меня та же самая программа не работает, а у вас работает? В результате снес Atmel Studio 6 и поставил взамен AVR Studio 5.1 Все заработало как надо. Толи встал криво, то ли разработчики поспешили с выпуском новой версии. Изменено 3 сентября, 2012 пользователем limbura 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
hd44780 Опубликовано 3 сентября, 2012 Поделиться Опубликовано 3 сентября, 2012 Ещё раз убедился, что эмуляторы - зло. Никогда их не любил. Какашка. Бр-р 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
TDSS Опубликовано 3 сентября, 2012 Поделиться Опубликовано 3 сентября, 2012 @limbura, патч к студии поставили ? Atmel Studio 6.0 Patch 2 Моя ссылка 0 Иван Сусанин - первый полупроводник Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.