www.mikrocontroller.net

Forum: Compiler & IDEs avr-libc tutorial


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich bin gerade dabei, aus dem avr-libc Tutorial das Beispiel stdiodemo
durchzuprobieren. Allerdings versuche ich, das Ganze auf einem Mega8
zum Laufen zu bringen, da ich keinen Mega16 zur Hand habe.
Dazu also das Makefile angepasst, das LCD an Port B anstatt A
angeschlossen und den #define für den Port geändert.
Leider scheint bei der LCD-Initialisierung etwas schief zu gehen:
Kommentiere ich lcd_init() aus, funktioniert das Programm (der UART
Teil), mit der Funktion drin geht nix. Ich konnte sogar so weit
eingrenzen, dass ein Zugriff auf DDRB (zum Umschalten der Portrichtung)
anscheinend das Programm zum Absturz bringt (leider nicht immer
konsequent reproduzierbar). Zugriffe auf DDRC und DDRD sind kein
Problem.

Ich bin gerade ziemlich ratlos.
Hat jemand ne Idee dazu?

Tom

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

Bewertung
0 lesenswert
nicht lesenswert
Habe es jetzt selbst mal ausprobieren können.

Gehangen hat bei mir nichts, trotzdem ging die LCD-Ausgabe erst einmal
nicht.  Da ich das Ganze aber auf einem STK500 gestöpselt habe, hab'
ich mir das mit dem Pinout dann noch einmal genau angesehen.  PB6 und
PB7 beim ATmega8 waren ursprünglich (d.h. beim AT90S2333/4333) keine
GPIO-Pins, sondern ausschließlich Taktpins.  Damit sind diese Pins der
STK500-Fassung SCKT3200A2 nicht an PB6/PB7, sondern an XT1/XT2
geroutet.  Wenn ich mein LCD-Display entsprechend umstöpsele und den
XTAL-Jumper des STK500 ziehe (damit der XT1-Pin auch frei ist),
funktioniert das Demo auch mit einem ATmega8 ohne weitere Änderungen
als den von dir genannten (also HD44780_PORT in defines.h und
MCU_TARGET im Makefile).

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich hab das Ganze jetzt auch am Laufen, nach einiger Sucherei hab ich
herausgefunden, dass das Programm bei der Abfrage des BUSY Flags stehen
bleibt.
Mit einer etwas konservativeren Einstellung des LCD Timings gehts dann
auch relativ zuverlässig, aber ab und zu geths auch wenn ich die
originale Datei (und Timings) nehme. Komisch...
Wenn ich schon nen halben Tag suche, möchte ich doch wenigstens wissen,
warums jetzt geht ;-)

Tom

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

Bewertung
0 lesenswert
nicht lesenswert
Ja, würde mich auch interessieren.

Ich habe mir zumindest die größte Mühe gegeben, mich an die
Timing-Werte des HD44780-Datenblatts zu halten.  Andererseits
ist das Timing ohnehin nur während der Initialisierung
entscheidend, danach wird ja alles via BUSY abgefragt.

Du kannst ja mal auf Verdacht die Wartezeiten in der
HD44780-Initialisierung vergrößern und dann gucken, welche
davon für dein Problem zuständig ist.  Kann schon sein, dass
der eine oder andere HD44780-Clone sich hier anders verhält.
Wenn du was gefunden hast, schicke mir bitte eine Mail oder
schreibe einen Bug-Eintrag bei avr-libc, damit wir das dort
auch ändern können.

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.