Austausch von atmgea 168 zu atmega 644

Gast #3666682
Lesenswert?

hallo zusammen.
habe mit einem atmega 168 ein glcd angesteurt und das ganze hat 
funktioniert. nun wollte ich einen atmega 644 anstelle des 168 
einsetzen. am aufbau hat sich nichts verändert, nur ruft der 644 jetzt 
irgendwie nichtmehr meine interruptfunktion auf.
er benutzt den timer0 und ist dort auf den compA modus geschalten.
aber wie gesagt, diese hier wird nicht aufgerufen.

ISR (TIMER0_COMPA_vect)
{...
}
(vorher mit dem 168 ging's)
hab auch keine anderen namen bei den registern vorgefunden. (die 
einstellungen sind gleich)
Gast #3667340
Lesenswert?

Ja schon klar mit der pin zahl.. geht ja nur um das Prinzip.  Kann auf 
jedenfall feststellen das das Programm bis zu ISR läuft. Dir namen der 
isr routinen sind auch gleich (hab einmal im Datenblatt und dann noch 
auf einer seite geschaut) :/
Gast #3667561
Lesenswert?

#include <asf.h> //von avr studio generiert -> wählt dazugehörige 
dateien aus, interrupt,board,...
(auch wenn man #include <avr/interrupt.h> probiert, geht es nicht)

uint8_t zeit_ms=0;

int main(void)
{
sei();
initialisierung_timer0();

     while(1)
     {...
           warten_ms(20);
     }
}
void initialisierung_timer0(void)
{
  TCCR0A =0x02; //clear timer on compare match erlauben
  OCR0A  =124;  // Output Compare Register A für 1 millisekunde
  TIMSK0 =0b000000010;  //Interrupt bei Match
}
void warten_ms(uint8_t millisekunden)
{
  TCNT0 =0;
  zeit_ms=0;
  TCCR0B =Timer0_start;  //64 prescaler

/////////Hier kommt er noch an/////////////////
  while (zeit_ms<millisekunden) //1 Match hat genau eine Millisekunde
  {
    ;
  }
//////////////^in der Schleife hängt er////////////
  TCCR0B =Timer0_stopp;
}

ISR (TIMER0_COMPA_vect)
{
  zeit_ms++;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren