Jump to content
Sign in to follow this  
Guest SHIV

Проблемы при отладке в Atmel Studio 7

Recommended Posts

Guest SHIV

Добрый день. Изучаю программирование AVR по статьям DI HALT. С самим программированием проблем нет, а вот со студией на каждом шагу. Вот та статья. Код компилится, прошивается и работает. Проблема только при дебагинге в студии.
Tools->tools settings-> mask interrupts shile stepping = FALLSE
Atmega8->Toolchain->AVR/GNU C compiler -> Optimization = None
Пробовал ставить Atmel Studio 6 - не помогает.
Использовал как родной компилятор так и WinAVR - не помогает.

Итак, суть проблемы. Программа в фоне мигает светодиодом, по прерыванию окончания приема по UART изменяет состояния светодиода в зависимости от того что лежит в UDR. Оk. Вот крутиться желтая стрелочка в цикле while при нажатии step over , я тыкаю бит RXC. Если я в окне Disassembly бесконечно тыкаю step over - ничего не происходит, то есть я хожу в цикле от метки до rjmp. Если я в окне main.c тыкаю step over, при следующем тыке после установки бита RXC бит снимается, но стрелка из цикла не выходит. То есть все также крутиться там. Если я устанавливаю breakpoin в обработчик прерывания - алилуя, он заходит в прерывание, но самое интересное тут только начинается. Код прерывания:

ISR(USART_RXC_vect){
	
	switch(UDR){
		case '1': PORTD |= 1 << LED_GREEN; break;
		case '0': PORTD &= ~(1 << LED_GREEN); break;
		default: break;
	}
	
}

 Пытаюсь натыкать '1' в UDR а он говорит НЕ ДАМ! Квадратики просто не хотят тыкаться, а если меняю 0x00 на 0x31 он тут же сбрасывает регистр в ноль. Ммммм падла. Ок, в UDR ноль, значит просто перескочит на default. Он то перескакивает, да вот только флаг RXC не сбрасывает. В смысле? Возвращается в главный цикл, но флаг жи есть. Он обратно в прерывание, но вот во второй раз при выходе из switch флаг сбрасывается. ЧТО? Флаг должен сброситься когда происходит чтение UDR, по крайней мере мне так пацаны во дворе сказали. Идем в даташит и видим When interrupt-driven data reception is used, the receive complete routine must read the received data from UDR in order to clear the RXC Flag, otherwise a new interrupt will occur once the interrupt routine terminates. Пацаны не соврали. Ок, смотрю asm.

 LDI R30,0x2C		Load immediate 
 LDI R31,0x00		Load immediate 
 LDD R24,Z+0		Load indirect with displacement 

Ну вот, UDR (0x2c) читается. Atmel Studio, am I a joke for you? Так вот на втором проходе прерывания, на строчке LDD R24,Z+0 флаг таки сбрасывается. Если ручками вовремя в регистр R24 0x31 подставить то даже case работает.

 

Что это и как это понимать?

Резюмируем:
Почему студия не переходит в прерывание сама, а только если в прерывании брейкпоинт стоит?
Почему я не могу поменять состояние регистра UDR в окне I/O (кстати не только его, еще некоторые биты в других регистрах, они вроде бы не зарезервированы)?
Почему флаг не сбрасывается с первого раза?
Есть хорошие альтернативы Atmel Studio без таких приколов?
Почему так сложно?

Share this post


Link to post
Share on other sites
5 hours ago, Гость SHIV said:

Atmega8->Toolchain->AVR/GNU C compiler -> Optimization = None

У меня студия с такими настройками джае не компилирует) Ставлю минимальную оптимизацию.

 

Дебаг внутрисхемный или симулятор?

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Guest SHIV

Со включенной оптимизацией отладка еще более баганная, volatile не спасает. Симулятор. Камень прошиваю - все работает как часы, только время показывает...

Share this post


Link to post
Share on other sites

Надо очень внимательно читать даташит на предмет изменения регистров. Впрочем, даже чтение даташита иногда не гарантирует результат. Я с новенькими Attiny встрял  - выяснилось, что ошибка в даташите.

https://www.avrfreaks.net/forum/attiny817-spi-interrupt-flags-if-not-cleared

В обработчик прерывания симулятор не заходит. Надо ставить бряку.

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Генераторами стабильного тока принято называть устройства, выходной ток которых практически не зависит от сопротивления нагрузки. Он может найти применение, например.в омметрах с линейной шкалой. Величина коллекторного тока транзистора V2 определяется отношением Iк=0,66/R2.Например, при R2, равном 2,2 к0м. ток коллектора транзистора V2 будет равен 0,3 мА и остается практически постоянным при изменении сопротивления резистора Rx от 0 до 30 к0м. При необходимости величина постоянного тока может быть увеличена до 3 мА, для этого сопротивление резистора R2 необходимо уменьшить до 180 Ом. Дальнейшее увеличение тока при сохранении высокой стабильности его величины как при смене нагрузки, так и при увеличении температуры возможно лишь при использовании трехтранзисторного генератора, показанного на рис. 2. При этом транзисторы V2 и V3 должны быть средней мощности, а напряжение второго источника питания - в 2...3 раза больше напряжения питания транзисторов V1, V2. Сопротивление резистора R3 рассчитывается по вышеприведенной формуле, но дополнительно корректируется с учетом разброса характеристик транзисторов.
    • Доброго времени всем. Уважаемый @FonSchtirlitz прослушал в наушниках представленный вами ролик, разрешите высказать свое мнение. По мне "высоких" слишком много, сильно "цыкают", " низкие" частоты, такое слуховое впечатление, воспроизводятся уже не столько динамиками сколько ящиками.  Для корректного сравнения наверное лучше  привести ролики с звучанием одного широкополосного динамика в щите или в открытом ящике, наверняка есть и с двух-трехполосным разделением такие АС,  в которых по идее не должно быть так называемой "интерференционной каши", а ФИ, ЗЯ, ТКВП, ОНКЕН, Рупор и т.д. , конечно не мне дилетанту говорить вам об этом,  совершенно другое АО  и по моему мнению сравнивать их с ГИ некорректно. Интересно каким микрофоном делали запись и какова стоимость данных АС. Почему представленный @Artem Ivn  материал вы считаете бахвальством?  Человек сделал своими руками, снял видео и АЧХ, выложил , что бы люди ознакомились, тем более в соответствующей теме, что в этом нехорошо или не правильно мне не понятно. Я бы с удовольствием посмотрел и послушал, пусть даже через ютуб, ваши наработки и совсем не считал бы  такой материал бахвальством с вашей стороны.  На данный момент времени у меня ГИ ( в аннотации под видео есть небольшой фото отчет об УМЗЧ, кому интересно посмотрите) звучание которых меня устраивает, ""хора мальчиков или воробышков" в них нет, звучание очень гармоничное, к стереоэффекту тоже претензий нет, нижний регистр полностью устраивает.  Да габариты конечно не маленькие но на то оно и АО щит, были самодельные АС лабиринт на Сонидо SWR 250, по габаритам были  тоже "солидные", если правильно помню высота 1400мм, глубина 500мм, ширина 460мм, а по весу под 60кг,  места тоже занимали не мало, правда пришлось продать их из-за жизненных  обстоятельств. Я не адепт  чего то  с утверждением типа: "Только широкополосные дины, только лампы, только без ОС или наоборот только  транзисторы, только многополоска и т.д и т.п." по моему мнению все имеет место быть кроме того, что стреляет и убивает. Слушая по все тому же пресловутому ютуб, много слушая,  причем ролики с хорошим качеством записи, я не могу отделаться от ощущения, что практически все АС  в корпусах гудят или бубнят,  и как я понимаю, из-за корпусов. Возможно это глупое занятие, такие прослушивания и оценки, но другой возможности услышать другие АС у меня нет. Может быть я просто привык к звучанию щитов ГИ в которых установлены  не дорогие советские динамики и данные динамики не такие плохие как утверждают некоторые участники форума,  по крайней мере цена - результат  несоизмеримы, я тоже не ожидал, что от таких недорогих, доступных пока еще, головок можно получить такой отличный результат.   
    • ВАу! Может попробуете объяснить неучу? А впрочем не нужно, всё равно не сможете.
    • Учите мат часть прежде чем писать... И читайте внимательно выше... средняя точка гуляла до этой схемы, по классическому варианту, и прочтите не только меня выше но и других людей... 
    • Частота то какая? Чтоб дроссель не грелся , его надо мотать скруткой(литцендратом). Например я мотаю проводом 0,14мм в 20-40 жил, в зависимости от мощности на выходе. И дроссель почти не греется даже на 1000 ватт(RM14).
    • всем привет помогите пожалуйста найти  datasheet на микросхему a2c53402059
    • Интересно, каким образом? А вообще, чтобы вам помогли, потрудитесь нарисовать читаемую схему, указать номиналы элементов и выложите её тут.
  • Покупай!

×
×
  • Create New...