Hi, hab jetzt ein paar Stunden damit verbracht das Forum und Google zu durchstöbern, aber ich finde einfach nicht was ich brauche oder kann die Funde nicht erfolgreich nutzen. Hoffe hier kann mir jemand weiterhelfen. Ich bin noch ziemlich am Anfang mit all dem Zeug. Was ich bisher habe: Sainsmart ATMega 2560 Board -> http://www.ebay.de/itm/SainSmart-Mega2560-1602-LCD-Keypad-Prototype-Shield-Kit-For-Arduino-ATMEL-ATMEGA-/320878489546?pt=Wissenschaftliche_Ger%C3%A4te&hash=item4ab5d92fca#ht_7521wt_1397 Atmel Studio 6 lauffähig und kann damit Code aufs Board laden Da ich in C/C++ programmieren möchte und nicht in der Arduino Sprache, suche ich eine library zur Ansteuerung des LCD. Auf http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung steht viel Interessantes, allerding schaffe ich den Code nicht zum laufen zu bringen. Gleiches gilt für die http://homepage.hispeed.ch/peterfleury/avr-software.html#libs lib. In beiden muss man einige Anpassungen machen. Soweit ich das verstehe die Taktfrequenz des Chips (16000000 Hz) und den Port des LCD setzen. Da hab ich PORTA bis PORTH durchprobiert, aber nix geht davon. Habe ich die falsche library? Bin für jeden Hinweis dankbar.
Andi C. schrieb: > Da hab > ich PORTA bis PORTH durchprobiert, Was heißt: du hast durchprobiert? Das LCD ist an einem Port physikalisch angeschlossen und den benutzt du. Wenn du weg von den Arduino Libs willst, dann musst du dich daran gewöhnen dass es da eben keine standardisierten Anschlüsse gibt und die Libs das wissen und benutzen. Du bist dafür verantwortlich, dass das alles korrekt eingestellt wird. Schaltplan raus und Leitungen verfolgen. Welche Leitung vom LCD geht zu welchem µC-Pin? Dann wird das auch was.
>>Da ich in C/C++ programmieren möchte und nicht in der Arduino Sprache,
Und ich dachte immer, der Compiler hinter dem Arduino wäre ein avr-g++.
Jedenfalls gingen alle C++ Klassen, die ich probiert habe. Habe ich wohl
Glück gehabt.
Da muss man den Jungs von Arduino schon gratulieren, dass ihre eigene
Sprache wohl auch eine Untermenge von C++ versteht.
okay, ich versuche das mal zu verstehen ... auf http://arduino.cc/en/Hacking/PinMapping2560 ist das mapping der pins von controller zum board nachzulesen. wenn ich nun auf die lcd platine schaue, dann ist das lcd mit den pins 0 bis 13 vom board verbunden, welche wieder rum recht chaotisch mit dem chip verbunden sind. d.h. in nicht aufeinanderfolgenden ports/pins. ich muss also nun für den folgenden code bereich genau herausfinden welcher port/pin der richtige ist für jede zeile hier, richtig?
1 | #define LCD_PORT PORTH /**< port for the LCD lines */ |
2 | #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ |
3 | #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ |
4 | #define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */ |
5 | #define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */ |
6 | #define LCD_DATA0_PIN 0 /**< pin for 4bit data bit 0 */ |
7 | #define LCD_DATA1_PIN 1 /**< pin for 4bit data bit 1 */ |
8 | #define LCD_DATA2_PIN 2 /**< pin for 4bit data bit 2 */ |
9 | #define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */ |
10 | #define LCD_RS_PORT LCD_PORT /**< port for RS line */ |
11 | #define LCD_RS_PIN 4 /**< pin for RS line */ |
12 | #define LCD_RW_PORT LCD_PORT /**< port for RW line */ |
13 | #define LCD_RW_PIN 5 /**< pin for RW line */ |
14 | #define LCD_E_PORT LCD_PORT /**< port for Enable line */ |
15 | #define LCD_E_PIN 6 /**< pin for Enable line */ |
es fällt mir schon schwer zu glauben, dass das nirgends im forum oder bei google zu finden ist. so exotisch ist die hardware und mein problem doch gar nicht hätt ich gedacht. aber grundsätzlich bin ich also richtig mit der library, die ich da nutzen möchte?
Andi C. schrieb: > es fällt mir schon schwer zu glauben, dass das nirgends im forum oder > bei google zu finden ist. Stell dir mal vor. Es gibt doch tatsächlich Dinge, die hat man schneller selber gemacht, als danach gegoggelt. PS: wenn man faul ist, dann nimmt man ein Multimeter mit Durchgangsprüfer. Eine Messstrippe auf den ersten 'Datenpin' vom LCD (also nicht gerade die Versorgungspins), und mit der anderen Messstrippe fährt man am µC alle Pins durch. Bei irgendeinem Pin schlägt der Durchgangsprüfer an und piepst. Pinnummer abzählen, im Datenblatt des µC nachsehen, wie seine Bezeichnung ist und auf einem Blatt Papier notieren, welcher Pin vom µC zu welchem Pin vom LCD führt. Das dauert für einen einzelnen Pin keine 30 Sekunden. Die 7 relevanten LCD-Verbdindungen hat man in weniger als 10 Minuten durchgeklingelt. Im lcd.h entsprechend eintragen und wenn man keinen Fehler gemacht hat - dann muss das funktionieren.
was mache ich denn mit dem LCD_RW_PORT und LCD_RW_PIN? die hängen am GND.
Andi C. schrieb: > was mache ich denn mit dem LCD_RW_PORT und LCD_RW_PIN? die hängen am > GND. Ganz einfach. Dann kannst du die Fleury Lib (erst mal) nicht benutzen. Denn die ist darauf ausgelegt, an diese Pins ranzukommen. Also entweder umschreiben (was relativ leicht möglich ist) oder eine andere LCD Lib benutzen.
Hallo ! Peter Dannegger (peda), hat eine eigene LCD Bibliothek geschrieben. *Basisdownload*: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=102296 Ich habe sie mir etwas angepasst und alles nochmal als ZIP Datei gespeichert. Damit kannst Du Erfolgreich sein - viel Spaß damit ! .
vielen dank. endlich mal code, der funktioniert!
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.