AVR studio в вопросах и ответах
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
ecnfyjdre флага можно отловить при прохождении ассемблерных команд, а при отладке программ на Си флаг может установиться "внутри" какого-то оператора и вы этот радостный момент не увидитеNecroteeth писал(а):когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
битва с дураками проиграна, победители торжествуют. слава победителям!
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
Мастер Ломастер писал(а):ecnfyjdre флага можно отловить при прохождении ассемблерных команд, а при отладке программ на Си флаг может установиться "внутри" какого-то оператора и вы этот радостный момент не увидитеNecroteeth писал(а):когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?откройте окно дизассемблера и там "пошагайте" F11 - увидите и установку флага, и сброс (если терпения хватит)
попробовал так, как Вы посоветовали. по прерыванию таймера0 вопросов нет - OCF0 устанавливался и после прыжка на обработчик прерывания сбрасывался. а вот с OCF1A нет - он не шевелился НИ РАЗУ и к тому же переход на обработчик прерывания происходит не после ОДНОГО изменения уровня PINB1 (ибо в OCR1A единица), а только после ДВУХ. попробовал припаять конденсатор 0.1мкф параллельно геркону (резистор при этом 4.3кОм) - с конденсатором для изменения индикации на 1 нужно ДВА раза поднести магнит. почему?! таймер1 ведь должен срабатывать на КАЖДОЕ изменения уровня с 1 на 0, коли в OCR1A 0b00000001! где ошибка?
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Necroteeth писал(а):попробовал так, как Вы посоветовали. по прерыванию таймера0 вопросов нет - OCF0 устанавливался и после прыжка на обработчик прерывания сбрасывался. а вот с OCF1A нет - он не шевелился НИ РАЗУ и к тому же переход на обработчик прерывания происходит не после ОДНОГО изменения уровня PINB1 (ибо в OCR1A единица), а только после ДВУХ. попробовал припаять конденсатор 0.1мкф параллельно геркону (резистор при этом 4.3кОм) - с конденсатором для изменения индикации на 1 нужно ДВА раза поднести магнит. почему?! таймер1 ведь должен срабатывать на КАЖДОЕ изменения уровня с 1 на 0, коли в OCR1A 0b00000001! где ошибка?
1. изучите справочный файл к симулятору студии - далеко не все аппаратные штуки им симулируются корректно. в частности, есть большие ограничения по симуляции именно PWM-режимов, т.е. связанных с регистрами OCRх
2. изучите документацию на аппаратуру МК. флаг OCFx устанавливается в следующем такте после совпадения. если у вас таймер тактируется от тактовой частоты, то НОВОЕ "срабатывание" при OCRx=1 может произойти РАНЬШЕ, чем будет вызван обработчик прерывания, в итоге вы увидите одно прерывание на два совпадения. это как вариант поведения...
3. на сколько я могу судить, ПРОТЕУС достаточно корректно симулирует все эти фичи, можно пользоваться им или его плагином для студии.
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: AVR studio 4 в вопросах и ответах
вот такая прблема у меня - при инициализации UART АВР ругается, что URSEL для нее неизвестный символ. что это такое?
Лень - двигатель прогресса!
Re: AVR studio 4 в вопросах и ответах
Вроде разобрался с этим, теперь другая проблема при помещении данных в регистр на передачу из другого выдает - Invalid number. вот кусочек текста:
m1: rcall uart_init ;
rcall uart_Resiver ;
out PORTD, R16 ;
in temp, PINB ;
rcall uart_init ;
ldi R16, temp ; В этой строке ошибка Invalid number
rcall uart_Transiver ;
rjmp m1 ;
m1: rcall uart_init ;
rcall uart_Resiver ;
out PORTD, R16 ;
in temp, PINB ;
rcall uart_init ;
ldi R16, temp ; В этой строке ошибка Invalid number
rcall uart_Transiver ;
rjmp m1 ;
Лень - двигатель прогресса!
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
ldi - непосредственная загрузка числа. Здесь надо mov.
Docendo discimus
Re: AVR studio 4 в вопросах и ответах
спасибо большое, все получилось с mov. У меня еще было такое, что при инициализации UART АВР пишет, что URSEL ему не известен, что это такое может значить?
Лень - двигатель прогресса!
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
И я не знаю, что это такое. Что за регистр вы так называете?
Docendo discimus
Re: AVR studio 4 в вопросах и ответах
; формат кадра 8 бит
LDI R16, (1<<URSEL) | (1<<UCSZ0) | (1<<UCSZ1) ;ошибка в этой строке при инициализации. я заменил на R16, (1<<USBS) | (3<<UCSZ0) и перестала ошибка выскакивать
OUT UCSRC, R16 ;
RET ;
LDI R16, (1<<URSEL) | (1<<UCSZ0) | (1<<UCSZ1) ;ошибка в этой строке при инициализации. я заменил на R16, (1<<USBS) | (3<<UCSZ0) и перестала ошибка выскакивать
OUT UCSRC, R16 ;
RET ;
Лень - двигатель прогресса!
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Где вы выискали такое обозначение - URSEL? Вообще говоря, хочу заметить, что критерий программирования - понимание сути писанины, а не отсутствие ошибок.
Docendo discimus
Re: AVR studio 4 в вопросах и ответах
http://easyelectronics.ru/avr-uchebnyj-kurs-peredacha-dannyx-cherez-uart.html
вот тут и взял, вроде все стандартно
вот тут и взял, вроде все стандартно

Лень - двигатель прогресса!
Re: AVR studio 4 в вопросах и ответах
вот и я так подумал тогда, оказалось - правильно. pyzh_man Спасибо большое за помощь и дельные советы.
Лень - двигатель прогресса!
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Вчера почему-то слетели некоторые быстрые клавиши: жмешь F7 - ничего (и рядом с меню кнопка F7 не отображается, через меню - Build - компилируется, через настройки поправить не получилось. Помогла "починка" через меню "установки и удаления программ" 

Re: AVR studio 4 в вопросах и ответах
Подскажи в чём дело?
мк должен ожидать прихода трёх байт но почему-то просто проскакивает эту строку?
while(status_rx_buffer==EMPTY){};
провывал и так
while(status_rx_buffer==EMPTY);
так
while(status_rx_buffer==EMPTY)
всё одинаково...
В железе нечего не работает
мк должен ожидать прихода трёх байт но почему-то просто проскакивает эту строку?
while(status_rx_buffer==EMPTY){};
провывал и так
while(status_rx_buffer==EMPTY);
так
while(status_rx_buffer==EMPTY)
всё одинаково...
Код: Выделить всё
#define EMPTY 0
unsigned char status_rx_buffer = EMPTY;
while (1)
{
while(status_rx_buffer==EMPTY){}; //ожидаем прихода трёх байт, но при отладке в студии
switch (rx_buffer[0]) // мк прыгает отсель в конец кода
{
case SYNCHRONIZATION: //0
rx_index=0;
status_rx_buffer=EMPTY;
RX_INTERRUPT_ON;
break;
case RADAR: //1
radar(rx_buffer[1]);
return_connect;
break;
case SENSOR: //2
while(status_tx_buffer==FULL){}; //ждём опустошения буфера передатчика
tx_buffer[0]=SENSOR;
tx_buffer[1]=sensor();
tx_buffer[2]=0;
return_connect;
break;
case ROBOMD2: //3
robomd2(rx_buffer[0],rx_buffer[1]);
while(status_tx_buffer==FULL){};
tx_buffer[0]=ROBOMD2;
tx_buffer[1]=rx_buffer[1];
tx_buffer[2]=rx_buffer[2];
return_connect;
break;
case SERVO: //4
servo(rx_buffer[0],rx_buffer[2]);
while(status_tx_buffer==FULL){};
tx_buffer[0]=SERVO;
tx_buffer[1]=rx_buffer[1];
tx_buffer[2]=rx_buffer[2];
return_connect;
break;
case ADC_FUNCT: //5
start_adc(rx_buffer[1]);
while(status_tx_buffer==FULL){};
tx_buffer[0]=ADC_FUNCT;
tx_buffer[1]=read_adc();
tx_buffer[2]=0;
return_connect;
break;
default:
while(status_tx_buffer==FULL){};
tx_buffer[0]=0;
tx_buffer[1]=0; //
tx_buffer[2]=0;
return_connect;
return_connect; // <-при отладке в авр студии с whil(status_rx_buffer==EMPTY){}; почемуто
} // перепрыгивает сюда
} В железе нечего не работает
- Вложения
-
- m128.rar
- проект
- (33.14 КБ) 182 скачивания
Re: AVR studio 4 в вопросах и ответах
Собрал программатор по схеме протоса, всегда шил через CVAVR, но сейчас надо прошить через avrprog который в тулзах у студии висит. Как там все настроить? Как выбрать программатор, частоту передачи? И как соответственно прошить им? Настройки выбора ком порта нашел, остальное нет. Как вообще узнать видит ли он мой программатор? Спасибо.
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
- КАШАК
- Это не хвост, это антенна
- Сообщения: 1303
- Зарегистрирован: Вс апр 19, 2009 17:20:22
- Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
У меня такая проблема: раньше программировал в CodeVision, там включение/выключение определённого вывода делалось так:
А сейчас перешел на AVR Studio. Как в нем включить/выключить определенный пин порта? Например 1-й пин порта B ?
Заранее спасибо
Код: Выделить всё
PORTA.0=1; // Включили нулевой пин порта А
PORTA.0=0; // Выключили нулевой пин порта А А сейчас перешел на AVR Studio. Как в нем включить/выключить определенный пин порта? Например 1-й пин порта B ?
Заранее спасибо
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Так вы пишете не на меге...