roboforum.ru

Технический форум по робототехнике.


Taimer0 mega8 Чтото торможу

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Taimer0 mega8 Чтото торможу

Сообщение Tracer » 14 дек 2006, 14:39

Толи лыжи не едут толи Я ... :о)

Timer0 Mega8 WinAVR
МК влетает в прерывание по таймеру и сидит там
Где я торможу?

Вот кусок кода
...
unsigned int msDelay;

//Системный таймер (Timer0) 1мс для временных отсчетов задержки и тайм-аутов

void SysTimerInit(unsigned char tnum) //************ Timer Init
{
   if(tnum==0)
    {
     TCCR0 = _BV(CS02); //Прескаллер = 64
     TIMSK = _BV(TOIE0); //Прерывания от Timer0 разрешены
     TCNT0 = 0xB8; //Загрузка начального значения
     TCCR0 = 0x02; //Разрешить таймер
     }
}


ISR(TIMER0_OVF_vect)//*********************** Timer INTERRUPT
{
    TCNT0 = 0xB8; //Перегрузка счетчика для нового счета 1мс
    if(msDelay)   msDelay--;
    if(rxTimeOut) rxTimeOut--;
}

//************************************************ DELAY
unsigned char Delay(unsigned int msD)
{
msDelay=msD;
while(msDelay){};
return(0);
}
Аватара пользователя
Tracer
 
Сообщения: 195
Зарегистрирован: 24 ноя 2004, 12:36
Откуда: Харьков

Сообщение avr123.nm.ru » 14 дек 2006, 14:55

посмотрите в VMLAB.    vmlab.nm.ru
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Tracer » 14 дек 2006, 14:59

avr123.nm.ru писал(а):посмотрите в VMLAB.    vmlab.nm.ru


Вот и меня терзают смутные сомнения что Студия мне мозги парит
Прийдется ставить и разбираться с Лабой :о(
Аватара пользователя
Tracer
 
Сообщения: 195
Зарегистрирован: 24 ноя 2004, 12:36
Откуда: Харьков

Сообщение avr123.nm.ru » 14 дек 2006, 15:08

уверен - не пожалеете.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение avr123.nm.ru » 14 дек 2006, 15:09

смотрите примеры которые идуn с прогой - там есть и с  WinAVR  и  примеры курса тоже.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Tracer » 16 дек 2006, 03:39

РАЗОБРАЛСЯ :о)

"Ну блин ВЫ даете" (С) Генерал

Оказалось это ВСЕ издержки включенной оптимизации -Оs

в функции задержки происходило следующее
msDelay -> R24 R25
R24 сравнивался с 0

В прерывании происходило следующее
push R24 R25 - запомнить в стеке
R24--  Декремент
pop R24 R25 - достали из стека
IRET
с переходом на.. (нервных дальше прошу не читать :о))

R24 сравнивается с 0


Я в ШОКЕ

Отключил оптимизацию все стало на свои места
Аватара пользователя
Tracer
 
Сообщения: 195
Зарегистрирован: 24 ноя 2004, 12:36
Откуда: Харьков

Сообщение avr123.nm.ru » 16 дек 2006, 03:52

попробуй CVAVR
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Tracer » 16 дек 2006, 19:35

А что в CVAVR нет своих прибамбасов.
Какая разнца на чем писать - идеальных компиляторов НЕТ.
И не будет :о)

Если уж сильно припрет напишу на АСМе
Аватара пользователя
Tracer
 
Сообщения: 195
Зарегистрирован: 24 ноя 2004, 12:36
Откуда: Харьков

Сообщение avr123.nm.ru » 16 дек 2006, 19:43

вот я и говорю - попробуйте.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение avr123.nm.ru » 16 дек 2006, 19:44

копия.
Последний раз редактировалось avr123.nm.ru 17 дек 2006, 02:45, всего редактировалось 1 раз.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Tracer » 17 дек 2006, 01:37

Ок обязательно попробую для сравнения
Спасибо за совет
Аватара пользователя
Tracer
 
Сообщения: 195
Зарегистрирован: 24 ноя 2004, 12:36
Откуда: Харьков

Сообщение aesok » 18 дек 2006, 01:56

Есть одно волшебое слово - volatile.

Прочтите avr-libc-user-manual FAQ#1 - My program doesn’t recognize a variable updated within an interrupt routine

Анатолий.
aesok
 
Сообщения: 69
Зарегистрирован: 11 авг 2006, 01:02
Откуда: ----

Сообщение aesok » 18 дек 2006, 01:56

Есть одно волшебое слово - volatile.

Прочтите avr-libc-user-manual FAQ#1 - My program doesn’t recognize a variable updated within an interrupt routine

Анатолий.
aesok
 
Сообщения: 69
Зарегистрирован: 11 авг 2006, 01:02
Откуда: ----

Сообщение Tracer » 18 дек 2006, 12:48

ПРОВЕРИЛ - ВСЕ РАБОТАЕТ

СПАСИБО за подсказку, действительно ВОЛШЕБНОЕ слово :о)
Аватара пользователя
Tracer
 
Сообщения: 195
Зарегистрирован: 24 ноя 2004, 12:36
Откуда: Харьков

Сообщение avr123.nm.ru » 18 дек 2006, 14:15

Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31