www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Von ATMEGA8 auf ATMEGA88V umgestellt


Autor: Lokus Pokus (derschatten)
Datum:

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

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manfred W. schrieb:
> Nur welche sind die richtigen?

Das verraten dir die Datenblätter. Lesen bildet. ;)

Autor: bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nur welche sind die richtigen?

Das verraten dir die Datenblätter. Lesen bildet. ;)

Ausserdem gibt's bei Atmel dafür eine "Migration Note".

Autor: Wolfgang Horn (Gast)
Datum:

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

Autor: Lokus Pokus (derschatten)
Datum:

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

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?

Autor: Yalu X. (yalu) (Moderator)
Datum:

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

Autor: Lokus Pokus (derschatten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Du musst nur bereit sein, die genannten
> Dokumente auch zu lesen ;-)
>
Das Problem liegt eher beim "verstehen"

Autor: Yalu X. (yalu) (Moderator)
Datum:

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

Autor: Lokus Pokus (derschatten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit den Bit, ok.

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

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

Und für den PWM?
void lcd_dimmer(uint8_t lcd)
{
  TCCR1A=0x81;
  TCCR1B=0x02;
  OCR1A=lcd;
}

Den OCR1A finde ich nicht in der Liste.

Autor: Peter Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OCR1AL und OCR1AH .... 16bit

Autor: Yalu X. (yalu) (Moderator)
Datum:

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

Autor: Lokus Pokus (derschatten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yalu X. schrieb:
> Der Compiler wird die geänderte Adresse automatisch einsetzen, wenn du
>
> beim Kompilieren den ATmega88 als Controllertyp angibst.

Ja, das ist gleich die nächste Sache.
Im AVRStudio kann ich für den Compiler zwar den ATMEGA88 auswählen aber 
nicht im programmiertool? Kann ich da den ATMEGA8 nehmen?

Autor: Peter Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach halt ein Update vom AVR Studio, dann kannst ihn auch auswählen...

Autor: Manfred W. (Gast)
Datum:

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Liegts an der Software oder an den FUSES?

CKDIV8-Fuse?

MfG Spess

Autor: Lokus Pokus (derschatten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> CKDIV8-Fuse?
>
Du bist mein Held! :)
Danke!

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.