Страница 40 из 160

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

Добавлено: Вт окт 04, 2011 12:19:58
Necroteeth
когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?

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

Добавлено: Вт окт 04, 2011 14:00:13
Мастер Ломастер
Necroteeth писал(а):когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
ecnfyjdre флага можно отловить при прохождении ассемблерных команд, а при отладке программ на Си флаг может установиться "внутри" какого-то оператора и вы этот радостный момент не увидите :) откройте окно дизассемблера и там "пошагайте" F11 - увидите и установку флага, и сброс (если терпения хватит)

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

Добавлено: Ср окт 05, 2011 11:13:37
Necroteeth
Мастер Ломастер писал(а):
Necroteeth писал(а):когда я пишу программу на Си в студии (ВинАВР как плагин т.е.), должны ли меняться состояния галочек в регистрах TIFR?
что-то никак не пойму - запускаю программу через F11 и выполняю ее до тех пор, пока программный указатель не прыгает на обработчик прерывания по компаратору таймера - за все время бит OCF ни разу не дернулся! он все время был в нуле. это баг студии или я что-то не так делаю?
ecnfyjdre флага можно отловить при прохождении ассемблерных команд, а при отладке программ на Си флаг может установиться "внутри" какого-то оператора и вы этот радостный момент не увидите :) откройте окно дизассемблера и там "пошагайте" F11 - увидите и установку флага, и сброс (если терпения хватит)
попробовал так, как Вы посоветовали. по прерыванию таймера0 вопросов нет - OCF0 устанавливался и после прыжка на обработчик прерывания сбрасывался. а вот с OCF1A нет - он не шевелился НИ РАЗУ и к тому же переход на обработчик прерывания происходит не после ОДНОГО изменения уровня PINB1 (ибо в OCR1A единица), а только после ДВУХ. попробовал припаять конденсатор 0.1мкф параллельно геркону (резистор при этом 4.3кОм) - с конденсатором для изменения индикации на 1 нужно ДВА раза поднести магнит. почему?! таймер1 ведь должен срабатывать на КАЖДОЕ изменения уровня с 1 на 0, коли в OCR1A 0b00000001! где ошибка?

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

Добавлено: Ср окт 05, 2011 11:38:43
Мастер Ломастер
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 в вопросах и ответах

Добавлено: Ср окт 12, 2011 19:28:52
Челюскин
вот такая прблема у меня - при инициализации UART АВР ругается, что URSEL для нее неизвестный символ. что это такое?

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

Добавлено: Ср окт 12, 2011 19:51:40
Челюскин
Вроде разобрался с этим, теперь другая проблема при помещении данных в регистр на передачу из другого выдает - 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 ;

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

Добавлено: Ср окт 12, 2011 19:58:34
pyzhman
ldi - непосредственная загрузка числа. Здесь надо mov.

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

Добавлено: Ср окт 12, 2011 20:02:05
Челюскин
спасибо большое, все получилось с mov. У меня еще было такое, что при инициализации UART АВР пишет, что URSEL ему не известен, что это такое может значить?

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

Добавлено: Ср окт 12, 2011 20:50:52
pyzhman
И я не знаю, что это такое. Что за регистр вы так называете?

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

Добавлено: Ср окт 12, 2011 20:57:23
Челюскин
; формат кадра 8 бит
LDI R16, (1<<URSEL) | (1<<UCSZ0) | (1<<UCSZ1) ;ошибка в этой строке при инициализации. я заменил на R16, (1<<USBS) | (3<<UCSZ0) и перестала ошибка выскакивать

OUT UCSRC, R16 ;
RET ;

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

Добавлено: Ср окт 12, 2011 21:07:17
pyzhman
Где вы выискали такое обозначение - URSEL? Вообще говоря, хочу заметить, что критерий программирования - понимание сути писанины, а не отсутствие ошибок.

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

Добавлено: Ср окт 12, 2011 21:21:00
Челюскин
http://easyelectronics.ru/avr-uchebnyj- ... -uart.html
вот тут и взял, вроде все стандартно :dont_know:

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

Добавлено: Ср окт 12, 2011 21:29:51
pyzhman
:facepalm: Так вы пишете не на меге...

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

Добавлено: Ср окт 12, 2011 21:32:58
Челюскин
вот и я так подумал тогда, оказалось - правильно. pyzh_man Спасибо большое за помощь и дельные советы.

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

Добавлено: Ср окт 12, 2011 21:36:26
pyzhman
Пожалуйста, заходите еще. :)

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

Добавлено: Чт окт 13, 2011 08:25:46
Engineer_Keen
Вчера почему-то слетели некоторые быстрые клавиши: жмешь F7 - ничего (и рядом с меню кнопка F7 не отображается, через меню - Build - компилируется, через настройки поправить не получилось. Помогла "починка" через меню "установки и удаления программ" :dont_know:

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

Добавлено: Пн окт 17, 2011 06:12:34
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){}; почемуто 
  }                       // перепрыгивает сюда
 }     
В железе нечего не работает

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

Добавлено: Пн окт 17, 2011 09:15:57
pyzhman
Здесь студия.

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

Добавлено: Сб окт 22, 2011 17:39:53
Dexa
Собрал программатор по схеме протоса, всегда шил через CVAVR, но сейчас надо прошить через avrprog который в тулзах у студии висит. Как там все настроить? Как выбрать программатор, частоту передачи? И как соответственно прошить им? Настройки выбора ком порта нашел, остальное нет. Как вообще узнать видит ли он мой программатор? Спасибо.

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

Добавлено: Пт окт 28, 2011 23:13:13
КАШАК
У меня такая проблема: раньше программировал в CodeVision, там включение/выключение определённого вывода делалось так:

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

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


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

Заранее спасибо :)