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.
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.
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.
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.