www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Austausch: Atmega8 auf Atmega168


Autor: matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe noch ein weiteres Problem. Und zwar reicht mir der Speicher 
beim Atmega8 nicht ganz aus. Deshalb will ich ihn durch einen Atmega168 
ersetzen. Im AVRStudio wurde bei Device der Typ ausgewählt, die Fusebits 
wurden gesetzt und der Code neu compiliert.
Allerdings funktioniert das nicht. Im AVRStudio kommen keine 
Fehlermeldungen. Das Display, das mit dem Atmega8 funktioniert, kann mit 
dem Atmega168 nicht angesteuert werden.

Hat jemand eine Idee an was das liegen könnte?

Danke
matze

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hat jemand eine Idee an was das liegen könnte?

Fehler im Quellcode (den Du nicht gezeigt hast), falsche Fuses oder ganz 
einfach Sonnenwinde.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
matze schrieb:
> Hat jemand eine Idee an was das liegen könnte?

Der 168 hat andere Register. Das lässt sich gar nicht compilieren.

Das Device muss nicht nur in AVR Studio, sondern auch in den 
Configuration Options des Compilers ausgewählt werden.

mfg.

Autor: matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, also ich bin um eine Erkenntnis reicher.
Der Controller funktioniert mit dem Code. Allerdings erst, wenn ich 
einen Hard-Reset macht (Spannung weg).
Sobald ein Soft-Reset ausgeführt wurde, läuft er nicht mehr an. 
Programmieren mit AVRStudio geht aber weiterhin.

Gruss
matze

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
matze schrieb:
> Hi, also ich bin um eine Erkenntnis reicher.

Nein. Bist du nicht.

matze schrieb:
> Der Controller funktioniert mit dem Code

Das ist Zufall.

Der Code muss auch für den 168 kompiliert werden, da es sich um zwei 
Controller handelt, die sich zwar sehr ähnlich, aber nicht gleich sind.

Der 168er hat z.B. 23 Interrupts, der 8er nur 19. Im Programmcode liegt 
hinter den Interruptvektoren die Initialisierung. Da hakt es dann das 
erste Mal. Deshalb läuft der 168er auch erst nach einem Hardwarerest, da 
die Initialisierung durch die Software nicht vernünftig ausgeführt 
wurde.

Kompilier das als 168er. Alles andere ist Schwachsinn.

mfg.

Autor: matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Thomas,

bei der Einstellung für den Compiler habe ich den 168 ausgewählt. Dass 
ich den Code für den entsprechenden Controller compilieren muss ist mir 
schon klar.

Noch als Info (ich weiss es ist nicht schön gelöst, aber es hat 
zumindest beim Atmega8 funktioniert):

Während das Gerät benutzt wird, kann es sein, dass es über zwei Tasten 
neu gestartet werden muss, um in einen anderen Modus zu kommen. Hierfür 
hab ich den Watchdog missbraucht. Werden die beiden Tasten zusammen 
länger als eine bestimmte Zeit gedrückt, wird der Watchdog aktiviert und 
es wird in eine Endlosschleife gesprungen.
if(taster1_ein && taster2_ein)
{
  reset_var++;
  if(reset_var>=2500)
  {
    wdt_enable(WDTO_15MS);
       while(1);
  }
}
else
  reset_var=0;

Wenn dieser Watchdog einmal ausgelöst wurde, startet der Controller 
nicht mehr.

Gruss
matze

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In diesem Dokument stehen alle Änderungen zwischen dem atmega8 und der 
atmega48/88/168 reihe AVR094: 
http://www.atmel.com/dyn/resources/prod_documents/...

Autor: matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So,
ich hab den Fehler, ich hab vergessen, das WDRF-Bit beim Neustart 
zurückzusetzen.
Trotzdem vielen Dank für eure Hilfe.

Gruss
matze

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.