Maybe you need a volatile variable?
Cat
----------------------------------------
> To: AVR-Chat@yahoogroups.com
> From: donhamilton2002@yahoo.com
> Date: Sat, 15 May 2010 20:47:01 +0000
> Subject: [AVR-Chat] Re: My timer does not seem to be incrementing an integer
>
>
>
> --- In AVR-Chat@yahoogroups.com, "Andrew" wrote:
>>
>> Hi,
>>
>> I have a project using an Atmega16 where the timer should be interrupting once a second, but my sconds variable in not being incremented. If I use this line:
>>
>> PORTD = ~PORTD;
> See: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf
> Figure 23 for help
>
>>
>> The leds connected to that port flash, if I write my seconds variable to that port only bianry one is indicated, whcih suggests to me that the timer is not running or the firmware is being reset.
>>
>> Could someone shed some light on this for me please? I have disabled the watch dog timer too My code is below:
>
> What is your compiler ?
>
>>
>> Andrew
>>
>> const uint16_t interval = 4000000/65536;//Work out interval from CPU frequency
>>
>> void Init_Timer1()
>> {
>> // Set up counter. Fclk = 4Mz
>> TCCR1B = 1 << WGM12 | 1 << CS12; // Fclk / 256, clear on match
>> OCR1A = interval; // Timer ticks at 4000000/(256*interval) (1s)
>> TIMSK |= (1 << OCIE1A | 1 << TOIE1);
>> asm("sei");
>> }
>>
>> ISR(TIMER1_COMPA_vect)
>> {
>> wdt_reset();
>> power_save_timer++;
>> seconds = seconds+1;
>> PORTD = seconds << 2;// Used to verify timer is running
>>
>> if (seconds>59)
>> {
>> seconds=0;
>> minutes++;
>> }
>>
>> if(minutes>59)
>> {
>> minutes=0;
>> hours++;
>> }
>>
>> if(hours>23) hours=0;
>> }
>>
>
>
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>Message
RE: [AVR-Chat] Re: My timer does not seem to be incrementing an integer
2010-05-16 by Cat C
Attachments
- No local attachments were found for this message.