www.mikrocontroller.net

Forum: Compiler & IDEs Atmega164P Timerinterruppt


Autor: Michael D. (michaeld)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Versuche auf dem Atmega164P einen Timerinterrupt auszulösen.
Auf dem Atmega 16 funktioniert der Code habe die Registernamen schon 
geändert.

An Fuse Bits sind BOOTSZ0 und BOOTSZ1nicht gesetzt sonst alle also im 
PONY Prog nur die beiden angehackt.

kann mir da jemand weiter helfen?

Code hier:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>

#define F_CPU 4000000UL


int a=0;

    void init_timer(void)
  {

      //Initialisierung des Timers:

      TCCR0A |= (0<<CS00)|(0<<CS01)|(1<<CS02);      //Quarztakt wird durch 256 geteilt 4MHz/1024=15625Hz

      TCNT0  = 178;                   // Vorladen  15625Hz/200,Hz(5ms)=78,125  256-78,125=178

      TIMSK0 |= (1<<TOIE0);                  // Interrupts aktivieren und damit Timer starten  

  }


  ISR (TIMER0_OVF_vect)  
      
    {
      TCNT0  = 178;

      a++;
      if (a>3000)//30sekunde
      {
      PORTA |= (1<<PA0); 
      }
      }

  int main (void) 
  {           


      DDRA = 0xFF;      
      
      

          

      init_timer();       //Aufruf von timerinitialisierung

        sei();          // globale Interrupts zulassen

 
       while(1) { }                   //endlosschleife um programm nicht zu beenden                   
       return 0;                       //Rückgabewert an das Betriebssystem (wird nie erreicht wegen while Schleife)    
      
  }  

Vielen Dank

MfG

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und, was ist damit?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>      TCNT0  = 178;

Bäh!
Dafür gibt es den CTC-Mode. Da muß man keine Takte zählen...

Autor: Michael D. (michaeld)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und, was ist damit?

der timerinterrupt wird nicht ausgelößt.

>Dafür gibt es den CTC-Mode. Da muß man keine Takte zählen...

klar gibt es den aber das hier hat ja schon funktioniert auf dem 
Atmega16 frage mich nur warum nicht auf dem Atmega164P.

habe die Registernamen alles geändert gibt es noch was was man beachten 
muss??

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.