Forum: Mikrocontroller und Digitale Elektronik Timer läuft nicht los.


von Oliver L. (ollil)


Lesenswert?

Hi,

folgender C-Code - läuft auf einem ATMega 1284P
1
uint32_t overflow=0;
2
ISR(TIMER0_OVF_vect)
3
{
4
    overflow ++;
5
}
6
7
int main ( void )
8
{
9
    uint32_t starttime;
10
11
    sei();
12
    TIMSK0 |= (0x01 << TOIE0);
13
    TCCR0A = (1<<CS00); // Prescaler 1
14
    TCNT0 = 0x64;
15
16
    "ausgabe von overflow"
17
18
    while(1) { lass Zeit vergehen }
19
20
    "ausgabe von overflow"
21
}

Overflow ist jedesmal 0 - ich habe auch schon andere Timer versucht - 
auch den Timer mit 0 gestartet usw... (ist ja auch egal mit welchem 
Wert) - nur.... er zählt offensichtlich nicht?!

von bla (Gast)


Lesenswert?

volatile uint32_t overflow=0;

von Volatile (Gast)


Lesenswert?

Oliver Lehmann schrieb:
> uint32_t overflow=0;

volatile uint32_t overflow=0;

von Oliver L. (ollil)


Lesenswert?

hat leider nix gebracht... hier nochmal mein kompletter C-Code
1
#define F_CPU        18432000UL
2
#include <avr/io.h>
3
#include <avr/pgmspace.h>
4
#include <util/delay.h>
5
#include <avr/interrupt.h>
6
#include "uart.h"
7
8
volatile uint32_t overflow=0;
9
ISR(TIMER0_OVF_vect)
10
{
11
    overflow ++;
12
}
13
14
int main(void)
15
{
16
    sei();
17
    TIMSK0 |= (0x01 << TOIE0);
18
    TCCR0A = (1<<CS00); // Prescaler 1
19
    TCNT0 = 0x64;
20
    uart_init();   
21
    uart_putdw_dec(overflow);
22
    uart_putc('\n');
23
    _delay_ms ( 1000 );
24
    uart_putdw_dec(overflow);
25
    uart_putc('\n');
26
}

von Oliver L. (ollil)


Lesenswert?

Fehler gefunden... aus

TCCR0A = (1<<CS00);

muss

TCCR0B = (1<<CS00);

werden. Dann klappts auch...

von Volatile (Gast)


Lesenswert?

initialisiere mal mit einem Wert != 0. Viellicht tut es die Ausgabe 
nicht richtig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.