Hallo! Bin ein totaler Anfänger, und gebe schon fast auf! Habe ein 8x2 LCD... ist aber glaube ich dasselbe wie 16x1! habe so ein programm geschreiben: $lib "lcd4busy.lbx" $regfile = "m32def.dat" $crystal = 16000000 Config Lcd = 16 * 1 Const _lcdport = Portc Const _lcdddr = Ddrc Const _lcdin = Pinc Const _lcd_e = 1 Const _lcd_rw = 2 Const _lcd_rs = 3 Cls Locate 1 , 1 Lcd "Hello world." Habe Atmega 16 genommen! Schlisse durch einen Wannenstecker ans Test-Programmierboard an! Board ist 100%ig in Ordnung.. ISP auch! Bekomme das Programm auf µC! LCD auch richtig verlötet!!! Bin Elektroniker, aber mit AVR, LCD keine Erfahrung! Also auf dem LCD Ist nichts! Muss man noch was beachten, was ich nicht weiss????? Bin schon echt am Verzweifeln......
ein paar fragen zur einstimmung: was für ein programiergerät benutzt du? Was für ein Test-Programmierboard hast du? (eigene elektronik oder was selbstgebautes?) Schonmal was auf den Controller geladen bekommen? und noch eien frage die mir selbst etwas blöd vorkommt: Was iss das für ne Sprache die du da benutzt? g Markus
Ein Selbstgebautes Programmierboard! Das soll basic sein. Das programm kann ich auf den Controller laden!
... "(eigene elektronik oder was selbstgebautes?)" nee iss klar.. gigl meine natürlich n gekauftes board oder was selbst gebautes.. nochwas.. Beschreib doch mal deine Umgebung etwas genauer.. (Software u.Ä.) g Markus
Meine Umgebung: Bin elektroniker für Geräte und Systeme... sitze jetzt gerade auf der arbeit, und versuche schon seit 7 Uhr morgens auf die Reihe zu kriegen! Klappt aber nicht! nochmal zum Board: Ist zwar selbstgebautes, funzt aber 100%ig! Lcd ist ein ganz einfaches ding mit 14 pins! Software: Bascom.
Also wenn du das prog hingeladen bekommst iss ja schonmal ok.. aber Basic... hmm.. muss gestehen: Da kenn ich mich net mit aus. Falls du gerade erst den Einstieg in die µC Technik machst... Würde ich dir raten C zu benutzen. Da gibt es hier viele hilfen für und es gibt auch libs für LCD module die sehr komfortabel zu bedienen sind. (möcht hier keine Diskusion lostreten! iss nur ein tip von mir.) Muss mich also hier ausklinken.. sorry.. Trotzdem noch viel Erfolg.. g Markus
schade :(((( Lade mal Layout von meinem Board hoch! Vllt kann mir jemand anderer helfen!!!! BITTTTEEEE!!!!!
@Alex in BASCOM hast Du die Möglichkeit Dein LCD mittels Konfiguration auf die diversen Pins einzustellen und das LCD auszuwählen: Options-Compiler-LCD Was Dein Code-Schnipsel angeht, weiss ich nicht, was das sein soll. LCD Ansteuerung könnte z.B. so aussehen: Config Lcd = 16 * 2 'LCD 16x2 konfigurieren Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.1 , Rs = Portb.0 Cls Upperline Lcd "Dies ist Zeile 1" Lowerline Lcd "Dies ist Zeile 2" Gruß
Hallo, bin zwar kein BASIC-Fan, aber was hat es mit der Bezeichnung " Config Lcdpin = Pin , Db4 = Portb.5..." auf sich? Genauer, was bedeutet hier das Wort "Pin"? Bevor hier einer klugscheißt: Ich meinte in der Syntax und nicht die wörtliche Bedeutung!!! Ansonsten: nimm das Tutorial (oben links) und gib das im Assembler ein! Das Studio kannst du dir ja eh kostenlos downloaden und um C wirst du auch nicht herumkommen! Viel Glück!!! Asterix-007
Hab mir gerade Dein Beschaltungsschema angesehen: Mein Code ist ein Beispiel, und Du solltest den Port entsprechend anpassen. Die nicht benutzten DB0 bis DB3 könntest Du am LCD mit GND verbinden.
@Asterix-007 "PIN" - Bascom kennt die Pinansteuerung und die Busansteuerung eines LCD.
@Alex Schau Dir mal Dein eigenes Beschaltungsschema an! Erst denken, dann proggen! Du beschaltest PortC und proggst auf PortB -> das kann nichts werden. Außerdem hast Du ein 8x2 LCD und konfiguerierst 16x2 -> ob das was werden kann? Bascom hat auch noch ne nette Hilfefunktion... Grüße
Leute, ich mach das Ganz einfach: Ich habe alles von Hier: http://www.roboternetz.de/wissen/index.php/LCD-Modul_am_AVR und zwar "4-Bit Ansteuerung mit Busy(I/O Mode)" Was stimmt da nicht??????
Schmeiss die Zeile $lib "lcd4busy.lbx" raus und leg PC.2 auf output ohne Pullup. Diese Busy/IO Geschichte ist was für die Katz...
Nimm aus dem Roboternetz die 4-Bit Ansteuerung OHNE Busy(I/O Mode). Dann wäre der Bascom-Code: $regfile = "m16def.dat" Config Lcd = 16 * 2 'damit läuft auch ein 8*2 LCD Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls Cursor off locate 1,1 Lcd "Zeile 1" locate 2,1 Lcd "Zeile 2" end Gruß
@Alex: Du kannst noch einen anrufen, den 50%-Joker nutzen oder das Publikum fragen.... Wie sehen denn Deine Programmierkenntnisse aus???? Ich denke du solltest oben links (wie vorhin schon vermerkt) das Tutorial lesen und durcharbeiten!!!! Ich glaube hier fehlen fundamentale Kenntnisse in der Programmierung und da erscheint es mir falsch gleich mit einem Display anzufangen!! Du solltest ganz einfach erst mal Ports mit LED's wackeln lassen (der Beweis das die Leitungen von dir in dem Programm richtig angesprochen werden) und dich dann dem Display widmen! Der Punkt 4 (im Tut.) ist ja schon die Displayansteuerung. Zu deinem Link: an den einzelnen Programmen wird nix falsch sein, nur entweder in Zusammenhang mit Deiner Hardware oder dein komplettes Programm selbst. Es ist schon immer schlecht in sich laufende Programmfragmente zusammen zu kopieren und dann zu erwarten das das funktioniert! Ich habe den Eindruck, bitte sei nicht böse, das Du hier schnell mal ein Display ansteuern willst, ohne Dich vorher mit den Grundlagen zu beschäftigen (da kenne ich noch jemanden ;-) ). Das geht aber meistens in die Hose!!!! Übrigens kannst Du sämtliche Quelltexte aus dem Tutorial in Dein Programm kopieren, die laufen sicher (Ein großes Lob mal an Andreas, falls das von ihm ist!!). Wenn Du klein anfängst, weißt Du was in den einzelnen Protgrammen passiert, so dass Du dann auch mehrere Teile zu einem großen Programm mergen kannst!! Aber wie das halt so ist, vor dem Preis hat auch hier der liebe Gott den Schweiß gesetzt!!!! mfg Asterix-007
also, ich kann es kaum glauben, aber es geht einfach nicht! Vielleicht ist auch Display kaputt, und ich reiss mir den Arsch auf! Danke an alle! Ich gebe es einfach auf!
Wird denn wenigstens eine Zeile auf dem Display schwarz (8 schwarze Kästchen)? Dann stimmt zumindest die Kontrasteinstellung (Konstrastspannung). Wenn nicht, könnte es ein Display welches eine negative Konstrastspannung an VEE haben muss. Die Anschlüsse müssen natürlich mit der Hard- und Software übereinstimmen. Sonst wird das nix. ATMega16 hat den Port C von PIN 22-29.
Ja, kontrast kann ich einstellen! Wird schwarz!wo port C ist, weiss ich auch! So blöd bin ich auch nicht, aber es funktioniert einfach nicht!!!!!!!! Am Liebsten würde ich jetzt die ganze scheisse vegschmeissen, und über alles vergessen! Sitze schon genau 8 stunden ohne pause umd kriege das nicht hin "Hallo World" angezeigt zu haben! Das nervigste ist, ich bin mir sicher, alles ist richtig verlötet!!!!!
@Alex: mag ja sein, das Du alles richtig verlötet hast!!! ABER, der Rest ist Software! Wie sieht es denn damit aus????? "Der Beginn einer jeden Katastrophe ist eine beschissene Vermutung..." (Zitat aus "Alarmstufe RotII") Wie wahr!! Kleiner Tip: Fange da an zu suchen, wo Du sicher bist, das alles richtig ist und funktioniert!!! mfg Asterix-007
hey.. nicht den Mut verlieren.. hab bis zu meinem ersten LCD funktionierenden ca. drei Tage gebraucht.. Nochmals den Tip: "Machs in C" wie eben schon von Asterix-007 angesprochen: Auf dauer wirst du nicht drumherum kommen. nimm dir Zeit und lies dich in die Materie ein.. dann wird das schon.. und die freude wenns nacher läuft (un man weiß warum) ist dann umso größer.. ;-) g Markus
ich habe nichts gegen C... Das problem ist.. ich fange an ein Tutorial zu lesen...... und schon ich der 3. zeile kommt das was ich nicht verstehe... es ist einfach da, und man weiss nicht, wochen man es genommen hat... also den Beispiel kann ich mir nicht erklähren.... wenn man weiter ließt, dann versteht man sowieso NICHT mehr!
hast du die fuse-bits gesetzt? am port c ist nämlich das jtag-interface und das muss man vorher per fuse-bit deaktivieren.
Also, wenn du nicht weist was die fuse-bits sind, dann duerfte das hier $crystal = 16000000 auch gelogen sein. Die Fuse-Bits sind sowas wie Konfigurationsschalter im µC. Normalerweise hat jedes Brennprogramm irgendwo einen Dialog oder eine Möglichkeit wie man die Dinger umstellen kann. WICHTIG: Sei vorsichtig damit! Man kann sich mit den Fuse-Bits ganz schnell aus dem µC aussperren. Du musst an 2 Baugruppen im Mega drehen: * Zum ersten musst du das JTAG Interface abschalten. Das krallt sich nämlich sonst ein paar Pins vom PortC, die dann für dich nicht mehr zur Verfügung stehen. Da du aber das LCD am PortC hängen hast, ... * Zum anderen kannst du im BASCOM noch so oft mitteilen, dass du einen Quarz mit 16 Mhz dran hängen hast. Das interessiert den Mega nicht die Bohne. Der richtet sich ausschliesslich nach den Fuse-Bits. Und in denen ist standardmässig eingestellt, dass der interne Oszillator den Takt liefert. Damit ist dein Quarz ein nettes Anhängsel, mehr aber auch nicht. Erst durch die richtige Stellung der Fuse-Bits wird der Quarz aktiviert. Habe ich schon gesagt? WICHTIG: Sei vorsichtig damit! Man kann sich mit den Fuse-Bits ganz schnell aus dem µC aussperren.
Ich weiss nicht ob ich das schon gesagt habe: :-) WICHTIG: Sei vorsichtig mit den Fuse-Bits! Man kann sich mit denen ganz schnell aus dem µC aussperren. Zum Bearbeiten der Fuse-Bits ist meistens ein Studium des Datenblattes des µC eine notwendige Voraussetzung! Das Forum hier wimmelt nur so von Fragen, die sich alle um dasselbe drehen: "Wollte den Quarz aktivieren und jetzt geht nichts mehr. Hilfe!"
@Alex: Hier hat sich meine Vermutung bzgl. Deiner Programmierkenntnisse und -fähigkeiten bestätigt. Ich kann Dir nur noch einmal das Tutorial empfehlen. Einfach Punkt für Punkt durcharbeiten und nebenbei auch mal in das Datenblatt des jeweiligen Atmels schauen!!! Das bringt Durchblick!!! Auch das GCC-Tut ist nicht schlecht (ich hab nur oberflächlich drüber geschaut) und erklärt bzgl. C sehr viel, auch mit Grundlagen! Also LESEN!!!!!! Und übrigens, alles der Reihe nach abarbeiten und nicht in der Mitte anfangen!!!! ;-)) @Adreas: vielleicht solltest Du in dem Tutorial noch ein Kapitel über die Fuses anhängen. Wäre für unsere Newbies bestimmt nicht schlecht!!! Und zum Schluß: "Künstler" kommt von "Können" und nicht von "Wollen"! sonst würde das "Wünstler" heißen ! Oder??? ;-) mfg Asterix-007
eine bequeme art die fuse-bits zu setzten bietet avr-studio von atmel. das kann man sich kostenlos bei atmel runterladen. ob es mit deinem selbstgebauten programmer funktioniert, kann ich dir leider nicht sagen. sorry. wenn du die möglichkeit hast, das lcd vorerst an einen anderen port anzuschließen, dann mach das doch und teste so deine ansteuerung des lcd. karl-heinz hat auch das problem mit dem quarz erkannt. der atmel ist per default auf 1 mhz interner oszillator eingestellt. du kannst also vorerst die zeile: $crystal = 16000000 rauskommentieren. du brauchst sie erst wenn du per fuse-bit auf externen oszillator umgestellt hast. viel erfolg!
P.S.: vielleicht listest Du mal die Dir zur verfügung stehende Hard- und Software auf und das, was Du machen willst! Dann haben wir einen Überblick und können gezielter helfen! mfg Asterix-007
> @Adreas: vielleicht solltest Du in dem Tutorial noch ein Kapitel > über die Fuses anhängen. Wäre für unsere Newbies bestimmt nicht > schlecht!!! Gibts doch schon http://www.mikrocontroller.net/articles/AVR_Fuses Ist schwer zu finden, ich weiss. Bin auch nur durch Zufall mal drüber gestolpert.
@H.K.: Dann sollte man drüber nachdenken, vielleicht noch eine Copy dorthin zu verlegen! Die Sache scheint mir zu wichtig um sie irgendwo zu "vergraben"!! Und die Fragen würden das ja bestätigen! Oder? mfg Asterix-007
Geb ich dir recht. Es gibt noch ein paar andere Dinge die im Tutorial gemacht werden muessten. Ein paar Leute stehen sicher schon in den Startlöchern und warten darauf, dass Andy die Tutorialseiten ins Wiki verlagert und den Zugriff darauf freigibt. Vielleicht erbarmt sich auch wer und kopiert die Texte 'aus der Ferne' auf ein paar Wiki-Seiten und bittet Andy den Link auszutauschen.
Die Anzeige würde auch mit den internen 1MHz laufen. Da kann er ja zu Sicherheit erst mal die Finger von den Fuses lassen. Leg die ganze Sache auf Port B und dann läuft dat dingen.
@Alex Die Geschichte mit den Fuses hat Hand und Fuß. In BASCOM hast Du auch die Möglichkeit die Fuses zu setzen, ist ein Reiter im Program-Fenster und ist zudem auch gut bezeichnet (was, was ist). Such Dir den Eintrag JTAG Enable/Disable heraus, setze ihn auf Disable und dann 'Rpogram Fuses High' (soweit aus meiner Erinnerung). Verändere sonst nichts an anderen Fuses... An sonsten kann ich mich den Anderen nur anschliessen. Grüße
Also! Ich habe es mit einem At8535 ??? probiert! Hat die selbe pinbelegung! Habe aber statt m16, m8535 geschrieben... alles andere so gelassen! FUNKTIONIERT!!!! Aber wieso geht das mit Atmega16 nicht??????????????????????????
Nochmal: * Gibst du immer noch am Port C aus? Ist das JTAG Interface abgeschaltet (falls du am C Port ausgibst)? * Läuft der Mega auch wirklich mit der Taktfrequenz, die du dem BASCOM mitteilst. Beide Punkte sind absolute K.O. Punkte.
ja, ich probiere immernoch mit port C Wie schalte ich JTAG Interface ab?? Nein, ich habe kein Quarz auf dem Board! Also mit 1Mhz.
Also jetzt weiss ich waran das liegt! Ich muss JTAG Interface abschalten! Sagt mal bitte, wie das geht. Am besten eine Code, wenn es geht! Wäre ich seeeeehhr dankbar!
Hallo ihr. Habe ein ähnliches Problem: Habe das DOGM162W-A Display (Kontroller st7036), allerdings sehe ich dort auch nichts. Kann mir mal jemand sagen, wie ich wenigstens den Kontrast so einstellen kann, dass alles schwarz wird, um zu sehen, ob es überhaupt funktioniert? Wollte es im 8Bit und 5V Modus betreiben. Habe soweit alles verlötet und gemessen, dass es funktionieren müsste. Benutze ATmega8515, AVR-GCC, 8MHz Quarz. Wofür stelle ich die fOSC des Displays ein? Habe alles wie in der mitgelieferten Kurzbeschreibung angeschlosse: VDD, VIN, VOUT, RESET, PSB auf +5V VSS, CSB aus GND RS, RW, D0-D7 an PORTB und PORTC des ATMega8515 Habe auch gemessen, dass alles korrekt angeschlossen ist und die Signale ankommen. Besten Dank im voraus, mgvfG Peter
also, du hast doch deinen mega16 auf external Crystal, also externen Quarz umgestellt, nur so geht der dann nämlich auf 16MHz, wie dus ja in Deinem Listing drinstehen hast. Dafür hast Du dann ja die Fuses geändert, indem du auf F4 gedrückt hast, damit das Programmer fenster aufgeht. Dann haste auf den Reiter Lock / Fuses geklickt und da auf Quarz (external Crystal) umgestellt. Dort in der Spalte gibts auch nen Menüpunkt JTAG eable/disable und da stellste halt auf disable ein und fertig. Das JTAG ist im Übrigen bei Allen Bausteinen serienmäßig aktiviert, also dicken Knoten ins Taschentuch
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.