Atmega 328P LED will nicht richtig über Interrupts blinken

Gast #3387570
Lesenswert?
• ▲
▼
Liebe Genies,

ich versuch schon den ganzen tag simpelst eine LED über interrupts 
blinken zu lassen. Ich habe gefühlt 100 beiträge gelesen, finde dennoch 
meinen Fehler nicht. der Atmega 328 lauft auf einer platine auf 20MHz.
Vielleicht findet ja einer von euch meine(n) Fehler?
tausend Dank im Vorraus

Markus



#include <avr/io.h>
#include <asf.h>
#include <math.h>
#include <stdlib.h>
#ifndef F_CPU
#define F_CPU 20000000UL
#endif
#include <util/delay.h>
#include <avr/interrupt.h>


void servo_init(void);

#define SERVOPIN 1
#define SERVOPORT PORTD
#define DDRSERVO DDRD

int t=0;


ISR(TIMER0_COMPA_vect)        //interrupt
  {

    t++;

  }

void servo_init(void)
{
  TIMSK0|=(1<<OCIE0A);                 //interrupts
  TCCR0B |= (1<<CS00);                 //Prescale=1,
  TCCR0A |= (1<<WGM01);                 // CTC mode
  OCR0A = 199;                   //alle 10µs ein IRQ 0,00001s
  DDRSERVO|=(1<<SERVOPIN);               //LED Pin als ausgang

}

int main (void)
{


  servo_init();
  sei ();                //iknterrups an

  while(1)
  {

  if (t<20000)SERVOPORT|=(1<<SERVOPIN);  //bis zum 20000. durchlaufen 
des Interrupts LED AN (200ms)
  else SERVOPORT |=~(0<<SERVOPIN);  //ab dann LED AUS
  if(t>40000) t=0;      // bei 40000. interruptdurchlauf t zurücksetzen 
(insg. 400ms)

    }
  }

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.