AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Necroteeth
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Re: AVR studio 4 в вопросах и ответах

Сообщение Necroteeth »

когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Мастер Ломастер »

Necroteeth писал(а):когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
ecnfyjdre флага можно отловить при прохождении ассемблерных команд, а при отладке программ на Си флаг может установиться "внутри" какого-то оператора и вы этот радостный момент не увидите :) откройте окно дизассемблера и там "пошагайте" F11 - увидите и установку флага, и сброс (если терпения хватит)
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Necroteeth
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Re: AVR studio 4 в вопросах и ответах

Сообщение Necroteeth »

Мастер Ломастер писал(а):
Necroteeth писал(а):когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
ecnfyjdre флага можно отловить при прохождении ассемблерных команд, а при отладке программ на Си флаг может установиться "внутри" какого-то оператора и вы этот радостный момент не увидите :) откройте окно дизассемблера и там "пошагайте" 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. на сколько я могу судить, ПРОТЕУС достаточно корректно симулирует все эти фичи, можно пользоваться им или его плагином для студии.
битва с дураками проиграна, победители торжествуют. слава победителям!
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Re: AVR studio 4 в вопросах и ответах

Сообщение Челюскин »

вот такая прблема у меня - при инициализации UART АВР ругается, что URSEL для нее неизвестный символ. что это такое?
Лень - двигатель прогресса!
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

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 ;
Лень - двигатель прогресса!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение pyzhman »

ldi - непосредственная загрузка числа. Здесь надо mov.
Docendo discimus
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Re: AVR studio 4 в вопросах и ответах

Сообщение Челюскин »

спасибо большое, все получилось с mov. У меня еще было такое, что при инициализации UART АВР пишет, что URSEL ему не известен, что это такое может значить?
Лень - двигатель прогресса!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение pyzhman »

И я не знаю, что это такое. Что за регистр вы так называете?
Docendo discimus
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Re: AVR studio 4 в вопросах и ответах

Сообщение Челюскин »

; формат кадра 8 бит
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 в вопросах и ответах

Сообщение pyzhman »

Где вы выискали такое обозначение - URSEL? Вообще говоря, хочу заметить, что критерий программирования - понимание сути писанины, а не отсутствие ошибок.
Docendo discimus
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Re: AVR studio 4 в вопросах и ответах

Сообщение Челюскин »

http://easyelectronics.ru/avr-uchebnyj-kurs-peredacha-dannyx-cherez-uart.html
вот тут и взял, вроде все стандартно :dont_know:
Лень - двигатель прогресса!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение pyzhman »

:facepalm: Так вы пишете не на меге...
Docendo discimus
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Re: AVR studio 4 в вопросах и ответах

Сообщение Челюскин »

вот и я так подумал тогда, оказалось - правильно. pyzh_man Спасибо большое за помощь и дельные советы.
Лень - двигатель прогресса!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение pyzhman »

Пожалуйста, заходите еще. :)
Docendo discimus
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AVR studio 4 в вопросах и ответах

Сообщение Engineer_Keen »

Вчера почему-то слетели некоторые быстрые клавиши: жмешь F7 - ничего (и рядом с меню кнопка F7 не отображается, через меню - Build - компилируется, через настройки поправить не получилось. Помогла "починка" через меню "установки и удаления программ" :dont_know:
korbofos
Родился
Сообщения: 10
Зарегистрирован: Сб окт 15, 2011 18:04:42

Re: AVR studio 4 в вопросах и ответах

Сообщение korbofos »

Подскажи в чём дело?
мк должен ожидать прихода трёх байт но почему-то просто проскакивает эту строку?
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 скачивания
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение pyzhman »

Здесь студия.
Docendo discimus
Аватара пользователя
Dexa
Встал на лапы
Сообщения: 119
Зарегистрирован: Ср ноя 07, 2007 15:17:20
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Dexa »

Собрал программатор по схеме протоса, всегда шил через CVAVR, но сейчас надо прошить через avrprog который в тулзах у студии висит. Как там все настроить? Как выбрать программатор, частоту передачи? И как соответственно прошить им? Настройки выбора ком порта нашел, остальное нет. Как вообще узнать видит ли он мой программатор? Спасибо.
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
Аватара пользователя
КАШАК
Это не хвост, это антенна
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение КАШАК »

У меня такая проблема: раньше программировал в CodeVision, там включение/выключение определённого вывода делалось так:

Код: Выделить всё

PORTA.0=1;  // Включили нулевой пин порта А
PORTA.0=0;  // Выключили нулевой пин порта А


А сейчас перешел на AVR Studio. Как в нем включить/выключить определенный пин порта? Например 1-й пин порта B ?

Заранее спасибо :)
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Ответить

Вернуться в «AVR»