Hi, habe mir gerade einen 3x3x3 LED Cube gebaut, doch habe ein Problem mit der Ansteuerung. Beispielsweise möchte ich die 1. LED der unteren Ebene ansteuern, das mache ich dann folgendermaßen: DDRD |= (1<<PD0); //1. Ebene -> alle Kathoden verbunden DDRB |= (1<<PB0); //1. LED (unten links) -> Anode PORTD &= ~(1<<PD0); //1. Ebene auf GND ziehen PORTB |= (1<<PB0); //+5V auf 1. LED Leider bekomme ich so keine LED zum laufen. Der Mikrocontroller (atmega88) ist ansteuerbar, das Programm lässt sich einwandfrei übertragen - ohne Fehler. Leitungen wurden alle gecheckt, auch der Vorwiderstand an den LED passt. Da bleibt eig. nur noch das Programm ;) Bitte um Hilfe.
xrtm4e schrieb: > Da bleibt eig. nur noch das Programm ;) Aber bitte das vollständige. Und ein Schaltplan.
#include <avr/io.h> int main(){ DDRD |= (1<<PD0); //1. Ebene -> alle Kathoden verbunden DDRB |= (1<<PB0); //1. LED (unten links) -> Anode PORTD &= ~(1<<PD0); //1. Ebene auf GND ziehen PORTB |= (1<<PB0); //+5V auf 1. LED return 0; } Zum Schaltplan gibt's nicht viel zu sagen. Es ist eine Standard-Schaltung mit 10-poliger Wannenbuchse für ISP-Programmer, 16 MHz Quarz, Abblockkondensatoren etc. Habe auch ein 7805 als Spannungsregler, das ganze wird mit einer 9V-Blockbatterie mit Spannung versorgt. Die 3 Ebenen sind an PD0 bis PD2. Die Anoden der jeweiligen Spalten sind an PC1 bis PC5 + PD5 bis PD7 + PB0 über einen 270Ohm Widerstand geschaltet.
Über das reine Anglotzen der nicht funktionierenden Schaltung hinaus besteht auch noch die Möglichkeit, den Pegel der Ports zu überprüfen. So habe ich das schon von 20 Jahren ("wir hatten ja nichts") erfolgreich gehandhabt. Du musst den Fehler einkreisen! Ansonsten solltest Du am Ende der Portaktivitäten noch eine Endlosschleife ("while (1);") einfügen umd das Programm nicht ins Nirwana rennen zu lassen. Weiterhin: Mit weniger anfangen und einen Nachweis erbringen, dass Dein Programm überhaupt läuft! Polarität der LEDs? xrtm4e möchte Dir auf seine eigene, unglaublich amüsante und konstruktive Art mitteilen, dass es ohne Schaltplan doch nicht geht.
Oh nein ... es liegt nicht am Programm. Habe mal die Spannung an den Pins gemessen und jeder gibt 5V aus! Dann überprüfe ich mal besser die Schaltung ... oder kann sowas mit falsch gesetzten Fusebits entstehen?
wie immer, * alle Infos zum Problem * Schaltplan * das gesamte lauffähige Programm
> DDRD |= (1<<PD0); //1. Ebene -> alle Kathoden verbunden > DDRB |= (1<<PB0); //1. LED (unten links) -> Anode Wie kommt man auf die skurrile Idee, die anderen Ausgänge zu Eingängen zu schalten ?
Eddy Current schrieb: > xrtm4e möchte Dir auf seine eigene, unglaublich amüsante und > konstruktive Art mitteilen, dass es ohne Schaltplan doch nicht geht. Glaube eher, es handelt sich dabei um Mikel M. ;-)
Du hast hoffentlich die LEDs nicht zwischen zwei Pins gehängt. Die Pins können nur begrenzten Strom treiben und wenn Du sie zu stark belastest, bricht dem armen Pin die Ausgangsspannung ein. Wenn Du Glück hast, raucht er dabei nicht ab, ansonsten kannst Du regelmäßig neue µCs einlöten...
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.