mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mein Timer funktioniert nicht


Autor: Markus Neubauer (roboscan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.
Ist gerade mein erster Versuch mit Timern.
Nur aus dem AVR-GCC Tutorial habe ich mir sozusagen folgendes
rausgelesen aber nichts passiert.
Wenn die Frequenz zu  hoch ist sollten die LEDs ja zumindest schwach
leuchten aber tut sich garnix.
Was mach ich falsch?
#include <avr/io.h>
#include <inttypes.h>

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



SIGNAL (SIG_OUTPUT_COMPARE1A)
{
  //Ereigniss vom Timer
    if (PORTB == 0x00)
  {
    PORTB = 0xFF;
  }
  else
  {
    PORTB = 0x00;
  }

}



int main(void)
{

  sei();  //Global Interrupt Enabled  

  //Timer auf 1024 des Taktes setzen
  //TCCR0 = 0b00000101;    //Timer/Counter Control Register
  TCCR0 = (1<<CS00)|(1<<CS02);
  
  
  DDRB = 0xFF;
  PORTB = 0xFF;


  //PORTB=0x00;

  while(1)
  {



  }
}

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuch es doch erstmal mit dem Timer-Overflow-Interrupt...

Autor: Markus Neubauer (roboscan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert leider auch nicht.
Als Chip habe ich wie im AVR-GC Tutorial den AT90S2313.

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gehört da nicht noch auch im TIMSK was aktiviert?

Autor: Markus Neubauer (roboscan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah danke das hatte ich überlesen das TIMSK ja für beide also 8bit und
16bit counter gilt.

So nun der fertige Code und so blinkt es ;-)
#include <avr/io.h>
#include <inttypes.h>

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



//SIGNAL (SIG_OUTPUT_COMPARE1A)
SIGNAL (SIG_OVERFLOW0)
{
  //Ereigniss vom Timer
  if (PORTB == 0x00)
  {
    PORTB = 0xFF;
  }
  else
  {
    PORTB = 0x00;
  }


}



int main(void)
{

  sei();  //Global Interrupt Enabled  

  //Timer auf 1024 des Taktes setzen
  //TCCR0 = 0b00000101;    //Timer/Counter Control Register
  TCCR0 = (1<<CS00)|(1<<CS02);
  
  TIMSK = 0b00000010;
  
  DDRB = 0xFF;
  PORTB = 0xFF;


  //PORTB=0x00;

  while(1)
  {



  }
}

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.