PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega 644-P mit LCD auf Steckbord



Ampelmännchen
14.08.2016, 12:51
Hallo zusammen, als Abschlussarbeit muss ich u.a den oben genannten Mikrocontroller verwenden. Ich verwende in der Schule den Atmega32 auf dem klassichen "Unterrichts"-Fertig-Bord mit diversen Schnittstellen,integrierten Tastern,LEDs etc. Jetzt habe ich zum ersten mal einen "nackten" MC auf dem Steckbord zum Probeaufbau, kleine Tests wie z.b. eine LED mit entsprechendem C-Blinkprogramm anzusteuern funktionieren auch. Nun wollte ich ein zweizeiliges LCD-Display ansteuern, analog zur Unterrichtseinheit in der Schule. Das Programm läuft auf dem Schulbord definitiv, nur auf dem Steckbord-Aufbau leider nicht. Der Microcontroller ist (wie im Wiki) mit Spannung direkt vom Netzgerät und vorgeschaltetem Entstörkondensator, der Programmierschnittstelle sowie dem LCD-Display an Port C verbunden, sonst nichts. Gibt es irgendwas was ich vergessen habe, was der "nackte" MC auf dem Steckbord im gegensatz zum fertigen Experimentierbord für den LCD-Betrieb noch braucht?

Ich hoffe es ist einigermaßen verständlich, sonst kann ich bei Bedarf die Tage auchnoch Pläne/Fotos erstellen
Danke schonmal für eure Antworten!

BMS
14.08.2016, 15:11
Hallo und willkommen im Forum!

Wenn ich ATmega32/644 und PORTC in einem Satz höre, läuft das quasi immer auf die sog. JTAG-FUSE hinaus. Frische AVRs dieses Typs sind so konfiguriert, dass an PORTC der JTAG (zum Debuggen) aktiv ist. Du musst die Fuses umprogrammieren, sodass JTAG deaktiviert ist. Das funktioniert z.B. mit dem AVR-Burn-o-mat. Erst dann lässt sich der Port normal nutzen. Das ist irgendwie ein Klassiker bei den AVRs...:-b

Ansonsten: Ich gehe davon aus, dass es ein Standard Textdisplay ist? Hast du dich um die Spannung an dem Kontrast-Pin gekümmert? Meistens schließt man dort ein Poti an. Wenn das Display noch keine Daten vom MC bekommen hat, muss in der ersten Zeile ein fetter Balken zu sehen sein, sonst ist die Kontrastspannung nicht richtig.

Wünsche gutes Gelingen bei deiner Abschlussarbeit! ;)

Viele Grüße,
Bernhard

oberallgeier
14.08.2016, 16:45
.. ein zweizeiliges LCD-Display ansteuern .. Microcontroller .. Spannung direkt vom Netzgerät .. LCD-Display an Port C ..GND-LCD mit Controller-GND verbunden? Woher bezieht das LCDisplay seinen Saft? Direkt von einem Controllerport hoffentlich nicht, dagegen spricht das Datenblatt: Atmel-8272G-AVR-01/2015 - Seite 333, Punkt 29; Electrical Characteristics - TA = -40°C to 105°C: DC Current per I/O Pin 40.0 mA, DC Current VCC and GND Pins 200.0 mA.

Ansonsten hat ja schon Bernhard den typischen mega16-bis-1284er Sonderstatus mit Anfänger-Fehlfunktion beschrieben.

Ampelmännchen
14.08.2016, 19:34
Moin das hat schonmal sehr geholfen, danke! Muss ich diese Fuse zwangsläufig rausnehmen oder kann ich auch einfach einen anderen Port nehmen? Das Display läuft über die ausgegebene Versorgungsspannung von PORTC, werde das dann direkt ansteuern, da kann ja nix kaputtgehen? Der erwähnte schwarze Balken ist da, spielen mit der Kontrastspannung funktioniert auch.

Werde es mal ausprobieren und mich dann nochmal melden, wird bestimmt nicht die letzte Frage sein wenn der gemeine Elektriker mal mit Bits und Bytes anfängt..

Bis dahin!

021aet04
14.08.2016, 21:43
Du kannst nehmen was du willst, du musst es nur im Programm anpassen. Aber wenn du es nicht benötigst ist es besser wenn du es abschaltest. Und die Versorgung (VCC) schaltest über den PortC? Du musst es dann sofort ändern und hoffen das du den µC nicht eliminiert hast.

MfG Hannes

oberallgeier
15.08.2016, 00:08
.. Muss ich diese Fuse zwangsläufig rausnehmen oder kann ich auch einfach einen anderen Port nehmen? ..Du MUSST die JTAG-Funktion nicht abschalten, Du könntest nen andern Port, zumindest andere Pinne von C nehmen (die NIX mit JTAG zu tun haben). Aber - brauchst Du JTAG? Wenn nicht, dann schalte es einfach ab.


.. Das Display läuft über die ausgegebene Versorgungsspannung von PORTC ..Ich hatte es fast vermutet, nein befürchtet. Du hattest also noch nie diese Einschränkung der verfügbaren Ströme pro einzelnen Pinn (kleiner als 40 mA) bzw. des verfügbaren Gesamtstromes von 200 mA über alle Portpinne - bzw. 200 mA über die Versorgungsleitungen - gelesen!? Also - keine grösseren Ströme vom Controller nehmen, dringend!


.. Der erwähnte schwarze Balken ist da, spielen mit der Kontrastspannung funktioniert auch ..Na, der Balken ist zwar schwarz, ist aber bei der Problemlösung der Silberstreif am HOrizont!

PS: mein alter Spruch: der Umgang mit Mikrocontrollern ohne vorher das Datenblatt gelesen zu haben gehört zu den letzten großen Abenteuern unserer Erde.
Fazit: Datenblatt lesen. Gibts hier (klick) gratis (http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_datasheet.pdf), das neueste; Stand siehe Datum des Postings.

Ampelmännchen
05.10.2016, 18:38
Ersteinmal danke für eure Antwort- es hat alles wunderbar funktioniert. Mittlerweile hat sich ein neuer Stolperstein aufgetan. Wir wollen eine RS232-Schnittstelle ersteinmal als Testaufbau mit einem Terminalprogramm beschicken und die Daten sofort aufs LCD ausgeben. Mit dem fertigen Schul-Board gehts sofort, mit unserem Steckbrett leider nicht. Beschaltung an die Eingänge passt auf jeden Fall. Gleichzeitig fällt auf, dass Schaltungen die auf dem Schulbord problemlos laufen, auf dem Testbord sehr langsam takten, gerade bei Verwendung von delay-Funktionen in C. Gibt es da noch weitere Fuses oder einstellungen die beim ersten Mal vorgenommen werden müssen, wird ein Quarz benötigt etc?

Das Schul-Bord ist ein 16 MhZ-Atmel-MC, unser Aufbau ein 644p-MC.

Gruss von jemandem, der zwar mit dem Schulbord viel gelernt hat, bei dem es jedoch in Kombination mit neuer Hardware beim schaffen von "neuen" Sachen Probleme hat.

Danke schonmal!

BMS
05.10.2016, 20:33
Hallo nochmal,

auch dafür gibt es Fuses. Im AVR Burn-o-mat lässt sich das komfortabel einstellen. Welche Taktquelle usw...
Unter anderem gibt es eine "divide system clock by 8" (nicht im Bild) ...
Siehe hier z.B.
http://www.aaabbb.de/avr8_burn-o-mat_avrdude_gui/avr8_burn_o_mat_screenshot_clock_options.png
(Quelle http://www.aaabbb.de/avr8_burn-o-mat_avrdude_gui/avr8_burn_o_mat_screenshot_clock_options.png )

Grüße,
Bernhard

oberallgeier
06.10.2016, 00:17
.. Das Schul-Bord ist ein 16 MhZ-Atmel-MC, unser Aufbau ein 644p-MC ..Pingelig: Das Schulboard ist ein 16 MhZ-Atmel-MC .. Hmmmmmm, aber was für einer ? Da wär ne Angabe wie zu Deinem Aufbau ".. ein 644p .." ganz gut. Wobei Du uns zu Deinem Aufbau leider weder nen Schaltplan noch sonstige Informationen wie z.B. Quarz xx zukommen lässt.


.. fällt auf, dass Schaltungen die auf dem Schulbord problemlos laufen, auf dem Testbord sehr langsam takten,
.. wird ein Quarz benötigt etc? ..WENN Du die Geschwindigkeiten der beiden Boards miteinander vergleichen möchtest sollten - im Idealfall - der Testaufbau den gleichen Controller besitzen wie das Schulboard und den gleichen Quarz und die gleichen Fuses und und. Es sollten beide Schaltungen eben gleich sein (soweit sie funktionell benutzt werden), aber Controller und Quarz gleich zu halten ist schon ein eher wesentlicher Fall. Das würde auch die softwareseitige Gleichheit wirklich perfekt machen - und damit viel Mühe sparen als wenn Du z.B. zwei verschiedene Controller nimmst. Und BMS nennt ja schon ein ganz typisches Anfängerproblem: die fabrikfrischen Atmelcontroller werden mit gesetztem CKDIV8-Bit ausgeliefert ==> der Controller tickt a) mit internem Oszillator, der 8 MHz macht, ABER b) wird dieser Takt für den Controllerablauf durch acht dividiert.

wkrug
07.10.2016, 08:55
Soweit ich weiss sind doch der ATMEGA32 und der 644 Pinkompatibel.
Dann müsstest Du nur ein "Schulboard" nehmen und den Controller austauschen.
16MHz geht bei den meisten ATMEL Controllern nur mit externer Taktquelle, also Quarz oder Quarzoszillator.
Diesen würde ich bei serieller Schnittstelle auch dringend empfehlen, weil die interne Taktquelle der AVR's nicht besonders genau und dazu noch temperaturabhängig ist.
Dafür haben einige Programmiergeräte die Möglichkeit einen OSC-CAL Wert in den Flash zu schreiben.
Dieser Wert muss dann durch deine Software in bestimmte Register des ATMEGA geschrieben werden - Funktioniert aber nur bis 8MHz - Hab ich selber noch nie benutzt.
Im Auslieferungszustand läuft der Controller mit interner 8MHz Quelle und durch die clk/8 Fuse wird dieser Takt dann auch noch durch 8 geteilt, also läuft das Ding mit 1MHz - Das mit dem CLK/8 haben die meisten ATMEGA Controller, guck mal nach, ob die auch beim 644 aktiv ist.

Für die serielle Schnittstelle brauchst du entweder einen Pegelwandler wie den MAX 232 oder eine USB Bridge wie die FT232Rx.
Die USB Bridge muss von der USB Seite aus mit einem Tool für Windows programmiert werden, damit sie zu deiner Schaltung passt.

Da es sich bei Deinem Projekt ja nicht um geheime Raketentechnik handelt könntest Du schon mal einen Schaltplan posten - Würde vieles einfacher machen.

BMS
07.10.2016, 11:44
Ich gehe davon aus, dass wenn die fuses für den takt richtig eingestellt werden, dass die rs232 Verbindung dann auch sofort geht. Die Baudrate wird aus dem Takt abgeleitet über Teiler.
Grüße,
Bernhard

Ampelmännchen
08.10.2016, 12:50
Hallo,

erstmal danke für die vielen Hilfreichen Antworten! Ist natürlich nicht die nächste Rakete für Nordkorea die wir bauen, Schaltpläne und ähnliches folgen- exisitieren halt im Moment einfach noch nicht, da wir zur Zeit wirklich erstmal hin- und her experimentieren. Werde ich aber in nächster eit noch nachliefern. Danke für die Geduld mit Hardware-Anfängern und euch ein schönes Wochenende, ich melde mich sobald wir die ganzen Tipps usprobieren konnten.

oberallgeier
08.10.2016, 13:38
Soweit ich weiss sind doch der ATMEGA32 und der 644 Pinkompatibel ..Stimmt. Es gibt aber Unterschiede in einigen Registern - z.B. Timern. Dazu hat der 644er z.B. noch PCINT-errupts, zwei Output Compare Units im Timer0 und soche Feinheiten. Da ist codemäßig ein Upsize (m32 auf m644) vermutlich möglich, abwärts - m644 nach m32 - KÖNNTE es Probleme geben.
Grundlagen:
Dokumentation mega32/L: . . . . . 2503Q–AVR–02/11
Dokumentation mega644/V: . . . . 2593M–AVR–08/07