mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD an PORTB ATmega8


Autor: Patrick R. (pat711)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe nun das selbe problem und hoffe ihr könnt mir behilflich sein.
Das Display ist folgendermaßen angeschlossen:
(nur Pins zum controller, versorgung ist auch dran und RW ist auf GND)
DB 4  ->  PB0
DB 5  ->  PB1
DB 6  ->  PB2
DB 7  ->  PB3
E     ->  PB5
RS    ->  PB4

Wenn ich nun den Controller flashe passiert erst mal nichts, wenn ich 
dann reset drücke verschwinden die schwarzen balken vom display, welche 
immer beim einschalten kommen.
An PB 6/7 (XTAL 1 und 2) ist ein 16MHz Quarz angeschlossen.
Das Display muss unbedint an diesen Port, da PortC als ADC verwendet
wird und an PORTD benötige ich die INT - Eingänge.
Um die Fehlersuche zu vereinfachen habe ich den Code auf ein minimales
reduziert (hoffe ich hab nichts vergessen).
thx schon mal an alle, die sich ein wenig zeit für mich nehmen

Mfg, Pat

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick R. schrieb:

> Wenn ich nun den Controller flashe passiert erst mal nichts, wenn ich
> dann reset drücke verschwinden die schwarzen balken vom display, welche
> immer beim einschalten kommen.

Das ist schon mal gut. Das bedeutet, dass die Initialisierung dann 
klappt.

Bau in dein Programm noch eine kleine Verzögerung nach dem Einschalten 
ein.
Auch der auf dem LCD vorhandene Controller benötigt ein wenig Zeit, bis 
er dann endlich aufnahmefähig ist.

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow, danke für die schnelle antwort,
hab jetzt mal ein delay von 1 sekunde eingabeut, das sollte ja 
eigentlich reichen. Das Programm sieht nun folgendermasen aus:
#include <avr/io.h>
#include "lcd-routines.h"
#include <stdlib.h>
#include <util/delay.h>

void long_delay(uint16_t ms) 
{
    for(; ms>0; ms--) _delay_ms(1);
}

int main(void)
{
  long_delay(1000);
  lcd_init();
  set_cursor(0,0);
  lcd_string("test");
  while(1)
  {
  }
  return 0;
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja sollte es.

Was ich noch fragen wollte:
Wenn du die Situation hast, dass der Balken verschwindet, kommt dann der 
Text? (Sollte eigentlich)

Wenn nicht: Hast du dann schon mal am Kontrast rumgedreht?

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kontrast ist auf vollem Kontrast. Und die balken die da verschwinden 
gehn einfach weg und dann kjommt da au nix mehr. Auch nicht wenn ich 
noch n paar mal resette. werde nun noch mal die pinbelegung überprüfen.
Achso, Hardware ist außerdem das Experimentierboard von pollin mit 
erweiterungsboard falls das jmd was sagt. Fürs STK500 hab ich noch kein 
display ^^.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick R. schrieb:
> Kontrast ist auf vollem Kontrast.

?

Ähm. Was soll das heißen.
Auf dieser Ebene gibt es keinen 'vollen Kontrast'. Du drehst am 
Kontrastpoti (so du eines hast) und stellst die Kontrastspannung so ein, 
dass du Zeichen lesen kannst.

'Voller Kontrast' ist ein Begriff für Benutzerweicheier. Auf der Ebene, 
auf der wir uns bewegen, stellen wir eine Spannung solange ein, bis sich 
optimale Bedingungen ergeben.

Welche Spannung misst du am Kontrasspannungseingang (gegen Masse)?
(meistens sind es so um die 0.5V. Da sollte man die Zeichen dann schon 
sehen, wenn auch nicht optimal. Die Feinarbeit macht man dann mit 
ruhiger Hand und einem Schraubenzieher)

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der Kontrast ist so eingestellt, dass die Zeichen optimal sichtbar sind, 
den hab ich eingestellt als ich das Display über PORTD angesteuert habe. 
Außerdem sind die schwarzen balken ja auch gut sichtbar und wenn ich an 
dem Kontrasttrimmer drehe werden sie undeutlicher.

ich vermute den fehler nun in dem übergang zwischen hauptplatine und 
erweiterungsboard, da ich vom pin 14 (PB0) keine verbindung zu dem dafür 
vorgesehenen pin habe.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick R. schrieb:
> der Kontrast ist so eingestellt, dass die Zeichen optimal sichtbar sind,
> den hab ich eingestellt als ich das Display über PORTD angesteuert habe.

Und am PORTD hats funktioniert, oder wie soll ich das jetzt verstehen?

Warum sagst du denn nicht gleich, dass du ein funktionierendes LCD vom 
PORTD auf PORTB umgehängt hast und dass es jetzt, am neuen Port nicht 
mehr geht. Dann such ich nach ganz anderen Dingen als wie wenn ich davon 
ausgehe, dass es überhaupt noch nie funktioniert hat.

> Außerdem sind die schwarzen balken ja auch gut sichtbar und wenn ich an
> dem Kontrasttrimmer drehe werden sie undeutlicher.

Wenn du an einem funktionierenden LCD weit genug am Trimmer drehst, 
sieht man auf manchem LCD nur noch schwarze Kästchen, selbst wenn da 
Text drauf steht.

Autor: Uwe N. (ex-aetzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl heinz Buchegger,

> 'Voller Kontrast' ist ein Begriff für Benutzerweicheier.

genau, und

> ... Schraubenzieher ...

aber auch ! ;)

Diesen "Begriff" konnte mein ehemaliger Fachlehrer einfach nicht leiden:
"Das heisst SCHRAUBENDREHER !"

Sorry für diesen OT !

Gruss Uwe

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schraubenzieher mag mein meister au nich ^^ xD

naja aber ich lern ja au nix mechanisches ^^

ich hab den fehler wies scheint nu gefunden...
Pollin hat wies scheint nen fehler am PORTB in dem Board oder meine 
Verbindungsflachbandleitung hat nen fehler...

werde mir nun mal ne alternative überlegen oder nen adapter fürs STK 500 
baun...

thx mal an alle die mir geholfen haben, wenns dann immer noch nicht geht 
werd ich mich melden.

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, vielen Dank nochmal.
Hier hab ich noch die Auflösung des Rätsels:

Dies ist vor allem für alle die interessant, die mit einem "Atmel 
Evaluationboard Ver. 2.01" mit einem "ADDON-BOARD Ver.1.0" verwenden.

Die Pinbelegung des PORTD ist richtig angeordnet, bei PORTB sieght es 
allerdings folgendermaßen aus:

Pollin Bezeichnung       verbundener Pin
       1                       -
       2                       -
       3                      PB0
       4                      PB1
       5                      PB2
       6                      PB3
       7                      PB4
       8                      PB5
       -                      PB6
       -                      PB7

!Achtung! Dies gilt nur bei dem 28 - poligen Sockel!!!
Bei den anderen PORTS habe ichs noch nicht durchprobiert.
Bei den teilen mit dem - hab ich nicht nachgeschut / nichts gefunden. Im 
schaltplan sind die Verbindungen übrigens auch nicht vorhanden.

MfG, Pat

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.