Forum: Mikrocontroller und Digitale Elektronik Ledblink mittels Timer


von Christine (Gast)


Lesenswert?

Hallo leute ich versuche ein klein programm test zu schreiben. das 
programm soll das 5. bit des Port D jede 70s Toggle in meinem Programm 
fehlt wahrscheinlich jegen etwas. Bitte ich brauche Ihre Hilfe Leute.
Danke





#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#define isr(vector)
#define sleep

// Die Routine Function schaltet das 5.bit des Ports D jede 71 ms um.
ISR(TIMER1_COMPA_vect)
{

      TIFR=0x10;        /*Aufruf des Interrupt um das bit zu Toggle*/

      TCNT1= 0x000;     // Counter wieder auf null setzen um die 
//Prozess zu wiederholen;

}

// Hauptprogramm: Innitialisierung der benötigten Registern und Aufruft 
der //Routine Function

int main(void){


 DDRD=0x0FFFF;                    //Daten Richtung zu Port D
 PORTD=0x20;                       /*pin 5 des Ports D setzen*/
 TCCR1B=0x4;                      //Prescaler = 256: signalstakt=clk/256
 TCNT1=0x00;                    /*Counter auf null initialisieren*/
 OCR1A=0x03EA;                  /*es wird bis zu 1000 dez. gezählt um 71 
ms zu erreichen hier Prescaler = 256*/
 sei();

 TIFR=0x10;        /*Aufruf des Interrupt um das bit zu Toggle*/
 TIMSK=0x10;       /*output Compare A Match Interrupt Enable*/

  while(1)
  {

  }

 }

von Christine (Gast)


Lesenswert?

ich will nur sagen dass, meine Platine ist die Atmega16 und ich benutze 
WinAVR um meinem Programm zu schreiben.

von Jörg X. (Gast)


Lesenswert?

klick mal da oben links auf "avr-gcc-tutorial", vl. hilfts schneller als 
ich/wir das können:
- Hex-Zahlen(0xnn...) haben meistens 2, 4, oder 8 Stellen( sind 8, 16, 
32Bit)
- die "REG |=(1<<NAME)"oder "REG &= ~(1<<NAME)" Schreibweise erleichtert 
die Fehlersuche enorm! (ich werde nicht nachschauen, was deine Zahlen 
bedeuten, aber vl. jemand anders)
- wenn du sowieso den "Output-compare-Interrupt" benutzt, kannst du auch 
gleich den CTC (-> steht im Datenblatt) Mode benutzen
- was soll "#define sleep" und "#define isr(vector)" heißen?

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.