mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ledblink mittels Timer


Autor: Christine (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)
  {

  }

 }

Autor: Christine (Gast)
Datum:

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

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.