Von ATMEGA8 auf ATMEGA88V umgestellt

OP #1639907
Lesenswert?
• ▲
▼
Ich habe mir anstelle vom ATMEGA8 nun den ATMEGA88V besorgt und wollte 
den Code 1:1 verwenden.

Nun habe ich festgestellt das die Interrupts beim ATMEGA88 anders 
angesprochen werden.
TCCR0 und TIMSK funktionieren hier nicht mehr.

Laut Datenblatt heißen die hier TCCR0A, TCCR0B, TCCR1A, TCCR1B und 
TIMSK0, TIMSK1, TIMSK2.

Nur welche sind die richtigen?
Ich blicke da nicht ganz durch.

hab schon ein wenig herumprobiert, komme aber leider zu keinem Ergebnis.

Ich verwende bei mir einen Timer-Interrupt für die Tastenabfrage (kurz, 
lang gedrückt)
Gast
Lesenswert?
• ▲
▼
Hi, Manfred,

Du: "Ich habe mir anstelle vom ATMEGA8 nun den ATMEGA88V besorgt und 
wollte
den Code 1:1 verwenden.
Nun habe ich festgestellt das die Interrupts beim ATMEGA88 anders
angesprochen werden."

Du findest sicher irgendwo auf der Atmel Homepage eine Dokument 
"migration from Atmega8 to Atmega88".

Ciao
Wolfgang Horn
OP
Lesenswert?
• ▲
▼
> Du findest sicher irgendwo auf der Atmel Homepage eine Dokument
> "migration from Atmega8 to Atmega88".
>
Der Tip war schonmal nicht schlecht, danke.
Die Tabelle habe ich hier gefunden: 
http://www.atmel.com/dyn/resources/prod_documents/doc2553.pdf

Jetzt lese ich allerdings das es für TIMSK 3 unterschiedliche I/O 
Regsiter Adressen am MEGA88 gibt. Was bedeutet das? In wiefern ist das 
wichtig für das programm? Und woher weiß ich welcher Register für mich 
Relevant ist?
Moderator
Lesenswert?
• ▲
▼
Manfred W. schrieb:
> Jetzt lese ich allerdings das es für TIMSK 3 unterschiedliche I/O
> Regsiter Adressen am MEGA88 gibt. Was bedeutet das?

Das bedeutet einfach, dass der ATmega88 mehr als 8 unterschiedliche
Timerinterruptquellen hat, so dass die Enableflags nicht mehr in einem
einzelnen Register Platz haben. Also hat man die Flags — geordnet nach
Timer — auf drei Register verteilt. Auf Seite 6 der Appnote kannst du
nachlesen, wohin die einzelnen Bits des TIMSK-Registers gewandert sind.
Eine genauere Beschreibung zu den einzelnen Bits findest du in den
Datenblättern.

Mehr als die Datenblätter und optional die Appnote brauchst du wirklich
nicht, um dein Problem zu lösen. Du musst nur bereit sein, die genannten
Dokumente auch zu lesen ;-)
Moderator
Lesenswert?
• ▲
▼
Manfred W. schrieb:
> Das Problem liegt eher beim "verstehen"

Ok, vielleicht hat dir mein letzter Beitrag beim Verständnis etwas
geholfen. Wenn nicht, musst du deine Frage anders formulieren, um nicht
in den Verdacht der Leseunwilligkeit zu geraten. Wenn du bspw.
schreibst, welche Passage du in welchem Dokument nicht verstanden hast,
wird jeder erkennen, dass du dich bereits informiert hast. Entsprechend
werden die Antworten anders ausfallen.
OP
Lesenswert?
• ▲
▼
Das mit den Bit, ok.

Also anstelle von:
1
TCCR0 = (1<<CS02)|(1<<CS00);
2
TIMSK = 1<<TOIE0;

müßte es heißen:
1
TCCR0B = (1<<CS02)|(1<<CS00);
2
TIMSK0 = 1<<TOIE0;

Und für den PWM?
1
void lcd_dimmer(uint8_t lcd)
2
{
3
  TCCR1A=0x81;
4
  TCCR1B=0x02;
5
  OCR1A=lcd;
6
}

Den OCR1A finde ich nicht in der Liste.
Moderator
Lesenswert?
• ▲
▼
> Den OCR1A finde ich nicht in der Liste.

OCR1A ist ein Doppelregister (mit 16 Bit breitem Inhalt), das sich aus
den 8-Bit-Registern OCR1AH und OCR1HL zusammensetzt. Beim ATmega88 haben
sich zwar die Adressen dieser Register geändert, die Namen sind aber
gleich geblieben. Deswegen musst du hier im Sourcecode nichts ändern.
Der Compiler wird die geänderte Adresse automatisch einsetzen, wenn du
beim Kompilieren den ATmega88 als Controllertyp angibst.
Gast
Lesenswert?
• ▲
▼
Die Interrupts dürften nun richtig gesetzt sein.

Allerdings habe ich jetzt noch folgendes Problem.
Die ganze Sache reagiert viel langsamer als beim ATMEGA8

Dieser war mit 4MHz getaktet.
Der ATMEGA88 kann per FUSE auf 8MHz oder 128kHz getaktet werden.
Ich hab mal standard 8MHz belassen.

Eigentlich müßte die Schaltung ja schneller reagieren.
Oder ist da irgendwo ein Teiler drinnen?

Liegts an der Software oder an den FUSES?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.