Forum: Mikrocontroller und Digitale Elektronik pollin programmer +addon board lcd ansteuern


von Kersio (Gast)


Angehängte Dateien:

Lesenswert?

Hi an Alle,
Ich bin erst seit einer woche -/+paar tage
am programmieren dran und hab mir das pollin programmier board +addon
gekauft und einen ATmega32.
dan hab ich mich mal hingesetz und mit bascom ein lauflicht geschrieben.
Jezt wollt ich aber noch den lcd ansteuern aber ich bin mir nicht sicher
ob das so richtig ist wie ich das gemacht haben einen teil für den 
display habe ich aus
den samplers von bascom genommen und nur die ports verändert.
habe schon einiges auspobiert aber nichts, ich nehm mal an das ich
irgendwo ein fehler habe weis aber jezt nicht wo .
das lauf licht funktioniert einwand frei mit 8 led`s.
Bedanke mich schonmal im voraus für die hilfe



(und and alle die rechtschreib fehler finden dürfen sie behalten ich
will nur hilfe und kein deutsch unterricht^^)

kersio

von Hubert G. (hubertg)


Lesenswert?

Auf dem Board wird für das LCD das R/W auch benötigt. In deinem Programm 
allerdings nicht vorgesehen.
Du müsstest R/W Richtung LCD auf GND legen, Richtung Kontroller aber 
offen lassen.

von Kersio (Gast)


Lesenswert?

d.h ich muss r/w auf gnd machen ??
und wie meinst du das ichs richtung
controller offen lassen soll
?

von Hubert G. (hubertg)


Lesenswert?

R/W musst du auf GND legen. Wenn du das allerdings fest machst, dann 
liegt auch am Kontrollerpin der GND an. Wenn du den dann auf Ausgang und 
high schaltest, dann kannst du den Port zerstören.
Du kannst aber in deinem Programm den Pin auf GND legen und weiter nicht 
benutzen, zum Testen wird es gehen, halte ich aber sonst für gefährlich.

von Kersio (Gast)


Lesenswert?

ahso ein rw auf gnd und das wars dah ichs ja nicht fest habe sondern mit 
steck brucken
muss ich auch nichts weiter machen  ,
und mit der sofware stimmt auch alles ?
wen du sie dir angeguckt hast

von Hubert G. (hubertg)


Lesenswert?

Mit BASCOM kenne ich mich nicht aus, verwende die LCD aber selbst mit 
und ohne R/W.
Probier es einfach aus, es kann nichts passieren.

von Kersio (Gast)


Lesenswert?

mhh geht mit beidem nicht ??
hab alles angeschlossen von 4-7 +e ncrw rs alles und ncihts liegts nicht 
an meiner sofware ?
displa ist angelotet aufs board vill solt man den weg machen ??

von Klaus W. (mfgkw)


Lesenswert?

Wenn du so sorgfältig lötest, steckst und programmierst wie du auch 
schreibst, wird das nix.
Sorry

von Bernard H. (benben)


Lesenswert?

beim löte bin ich mir sicher ich arbeite bei ner firma vo ich 8 stunden 
nur smd teile löte unteranderren atmel chips in smd mit 182 also bei den 
teilen wo auf dem board waren hatte ich keine probleme
ich weis nicht obs hilf aber bd 0 -3 sind nciht angeschlossen
hab gelsene das man die nciht braucht ?? oder

von holger (Gast)


Lesenswert?

>Config Lcdbus = 8

Ich kann zwar kein BASCOM, aber da würde ich es mal
mit einer 4 versuchen.

von Bernard H. (benben)


Lesenswert?

habs grad mit 4 probiert und es geht immer noch nicht

von holger (Gast)


Lesenswert?

Siehst du überhaupt was auf dem Display?
Schwarze Balken z.B.? Wenn nein dann dreh mal am Kontrast.

von Bernard H. (benben)


Lesenswert?

ja das funktioniert auch am kontras spiel ich auch jedesmal rum nach den 
programierren um zu sehn ob ichs falsch eingestellt hab abber nichts nur 
schwarze balken oder garnichts

von holger (Gast)


Lesenswert?

>nur schwarze balken

Schwarze Balken heisst: Init nicht erfogreich.

1) Anschlüsse passen nicht zum Programm
2) Leitung offen
3) Kurzschluss
4) Timing im Programm falsch, Taktfrequenz höher als im Programm 
eingestellt

Oder das Display ist nicht kompatibel zum HD....

von Bernard H. (benben)


Lesenswert?

nein die schwarzen balkne kommen wen ich am kontrast volldreh

von holger (Gast)


Lesenswert?

Ho, ho!

>print " hallo "

Lcd " hallo "

von Bernard H. (benben)


Lesenswert?

print in lcd änder? oder was sol das heisen ??

von Hubert G. (hubertg)


Lesenswert?

Der Ausgabebefehl für das LCD ist nicht
print "Hallo"
sondern
Lcd "Hallo"

von Hubert G. (hubertg)


Lesenswert?

Vielleicht solltest du dir von hier das Handbuch herunterladen: 
www.mikrocontroller.net/articles/Bascom_AVR

von Bernard H. (benben)


Lesenswert?

Example
$regfile = "m48def.dat"
$crystal = 4000000
$baud = 19200
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 ,
Databits = 8 , Clockpol = 0
Print "Hello"
'Now change the baud rate in a program
Baud = 9600
Print "Did you change the terminal emulator baud rate too?"
End




ist aus der pdf datei um mit lcd geht nicht mal die simulation

von Martin S. (tinotino)


Lesenswert?

So sollte dein Progamm aussehen; Pins natürlich angepasst.
R/W deines LCD´s mit 10 Ohm an Masse.
Pin 4-7 angeschlossen + RS + E
-------------------------------------

$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32                      ' default use 32 for the hardware 
stack
$swstack = 20                       ' default use 10 for the SW stack
$framesize = 40                     ' default use 40 for the frame space

Config Lcdbus = 4

' hier werden deine LCD Pins eingestellt
Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.3 , Db6 = Porta.4 ,
Config Lcdpin = Pin , Db7 = Porta.2 , E = Portb.0 , Rs = Portb.1

'dein Display 16= 16 Zeichen pro Zeile   *2 = zwei Zeilen
Config Lcd = 16 * 2

Initlcd      'muss nicht unbedingt sein
 Cls
 Locate 1 , 1
 Lcd "Hallo Welt"

END
--------------------------

Gruß

von Bernard H. (benben)


Lesenswert?

habe ich alles auser
initlcd und stat lcd habe ich print

und im ersten beitrag von mir ist eine bas datei mit dem programm

von holger (Gast)


Lesenswert?

>stat lcd habe ich print

Raffst du das nicht? print geht auf den UART und nicht aufs LCD.
Lcd geht aufs LCD.

von Martin S. (tinotino)


Lesenswert?

Mit "print" schickst du die Daten an die Serielleschnittstelle, NICHT 
ans LCD.

von Bernard H. (benben)


Angehängte Dateien:

Lesenswert?

achso mhh hab ja gesagt das das mein erstes richtige programm ist und 
mit lcd gehts immer noch nciht hab noch mal die bas datei hochgeladen 
habs se jezt mal so weit ich konnte verändert und wollt jezt wissen obs 
past

von Martin S. (tinotino)


Lesenswert?

Teste bitte mal nur das!


Bei Config Lcdpin noch deine PINS eintragen
-->  Config Lcdpin = Pin , Db4 =......

-------------------------------

$regfile = "m32def.dat"            ' specify the used micro
$crystal = 1000000                  ' used crystal frequency

$hwstack = 32                     ' default use 32 for the hardware 
stack
$swstack = 10                     ' default use 10 for the SW stack
$framesize = 10                 ' default use 40 for the frame space

Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.3 , Db6 = Porta.4 ,
Config Lcdpin = Pin , Db7 = Porta.2 , E = Portb.0 , Rs = Portb.1

Config Lcd = 16 * 2

Config Lcdbus =

Initlcd
Cls
Locate 1 , 1
Lcd " hallo"

End

von Bernard H. (benben)


Lesenswert?

ne hat nicht funktioniert


und was ist mit denm stack ist doch ein fehler ??

von Martin S. (tinotino)


Lesenswert?

Hallo,
du hast recht, das zweite stack muss weg.
Kommt vom Zeilenumbruch im Textfeld.
Es gehört hierzu:  ' default use 32 for the hardware """stack"""

Das Programm ist, bis auf das "stack",aber i.O.

Hast du die LCD Pins angepasst?? Ich weis ja nicht, wie das LCD 
angeschlossen ist.

Läuft der Atmega 32 wirklich nur mit 1Mhz, Pollin hat doch einen 16MHz
Quarz auf dem Board. -->Bei dir:    $crystal = 1000000
Kannst du mal die FUSE überprüfen.

Ist der RW Pin deines LCD´s über einen 10KOhm auf Masse?

Gruß

von holger (Gast)


Lesenswert?

Config Lcdbus =

Da fehlt die 4.

von Martin S. (tinotino)


Lesenswert?

Richtig die "4" habe ich unterschlagen!

$regfile = "m32def.dat"
$crystal = 1000000                  ' DEIN Takt !!! Fuse Bits beachten

$hwstack = 32
$swstack = 10
$framesize = 10

Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.3 , Db6 = Porta.4 ,
Config Lcdpin = Pin , Db7 = Porta.2 , E = Portb.0 , Rs = Portb.1

Config Lcd = 16 * 2

Config Lcdbus = 4

Initlcd
Cls
Locate 1 , 1
Lcd " hallo"

End

von Martin S. (tinotino)


Lesenswert?

Hallo,
ich habe mir mal den Schaltplan vom Pollin geholt.
Du hast ja nur am Addon Board 13 Jumper für´s LCD + die Jumper am 
Eva-board.
Ich denke, du hast einfach eine oder mehrere Jumper, falsch gesetzt.
dank Holger haben wir den letzten Softwarefehler beseitigt- der Rest ist 
der Hardware zu zuschreibe.

von Bernard H. (benben)


Lesenswert?

ja hab mit stk500  den internen oszilator auf 1mhz gesetz deswegen
$crystel´=1000000
und wegen den jumpern habe keine jumper gesetz habe eigenes programm 
verwendet und deswegen steck brücken gesetz nun ja jezt hab ich mal den 
lcd runter gelötet und versuchs mal so dran zumachen mit kabel um einen 
platinen kurzschlus oder hardware fehler ausschliesen
nun ja
ich erstatte nacher mal ein bericht wie weit ich gekommen bin

von Bernard H. (benben)


Lesenswert?

mhh habe jezt mal den display runter gelötet die stift leiste vermuttete 
da einne kurz schlus hab die bahnen vervolg habe den display mal hin 
gesteckt ohne steck leist aber nichts iwi ist displa schrot oder es ist 
was andres man man man ich weis nicht was los istnormal solst doch jezt 
tun ?? mhh solangsam verzweifel ich

von Martin (Gast)


Lesenswert?

Hat der Atmega32 nicht Jtag, denke schon.
Deaktiviere in den Fuse dieses mal.

siehe:http://www.holger-klabunde.de/avr/avrhelp.htmJTAGEN Fuse

"Wer diese Fuse brennt kann die Pins TMS, TCK, TDI, TDO im Programm 
nicht mehr benutzen weil sie für die JTAG Schnittstelle reserviert 
werden. Diese Fuse ist im Auslieferzustand aktiv ! Wer die Pins braucht 
muß die JTAGEN Fuse auf 1 setzen."

Gruß

von Bernard H. (benben)


Lesenswert?

>bei mir sind nur die bits gesetz : spien  sut1  cksel 3  cksel 2 chksel 1

sonst keine

von Bernard H. (benben)


Lesenswert?

was kan ich da noch machen wen alles nicht geht auser ein neues prog 
board zu kaufen ??

von Hubert G. (hubertg)


Lesenswert?

Du kannst noch jede Leitung vom KOntroller zum LCD messen, ob eine 
Verbindung besteht und auch ob kein Kurzschluss zu einer anderen 
Leitung, GND oder VCC besteht.

von Daniel F. (df311)


Lesenswert?

Bernard Hamzaj schrieb:
> was kan ich da noch machen wen alles nicht geht auser ein neues prog
> board zu kaufen ??

mit einem kleineren programm anfangen, da du ja (laut erstem beitrag) 
erst seit kurzem programmierst.

versuch doch, die einzelnen programm aus dem asm-tutorial (in bascom 
wenns schon das teil sein muss) nachzuprogrammieren. wenn du dann zum 
lsd gekommen bist, dann solltest du dir auch schon einiges an wissen 
angeeignet haben, um grundlegende probleme mit dem programm selbst zu 
lösen/finden.

und wie schon vorgeschlagen das zur programmiersprache/ide passende 
handbuch besorgen - gilt insbesondere für bascom, da dort viele 
funktionen "irgendwie" gekapselt sind (kenne die details nicht, deshalb 
"irgendwie" ;-) )

von Klaus W. (mfgkw)


Lesenswert?

Seinen Texten nach ist er beim lsd schon angekommen.

von The_ride (Gast)


Lesenswert?


von The_ride (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe da auch mal eine Frage

Mein Source (Anhang) hat keine Fehler beim Compelieren
und trotzdem sehe ich nichts auf meinem Display :(
der Cursor blinkt in der Mitte anstatt am Anfang
ich habe versucht ein Bascom Programm in C umzusetzen
heute ist mein 2. Tag mit C Programmierung.
Bitte nicht lachen wenn etwas Falsch ist ;)

Danke schon mal für die Hilfe

cya The_ride

von Klaus W. (mfgkw)


Lesenswert?

hm, eine etwas eigenwillige Lösung.

1. Mit eienr halbwegs gängigen Formatierung (Einrückung etc.)
wird der Quelltext deutlich lesbarer; dann macht es mehr Spaß....

2. Es gibt hier im Forum bereits fertige Lösungen, um einen LCD
anzusprechen. Dann muß man nicht bei jedem einzeln die Fehler suchen.

3. Muß man zwischen Enable an und aus nicht eine gewisse Zeit warten?

4. Anstatt 50 mal eine msec zu warten, kann man auch gleich 50 msec
warten: _delay_ms( 50 );

5. Etwas Kommentar wäre nicht schlecht; z.B. an welche Pins was
angeschlossen ist, ob man das LCD im 4-Bit- oder im 8-Bit-Modus
betreiben will etc..
Ich kann es mir zwar auch mühsam aus dem Quelltext herausholen, aber
es ist eigentlich deine Sache, das hin zu schreiben.

5. Mit PORTB = rsein setzt man PORTB komplett (alle 8 Bit), ein
anschließendes PORTB = enein setzt ebenfalls den kompletten Port
und überschreibt damit das vorherige rsein. So geht es natürlich
nicht.
Richtig wäre, mit |=... einzelne Bits zu setzen und mit &= ~...
welche zu löschen.
Siehe die fertigen lcd-routines.c, die hier im Forum zu finden sind...

von Klaus W. (mfgkw)


Lesenswert?

ach so, dann noch was: Wenn ich deine merkwürdigen Einrückungen
versuche nachzuvollziehen, dann steht am Ende der while-Schleife
ein exit(1).

Das gibt dann nicht viele Schleifendurchläufe, oder?

von Bernard H. (benben)


Lesenswert?

ich hab mir nun mal gester bei pollin en lcd und ein meaga 8 bestell und 
test dan mal meine software an dem andren display vill lieghts ja auch 
an dem display oder giebts da ne methode zu testen ??

von Klaus W. (mfgkw)


Lesenswert?

z.B. die getesteten und bewährten lcd-routines.c aus dem Forum nehmen.
Oder wiederhole ich mich etwa?

von Bernard H. (benben)


Lesenswert?

bei bascom giebts auch in den samplers die lcd routine

von Peter H. (the_ride)


Lesenswert?

Danke für die Hilfe mein Display läuft dank lcd-routines.c

:)

cya The_ride

von Bernard H. (benben)


Lesenswert?

so jezt hab ich einen neuen display un zwar display tech 404b ich 
probiers mal mit dem

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.