Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема и IAR AVR 
:(
    Опции темы
Ivan.
  Дата 19.8.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



Решил перейти с WinAVR на IARAVR. С непривычки еле написал небольшой код. Помогите с появившимися для меня проблемами:
ПЕРВОЕ
Вот элементарный код:
Код

#include <intrinsics.h>
#include <ioavr.h>
//---------------------------------------------------------------------------
#define _TCNT0    0x83
#define _TCCR0    3
//---------------------------------------------------------------------------
volatile unsigned int i;
//---------------------------------------------------------------------------
#pragma vector=TIMER0_OVF_vect
__interrupt void TIM0_OVF(void)
{
    TCNT0 += _TCNT0;
    if (i)
        i--;
}
//---------------------------------------------------------------------------
int main(){
  TCCR0=_TCCR0;
  TCNT0=_TCNT0;
  TIMSK=0x02;
  __enable_interrupt();
  while (1){
  }
}
//---------------------------------------------------------------------------

когда начал отлаживать, прерывание нулевого таймера не вызывается, по причине того, что регистр TCNT0 просто стоит на месте, хотя таймер запущен, прерывания разрешены - подстажите в чем причина?

ВТОРОЕ
Как настроить компилятор под C++?


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
Коляй
Дата 19.8.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.6.2006

Репутация: нет
Всего: нет



 Это  сюда надо http://electronix.ru/forum/index.php 
Только советую сразу не спрашивать, а поискать по форуму сначала.
 Там  надо вот такую штуку писать.

Код

#pragma vector=TIMER0_COMP_vect
__interrupt void INT_TIMER0_COMP(void)
{  
  Tick_ms--;
  if(!Tick_ms)
  {
    s++;
    Tick_ms=50;
  }
   for (Tmr_Count=0 ; Tmr_Count<Task_Count ; Tmr_Count++)//ia?ae?aai ii i?a?aae caaa?e
     {
        if(TCB[Tmr_Count].Task_Enabled) //i?iaaa?yai anee caaa?a aeoeaiay
        {
          TCB[Tmr_Count].Time_Count--;  //oiaiuoaai n?ao?ee
          if (!TCB[Tmr_Count].Time_Count)//i?iaa?yai ia oneiaea ei?ii
          {
            if (TCB[Tmr_Count].Task_Mode)//ii?aaaeyai ?a?ei ?aaiou caaa?e
            {               
                TCB[Tmr_Count].Task_Enabled=0;//auiieiyai caaa?o iaei ?ac
            }
            
            TCB[Tmr_Count].Time_Count=TCB[Tmr_Count].Time_Set;//ia?aa?o?aai oaeia? ia iiaue n?ao
            TCB[Tmr_Count].Flag=1;//onoaiaaeeaaai oeaa ?oi caaa?a auiieiyaouny
            if(TCB[Tmr_Count].RH)
            (*TCB[Tmr_Count].RH)();//caioneaai caaa?o
            //TCB[Tmr_Count].Flag=1;//onoaiaaeeaaai oeaa ?oi caaa?a auiieiyaouny
           
          }
          
        }
     }



 (Коментарии кодировка не подходит)
 Но я сам как то вручную выставлял всё.

Да, забыл, ещё надо сами прерывания разрешить!
__enable_interrupt();
__disable_interrupt();// запретить.

В старых версиях  enable_interrupt(); вроде бы.
а сами два этих макроса в каком то файле лежат(не помню точно) ***.h
В общем что бы на IAR-е сидеть надо англицкий хорошо знать, потому что каждое незначительное действие придётся в свойствах проекта разрешать(или запрещать). 
 СИ++ тоже надо в свойствах указывать.

 Ещё вроде бы в свойствах в general options / System надо внизу две галочки поставить, что то vector RETI instruction.
 Короче я не знаю сам ничего, у меня стоят, мне как программист в аське рассказывал, а я ставил всё и стараюсь туда не лазить.
 Если отлаживал на ИАР-овском же отладчике, то прерывания не будут работать. Надо отдельно выбрать Simulator/ interrupts потом выбрать прерывание, котое желаешь проэмулировать, через сколько шагов, потом уже будет само прерывание эмулироваться.   

Это сообщение отредактировал(а) Коляй - 20.8.2006, 07:29
PM   Вверх
PILOT
Дата 20.8.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Какой кристалл?
Ладно, допустим мега128.

Тогда идем по твоему коду.
Ты разрешаешь прерывания глобальные, разрешаешь прерывания по сравнению, тем не менее само прерывание по переполнению, а значит оно никогда не выполнится.
В IAR плохой отладчик. Нужно компилировать в формат urbof8 и отлаживаться уже в симуляторе (эмуляторе) AVR Studio, тогда все будет так, как нужно.
Кроме того, для того чтобы отмерять гарантированные равные промежутки времени, нужно пользоваться прерыванием по сравнению и сам таймер запускать в режиме CTC.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
ManiaK
Дата 21.8.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



Цитата(PILOT @  20.8.2006,  00:36 Найти цитируемый пост)
В IAR плохой отладчик.

Пусть обвинят во флудерстве, но скажу. ИМХО, отладчиками вообще пользоваться нельзя - они вредны, потому что отупляют мозг. Хочется не в драфт вдумываться, а проверить - и, как результат, ошибки лезут.
PM MAIL WWW   Вверх
Ivan.
Дата 22.8.2006, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: 1
Всего: 2



с разрешением прерывания таймера 0 я ошибся, просто первоначально я писал под tiny26, а там в регистре TIMSK переполнение таймера 0 в бите 1. проверял то я нормально, по константе TOIE0, и во время отладки регистр проверял - все нормально выставлено.
Я полез из WinAVR в IAR по двум причинал:
первое. отсутствие в VMLAB контроллеров, имеющих интерфейсы USI.
второе. IAR лучше оптимизирует код, потому что компилирует проект целиком, а WinAVR по файликам и прилинковывает даже неиспользуемые функции и методы.

кстати, я проверял на ATTyni26 и ATMega8, тоесть на 8 битных кристалах.
для ARM у нас другая версия компилятора, хотя что будет там еще не знаю (Завтро впервые его запускаем).

ManiaK, 
Как ты живеш без отладчика - непонимаю.
на мой взгляд VMLAB еще ни кто не переплюнул. особенно с появлением возможности писать компаненты и объединять 2 процессора. правда если недостаток c ограничением Watch.


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
PILOT
Дата 22.8.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Компилить в urbof8 и в AVR-Studio и проверить еще раз работу если есть сомнения.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.