Hallo, Ich hoffe ihr könnt mir weiter helfen. Nachdem ich nun seit 3 Wochen Recherche nicht selbst weiter komme, bin ich nun leider auf Hilfe angewiesen. Leider haben mir ähnliche Beiträge im Forum nicht weiter geholfen. Versuchsbeschreibung: Ich habe mir folgende 4-digit 7 Segmentanzeige gekauft: http://www.watterott.com/de/7-Segment-LED-Anzeige-blau-seriell die ich nun über USART bereiben möchte. Dies hat sich allerdings als schwieriger herausstellt, als anfänglich gedacht. Ich benutze einen Atmega644 mit einem 20MHz Quarz. Mein Code findet ihr im Anhang. Problembeschreibung: Die Übertragung scheint zu funktionieren, da sich bei Befehlen, die ich über den USART sende die Anzeige verändern kann. Allerdings reagiert die Anzeige nicht wie in der Spezifikation (http://www.sparkfun.com/datasheets/Components/LED/7-Segment/SFE-0012-DS-7segmentSerial-v41.pdf). Im Code sende ich die Bytes, die auch im Beispiel der Spezifikation verwendet wurden: (0x01)(0x02)(0x0A)(0x0B). Hier springt die Anzeige (siehe angehangene Bilder). Egal wie welche Bytes ich sende, es werden nur Nullen angezeigt, jedoch ändern sich die angezeigten Stellen, die wiederum nur 0 anzeigen. Ich hoffe ihr könnt mir helfen :) Gruß Mattias
Die Fuses sind auf "Ext. Crystal Osc. 8.0- MHz; Start-up time: 16K CK + 65 ms", wie im angehangenen Bild gesetzt. Gruß Mattias
findest du nicht, dass deine leds um einen faktor 8(!!!) zu langsam blinken?
Also ich habe mal die delay-Anweisungen und das Test Blink herausgenommen und du hast Recht. Die Anzeige ist noch zu langsam, denn hier blinkt die jede Stelle ca alle 200 ms auf (sollte doch schneller gehen oder?!?) Ich habe aber keine Ahnung warum das so ist. Hat jemand eine Idee? Gruß Mattias
> findest du nicht, dass deine leds um einen faktor 8(!!!) zu langsam > blinken? Dickeren Zaunpfahl nehm: Häkchen bei CKDIV8 Fuse entfernen!
So habe jetzt das Häckchen entfernt. Die Anzeige ist jetzt wirklich sehr schnell unterwegs, funktioniert allerdings leider immer noch nicht. Um eine konstante Anzeige zu bekommen habe ich mich entschieden 4mal 0x0A zu senden. Allerdings azeigt die Anzeige im Betrieb egal welche Zeichen ich sende immer an der ersten Stelle 8 an (siehe Bild1). Die erste Stelle flackert merklich. Die restlichen Stellen bleiben aus. Jedoch ist hier das Auge anscheinend zu langsam, da man die zweite Stelle mit einer 0 angezeigt bekommt, wenn man auf Erase Device klickt (siehe Bild2). Sehr eigenartig! Kann man hier irgend was testen um der Fehlerspur zu folgen? Gruß Mattias
Stimmt die Chemie^H^H^H Kommunikation der Geräte untereinander? Wie sehen die Fuse-Einstellungen des AVRs (Atmega328P) auf dem Display aus? Welchen Taktgeber hat dieser AVR? Wenn interner RC, dann überlegen einen genaueren externen Taktgeber anzuschliessen. Hast du den Sender (AVR) mal an einen PC angehängt (über RS232 Pegelwandler) und in einem RS232 Terminalprogramm mitgeschnitten, was da so kommt? Sendet der Sender gültige Daten? Hast du den Empfänger (Display) mal an einen PC angehängt (über RS232 Pegelwandler) und in einem RS232 Terminalprogramm die Daten aus dem Datenblatt gesendet? Reagiert das Display?
Ich glaub ich krieg nen Kolla... 3 Wochen lang probier ich alles mögliche aus... nix bringt. Und jetzt, per Zufall... nehm ich die dumme Zeile: // uart_putc(0x76); // reset the display raus und alles passt... habe damit anscheinend mehr als nur die Baudrate reseted, sodass noch Parameter gefehlt haben... Habt jedenfalls vielen vielen Dank für euer Engagement! Gruß Mattias
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.