Forum: Mikrocontroller und Digitale Elektronik Timer0 in C mag nicht zählen


von MiB (Gast)


Lesenswert?

Hallo,

kann sein, dass ich total auf dem Schlauch stehe, aber ich komme nicht 
weiter.
Zur Zeit bin ich dabei, mir das Programmieren in C beizubringen. Bis 
jetzt habe ich in Basic gecodet. Ich habe nun dieses Programm 
geschrieben:

/*
 */

#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
#include <avr/interrupt.h>

TCCR0 = 0b00000101;
TIMSK = 0b00000001;
int main(void)
{

    DDRD = 0b11111111;
    DDRB = 0b00000001;


    while(1)
    {


        if (TCNT0==100) TCNT0=0;
        PORTD = TCNT0;
        PORTB ^= (1<<PB0);
        _delay_ms(TCNT0*2);
    }


    return 0;
}

Aber es mag nicht tun. Er macht einfach nichts, aus der PortB 0 zu 
tooglen.
Kann mir jemand helfen und sagen, wo ich nochwas einstellen muss, damit 
der Timer losrennt?

Gruß
Michael
von spess53 (Gast)


Lesenswert?

Hi

>TIMSK = 0b00000001;

Weshalb aktivierst du einen Interrupt? Du brauchst ihn nicht und hast 
auch keine Interruptroutine. Das funktioniert nicht.

MfG Spess
von Krapao (Gast)


Lesenswert?

> TCCR0 = 0b00000101;
> TIMSK = 0b00000001;

Fehler: Anweisungen außerhalb einer Funktion. C ist anders als Basic
Sehr unschön: Absolute Werte statt symbolischer Bitnamen 
Bitmanipulation

> _delay_ms(TCNT0*2);

Fehler: Kein zur Kompilierzeit konstanter Ausdruck als Argument
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.