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
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.
d.h ich muss r/w auf gnd machen ?? und wie meinst du das ichs richtung controller offen lassen soll ?
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.
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
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.
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 ??
Wenn du so sorgfältig lötest, steckst und programmierst wie du auch schreibst, wird das nix. Sorry
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
>Config Lcdbus = 8
Ich kann zwar kein BASCOM, aber da würde ich es mal
mit einer 4 versuchen.
habs grad mit 4 probiert und es geht immer noch nicht
Siehst du überhaupt was auf dem Display? Schwarze Balken z.B.? Wenn nein dann dreh mal am Kontrast.
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
>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....
nein die schwarzen balkne kommen wen ich am kontrast volldreh
Der Ausgabebefehl für das LCD ist nicht print "Hallo" sondern Lcd "Hallo"
Vielleicht solltest du dir von hier das Handbuch herunterladen: www.mikrocontroller.net/articles/Bascom_AVR
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
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ß
habe ich alles auser initlcd und stat lcd habe ich print und im ersten beitrag von mir ist eine bas datei mit dem programm
>stat lcd habe ich print
Raffst du das nicht? print geht auf den UART und nicht aufs LCD.
Lcd geht aufs LCD.
Mit "print" schickst du die Daten an die Serielleschnittstelle, NICHT ans LCD.
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
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
ne hat nicht funktioniert und was ist mit denm stack ist doch ein fehler ??
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ß
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
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.
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
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
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ß
>bei mir sind nur die bits gesetz : spien sut1 cksel 3 cksel 2 chksel 1
sonst keine
was kan ich da noch machen wen alles nicht geht auser ein neues prog board zu kaufen ??
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.
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" ;-) )
Seinen Texten nach ist er beim lsd schon angekommen.
schau doch mal hier nach http://www.dieelektronikerseite.de/uC%20Ecke/Lections/LCD-Module%20-%20Der%20AVR%20hat%20viel%20zu%20sagen.htm cya The_ride
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
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...
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?
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 ??
z.B. die getesteten und bewährten lcd-routines.c aus dem Forum nehmen. Oder wiederhole ich mich etwa?
bei bascom giebts auch in den samplers die lcd routine
Danke für die Hilfe mein Display läuft dank lcd-routines.c :) cya The_ride
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.