atmega8 timer problem

Gast #1016840
Lesenswert?

Hallo

Habe folgendes Problem:

Möchte mit dem atmega8(auf stk 500) Port B toggeln. Mir ist egal bei 
welcher frequenz die leds getoggelt werden haupsache es ist sichtbar.
Habe folgendes Program geschrieben aber es haut nicht hin. Es leuchten 
immer alle leds.





#include <avr/io.h>
#include <avr/interrupt.h>

unsigned int x;

void start_timer0(void) {

  TCCR0 =  0x02;
  TIMSK =  0x01;
  TCNT0 =  255;
  sei();
}


ISR(TIMER0_OVF_vect) {

x++;

if(x==500)
{
  PORTB=0x00;
}

if(x==1000)
{
  PORTB=0xff;
}

}


int main(void)
{

start_timer0();

DDRB=0xff;

for(;;){}

}
#1016888
Lesenswert?

Hallo,

#include <avr/io.h>
#include <avr/interrupt.h>

volatile unsigned int x;

void start_timer0(void) {

  TCCR0 =  0x05;
  TIMSK =  0x01;
    sei();
}


ISR(TIMER0_OVF_vect) {

x++;

if(x==4)
{
  PORTB=0x00;
}

if(x==8)
{
  PORTB=0xFF;
  x = 0;
}

}


int main(void)
{

start_timer0();

DDRB=0xFF;

while(1)
;

}


Dann sollte deine LEd ca. alle Sekunde blinken , bei 1Mhz takt , 
ansonsten natürlich fixer.

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren