Hi, ich habe schon öfter Arduino kompatible Projekte mit der DIP-Version des 328P als Stand-Alone µC gebaut und Lcds damit angesteuert. Jetzt wollte ich zum ersten mal die TQFP32 Version (ATMEGA328P-AU) benutzen und habe direkt einen kleinen Fehler auf der Platine aus China herstellen lassen. PORTB 2 ist nicht wie bei der DIP Version ein PWM Pin (Arduino Pin 10). Natürlich sollte der einzige in diesem Projekt genutzte PWM genau auf dem Pin liegen ;) Zum Glück war die PWM aber auch nur für den Lcd Kontrast zuständig, weshalb ich einfach einen in Reihe verbauten Widerstand aus dem gebauten Tiefpass entfernt habe um den Kontrastpin vom Rest der Schaltung zu trennen und ein 10kΩ Poti wie sonst auch immer mit dem Kontrastpin verbunden habe. Leider zeigt das Lcd aber überhaupt nichts an. Nachdem die Schaltung mit Spannung versorgt wird, ist für kurze Zeit die obere Zeile mit einem "Fehler" im 2. Zeichen zu sehen (Bild). Diese verschwindet dann aber nach kurzer Zeit vollständig(ist ein Faden, als ob da irgendwie ein Kondensator involviert ist). Ich nutze übrigens die LiquidCrystal Library zum Ansteuern. Datenblatt vom Lcd: http://www.lcd-module.de/pdf/doma/dips082.pdf Hat jemand schonmal was ähnliches gehabt oder kann mir Hinweise auf das Problem liefern?
Hallo, Üblich wäre es den gesamten Quellcode und einen Schaltplan, evtl, mit Bild an zu hängen. So wächst nur der Aufwand, derer die Dir helfen könnten, aber es nun nicht machen.
>Ich nutze übrigens die LiquidCrystal Library zum Ansteuern.
Ich nutze übrigends Messer und Gabel zum Essen;)
Den Rest (und komplett funktionierenden Teil) der Schaltung habe ich mal aus dem Schaltplan rausgenommen. Wie gesagt, der "contrast" Pin ist an dem mittleren Pin eines von VCC zu GND verbundenen 10k Poti Quellcode: #include <LiquidCrystal.h> #define lcdRsPin 9 #define lcdEnPin 8 #define lcdD7Pin 7 #define lcdD6Pin 6 #define lcdD5Pin 5 #define lcdD4Pin 4 // initialize lcd( RS EN D4 D5 D6 D7) LiquidCrystal lcd(lcdRsPin, lcdEnPin, lcdD4Pin, lcdD5Pin, lcdD6Pin, lcdD7Pin); void setup() { lcd.begin(8, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Hello"); lcd.setCursor(0, 1); lcd.print("World!"); } void loop(){ }
holger schrieb: > Ich nutze übrigends Messer und Gabel zum Essen;) Ja gut, wenn es mal effizient sein soll benutze ich auch schonmal Code der die Ports direkt ansteuert oder einen 74HC595 mit SPI...Aber wenn Geschwindigkeit egal ist Messer und Gabel;)
Auf http://arduino.cc/en/Tutorial/LiquidCrystal wirds gut erklärt find ich. Hast du dein LCD so verbunden wie auf deinem bild? So wie das aussieht hast du GND mit VCC verbunden. Stimmt das :O?
Habs mir gerade angesehen, sollte eigentlich so funktionieren. Die includete datei wird gefunden? Hast du eventuell einen attiny2313 zuhause? Damit könnte man mal testen ob das Display noch funktioniert.
Daniel schrieb: > PORTB 2 ist nicht wie bei der DIP Version ein PWM Pin Warum sollten µCs in unterschiedlichen Gehäuseformen nicht kompatibel sein? PB2 ist zu 100% ein PWM Pin. Sollte das aus irgendwelchen Gründen in den Arduino-Libs nicht funktionieren, so wäre wieder mal bewiesen was für ein Schrott das ist.
Hast du das Display mit einer externen Stromversorgung verbunden? In dem fall musst du, denk ich GND mit dem Arduino verbinden.
Fallobst schrieb: > Daniel schrieb: >> PORTB 2 ist nicht wie bei der DIP Version ein PWM Pin > > Warum sollten µCs in unterschiedlichen Gehäuseformen nicht kompatibel > sein? PB2 ist zu 100% ein PWM Pin. Sollte das aus irgendwelchen Gründen > in den Arduino-Libs nicht funktionieren, so wäre wieder mal bewiesen was > für ein Schrott das ist. Hi, ich hatte ursprünglich die im Schaltplan zu sehende Pinbelegung aus dem Datenblatt "kopiert", dann aber das hier gefunden http://www.hobbytronics.co.uk/arduino-atmega328-pinout wo PORTB2 kein PWM hat. Könnte sein, dass das Bild in dem Link einfach falsch ist was gut wäre, weil ich dann die existierende Platine ohne Mods nutzen könnte. Langsam habe ich den Eindruck, dass auch einfach das Lcd defekt sein könnte.
Daniel schrieb: > #define lcdRsPin 9 > #define lcdEnPin 8 > #define lcdD7Pin 7 > #define lcdD6Pin 6 > #define lcdD5Pin 5 > #define lcdD4Pin 4 Ich würde mal sagen, da stimmt garnichts.
Probier mal diese Lib: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=102296 Der Vorteil ist, man braucht keine merkwürdigen Pin-Nummern, sondern gibt die richtigen Portbezeichnungen aus dem Datenblatt an.
Peter Dannegger schrieb: > Daniel schrieb: >> #define lcdRsPin 9 >> #define lcdEnPin 8 >> #define lcdD7Pin 7 >> #define lcdD6Pin 6 >> #define lcdD5Pin 5 >> #define lcdD4Pin 4 > > Ich würde mal sagen, da stimmt garnichts. Ihr wolltet den Code ja haben ;) Das sind die Pins der Arduino IDE und ich habe eben auf der Arbeit die Signale mit einem Oszi gecheckt. Es kommen die richtigen Signale am Display an. Also, die Pins stimmen und die Leiterbahnen auf der Platine sind auch i.O.
Hallo, man könnte einfach mit Peters LCD Lib ein Testprogramm mit avr gcc schreiben, um die LCD zu testen. Ich habe die LCD Lib auch im Einsatz und sie funktioniert. Tipp: Schreibe dir ein Testprogramm ohne Arduino Code. Frage: auf welchen CRam Adressen liegen die Zeile 1 und 2 ? .
Daniel schrieb: > Also, die Pins stimmen und die Leiterbahnen auf der Platine sind auch > i.O. Na wenn Du meinst. Mit Deinem geposteten Schaltplan besteht jedenfalls keinerlei Übereinstimmung. Und warum funktioniert es dann nicht.
Daniel schrieb: > Jetzt wollte > ich zum ersten mal die TQFP32 Version (ATMEGA328P-AU) benutzen und habe > direkt einen kleinen Fehler auf der Platine aus China herstellen lassen. > PORTB 2 ist nicht wie bei der DIP Version ein PWM Pin (Arduino Pin 10). Was du hier schreibst ist nicht ganz klar. Egal ob TQPF oder DIL, OC1B ist in beiden Versionen auf PB2. Es gibt auch einen Arduino UNO in SMD, auch bei diesem ist der PWM-Pin, OC1B auf den Arduino Pin 10. Die Pin-Nummerierung und daher auch die Port-Zuordnung der TQPF-Version, 32 Pin, stimmt allerdings mit der Pin-Nummerierung der DIL-Version, 28 Pin, nicht überein.
Den Arduino Pinzugriff über Nummern halte ich generell für eine sauschlechte Idee. Dem Chaos sind damit Tür und Tor geöffnet, da je nach Typ und Bauform alles anders ist. Und für das Zurück-Mappen in die echten Pinbezeichnungen muß die Arduino-Lib einen riesen Overhead an Code und Laufzeit erzeugen. Würde man gleich die Pinbezeichnungen verwenden, ist der Zugriff kein schnarchlahmer Funktionsaufruf, sondern nur ein einziger Befehl.
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.