Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР.

 
Опции темы
Непрочитано 01.01.2007, 21:26  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию AVR IAR v4.20 проблема с отработкой условия

В программе определяю переменную - (пробовал и в области ОЗУ и в регистр - r15). При инициализации задаю ей значение и по приему байта, сбрасвыаю в 0. Как только в этой переменной 0 мне необходимо продолжить выполнение программы. Проблема состоит в следующем: если обнулять переменную в обработке прерывания, то из цикла выйти не получается, если обнулить эту переменную перед циклом, то проверка выполняется правильно и программа выполняется далее.
Странность поведения в том, что симуляция в AVRStudio отрабатывает номрально, отладка с JTAG тоже отрабатывает правильно, а в простом режиме работы МК, не выходит из цикла.
Вот часть программы:
Код:
char flags;
int main()
{
//инициализация портов и USART
flags=0xff;
 while (flags!=0x00){}; // вот из этого    
                    //цикла не могу выйти

 while(1){};
}
//инициализация по прерыванию RXC
#pragma vector=USART_RXC_vect
static __interrupt void TX_compl(void)
{
char tUDR;  
tUDR=UDR;
UDR=tUDR; //выдаю обратно в порт, чтобы контролировать
flags=0x00;
}
graham вне форума  
Непрочитано 01.01.2007, 22:00  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

попробуйте добавить модификатор

volatil перед flags

avr123.nm.ru/05a.htm

и while (flags!=0x00){};
можно проще написать:

while(flags);

и всё.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 02.01.2007, 14:29  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
попробуйте добавить модификатор
volatil перед flags
к сожалению не помогло

Сообщение от avr123-nm-ru
и while (flags!=0x00){};
можно проще написать:
while(flags);
Спасибо, но тут это не важно. Т.к. в дальнейшем необходимо проверку по битам делать.

Если кому не трудно, выкладываю весь проект. Посмотрите пожалуйста. Несколько дней эксперементирую, просмотрел несколько готовых проектов, выкачанных из инета, не могу найти проблему.

Прикрепленный файл: 5626518.rar
graham вне форума  
Непрочитано 02.01.2007, 19:28  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

у меня IAR нет. сделай .HEX пожалуйста. какой МК ?
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 02.01.2007, 19:59  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
у меня IAR нет. сделай .HEX пожалуйста. какой МК ?
там под m16, под какой тебе скомпилить?
graham вне форума  
Непрочитано 02.01.2007, 22:17  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

m16 давай.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 04.01.2007, 16:01  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
m16 давай.
Вот hex, программа немного отличается от той, которая в предыдущих постах.

Код:
#include "ioavr.h"
#include "inavr.h"

//#define CPU 4000000
//#define BAUD 9600
//#define UBRR CPU/((16*BAUD)-1)
#define UBRR 12 //19200
//#define UBRR 25 //9600

////////////////

//__regvar __no_init char flags @ 15;
volatile char flags; 

void UART_Start_Transmit(void);

//------------------------------------------------------------------------------

void UART_init(void)
{
  UBRRL = UBRR;
  //разрешение прерываний по приему и отправке
  UCSRB = ((1‹‹RXCIE)|(1‹‹RXEN)); 
  //UCSRB = ((1‹‹TXCIE)|(1‹‹RXCIE)|(1‹‹TXEN)|(1‹‹RXEN)); 

  // передача и прием по 8 бит, 1 стоповый
  UCSRC = ((1‹‹URSEL)|(1‹‹UCSZ1)|(1‹‹UCSZ0)); 
}

//------------------------------------------------------------------------------
// UART Transmit Compleate Interrupt Handler
//------------------------------------------------------------------------------
#pragma vector=USART_TXC_vect
static __interrupt void TX_compl(void)
{
  PORTA=0x30;
  flags=0x00;
  __delay_cycles(3000000);
  PORTA=0x70;
  __delay_cycles(3000000);
}
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// UART Receive Compleate Interrupt Handler
//------------------------------------------------------------------------------
#pragma vector=USART_RXC_vect
static  __interrupt void RX_compl(void)
{
unsigned char tUDR;
  tUDR = UDR;
  PORTA = tUDR;
  //UDR=tUDR;
  flags=0x30;
   PORTA=0x10;
  __delay_cycles(1000000);
}
//------------------------------------------------------------------------------

int main()
{
  DDRA=0xff;
  PORTA=0x10;
  __delay_cycles(2000000);
    PORTA=0x20;
  __delay_cycles(2000000);
      PORTA=0x30;
  __delay_cycles(2000000);
      PORTA=0x40;
  __delay_cycles(2000000);
      PORTA=0x50;
    UART_init();
  __enable_interrupt();
  
  UDR='R';
  flags=0xf0;

  PORTA=0x10;

  while (flags)
  {
    PORTA=flags;
  }

  __delay_cycles(3000000);
  PORTA=0xfC;
  __delay_cycles(3000000);
  
 while (1) //permanent cycle
  {
    DDRA=0xFF;
    PORTA--;
  }
}
Прикрепленный файл: 5273460.rar
graham вне форума  
Непрочитано 04.01.2007, 17:54  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

а как прога может попасть в

while (flags)

если она зациклена в

while (1)

... а ???
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 04.01.2007, 19:23  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
а как прога может попасть в

while (flags)

если она зациклена в

while (1)

... а ???
В последовательности while (flags) раньше и на while (1) никак не попасть не выполнив while (flags). Или я где-то что-то не понимаю!?
graham вне форума  
Непрочитано 04.01.2007, 19:53  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

подробно о прерываниях на - avr123.nm.ru/03.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IAR for AVR kassiopay Микроконтроллеры, АЦП, память и т.д 5 27.03.2009 17:20
IAR AVR 5.11B Wanted Kabron Микроконтроллеры, АЦП, память и т.д 30 08.02.2009 01:43
IAR for AVR & Assembler GLVlad Микроконтроллеры, АЦП, память и т.д 3 04.06.2008 16:46
IAR for AVR vasilij-kursikov Микроконтроллеры, АЦП, память и т.д 29 28.09.2006 18:14
[Решено] Ошибка в IAR C for AVR Lean Коллекция глюков 0 15.05.2003 10:34


Часовой пояс GMT +4, время: 13:14.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot