FAQ | Points | Add... | Recent posts | Search | Register | Log in


[ATMEGA8][avr gcc] Timer1


Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [ATMEGA8][avr gcc] Timer1
Author
Message
mgradzki
Poziom 15
Poziom 15


Joined: 13 Dec 2005
Posts: 255
Location: Warszawa

Post#1 Post from the author of the topic 06 Sep 2008 23:09   

[ATMEGA8][avr gcc] Timer1


Witam
Napisałem kilka linijek kodu, który ma działać jako generator częstotliwości z częstotliwością regulowaną przez SPI przez inny procesor.

Mam zadeklarowaną zmienną globalną:
Code:
 unsigned int tim_reg_Val=3030


i zainicjowany timer1:
Code:

TIMSK=(1<<TOIE1);
TCNT1=tim_reg_Val;
TCCR1B=0b011;
sei();



Przełączanie stanu wyjścia załatwiam w obsłudze przerwania:
Code:

SIGNAL (SIG_OVERFLOW1)
{
TCNT1=tim_reg_Val; //regulacja czasu przełączenia
PORTC^=_BV(5); //przełączenie wyjścia
}


Zmienna tim_reg_Val przychodzi po SPI (na pewno przychodzi, bo wyrzuciłem sobie jej wartość na UART). Po otrzymaniu zmiennej generator nie zmienia częstotliwości - w procedurze obsługi przerwania od timera1 do TCNT1 zawsze wpisywane jest ustalone na początku 3030
Próbowałem nawet mało subtelnie zmienić wartość zmiennej tim_reg_Val w taki sposób:

Code:

int main(void)
{
...
...
while(1) 
 {
   tim_reg_Val=60000;
   ...
 }
}

ale dalej bez zmian.
Co zrobić, aby przy każdym uruchomieniu obsługi przerwania od timera1 do TCNT1 wpisyawna była aktualna wartość zmiennej tim_reg_Val ??
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 06 Sep 2008 23:09   





Back to top
   
acid12
Poziom 17
Poziom 17


Joined: 23 Sep 2007
Posts: 387
Location: Katowice

Post#2 06 Sep 2008 23:35helpful post - solution   

Re: [ATMEGA8][avr gcc] Timer1


spr dodać 'volatile' przy deklaracji zmiennej, możliwe że kompilator optymalizując wpisuje na stałe wartość zadeklarowaną na początku, w przerwaniu jej wartość się nie zmienia, dla kompilatora jest ona w tym miejscu jako stała ...
Back to top
   
Google

Google Adsense


Post# 06 Sep 2008 23:35helpful post - solution   





Back to top
   
mgradzki
Poziom 15
Poziom 15


Joined: 13 Dec 2005
Posts: 255
Location: Warszawa

Post#3 Post from the author of the topic 07 Sep 2008 00:19   

Re: [ATMEGA8][avr gcc] Timer1


acid12 wrote:
spr dodać 'volatile' przy deklaracji zmiennej, możliwe że kompilator optymalizując wpisuje na stałe wartość zadeklarowaną na początku, w przerwaniu jej wartość się nie zmienia, dla kompilatora jest ona w tym miejscu jako stała ...



:spoko:
Kojarzyłem, że chodzi o dadonie tego słowa kluczowego w deklaracji zmiennej, tylko nie mogłem sobie go przypomnieć. Już planowałem podziałać na wskaźnikach.
Back to top
   
Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [ATMEGA8][avr gcc] Timer1
Page 1 of 1
Similar topics
Problem z przerwaniami w atmega8 AVR-GCC (17)
Odbiór podczerwieni, Atmega8, avr-gcc? (3)
[avr-gcc] Ustawianie PWM w Atmega8 (18)
[AVR-GCC] ATMega8+ADC+LCD (11)
ATmega8 sprzętowy UART avr-gcc (1)
DS18B20 atmega8 avr-gcc (17)
ATmega8 LCD 2*16 i AVR-GCC (4)
GCC, ATMega8 (8MHz), Timer1 i problem z odliczanie 1s (12)
[Atmega8][AVR-GCC] - przesiadka z ASM na C (9)
ADC Atmega8 w języku AVR-GCC. (23)

Page generation time: 0.081 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed