Hi, habe vor kurzem mit dem Mikrokontroller programmieren begonnen mit dem STK500 und bin jetzt auf ein Problem gestoßen, dass mich verwirrt. Benutzter Controller = atmega8515 (der Mitgelieferte) Das Problem habe ich in Assembler und in C Ich wollte programmieren, dass die erste LED leuchtet Meiner Meinung nach sollte es so funktionieren, hatte es aber nicht: DDRB = 0xff; PORTB = 0x01; Nach dem Befehl "DDRB = 0xff" leuchten bereits alle LEDS und nach meinem Befehl "PORTB = 0x01" schaltet sich die erste LED aus. Im Prinzip habe ich das 1er Komplement von meiner gewollten Ausgabe. Irgendwo hier im Forum habe ich jetzt gelesen, dass das STK500 die Ausgänge zur LED inventiert. Bedeutet dies, dass die LEDS im Prinzip nur aktiv low sind? Habe ich an dem Kontroller trotzem an den PORTB Pins das gewünschte Bitmuster 0x01 und somit am Ausgang PB0 5V? Ich bitte um Hilfe
Tim A. schrieb: > Irgendwo hier im Forum habe ich jetzt gelesen, dass das STK500 die > Ausgänge zur LED inventiert. Das stimmt so nicht. Vielmehr muss man, um die LEDs, die zwischen Vcc und dem Portpin angeschlossen sind, eine 0 ausgeben. D.h. man muss das Bit selbst invertieren, wenn 1 = LED an und 0 = LED aus bedeuten soll. Mann kann aber wahlweise auch definieren, dass 0 = LED an und 1 = LED aus bedeuten soll. Tim A. schrieb: > Habe ich an dem Kontroller trotzem an den PORTB Pins das > gewünschte Bitmuster 0x01 und somit am Ausgang PB0 5V? Ja, das hast Du.
Grrrr schrieb: > Mann kann aber wahlweise auch definieren, dass 0 = LED an und 1 = LED > aus bedeuten soll. Im STK500? Habe das Teil zwar schon eine Weile, aber mich nie damit beschäftigt, ob man die LEDs auch umdefinieren kann. Wäre also interessant zu wissen. Denn auch mich verwirrt es im ersten Moment, wenn die LEDs das Komplement von dem Anzeigen, was ich zur Ausgabe gegeben habe. Also wenn man dem STK500 das anders beibringen kann, dann her mit dem Code - außer mit dem Lötkolben :) Gruß Torsten
Torsten Giese schrieb: > Grrrr schrieb: >> Mann kann aber wahlweise auch definieren, dass 0 = LED an und 1 = LED >> aus bedeuten soll. > > Im STK500? Habe das Teil zwar schon eine Weile, aber mich nie damit > beschäftigt, ob man die LEDs auch umdefinieren kann. LOL. Das war offenbar mehr gedacht als: Ab 0 jetzt LED ein oder LED aus bedeutet, ist nur eine willkürliche Konvention. Die Definition findet im Kopf statt, nicht durch Umstecken von Jumpern.
Karl heinz Buchegger schrieb: > LOL. > Das war offenbar mehr gedacht als: > Ab 0 jetzt LED ein oder LED aus bedeutet, ist nur eine willkürliche > Konvention. Die Definition findet im Kopf statt, nicht durch Umstecken > von Jumpern. Genau. Ich will jetzt keine linguistischen Diskussionen lostreten, aber "Definitionen" (im fraglichen Sinn) finden immer im Kopf statt. Wenn man über Jumper die Festlegung ändern kann, welcher Pegel die LED leuchten läßt, dann ist das eine "Konfiguration".
Torsten Giese schrieb: > interessant zu wissen. Denn auch mich verwirrt es im ersten Moment, wenn > die LEDs das Komplement von dem Anzeigen, was ich zur Ausgabe gegeben > habe. Irgendwann, wenn der Leidensdruck groß genug ist, kommt jeder Programmierer drauf, dass ja eigentlich er der Herr im Haus ist, und er schreibt sich flugs ein paar Funktionen/Makros, die dieses Detail vor dem Rest der Welt verstecken. Fortan arbeitet er bei LED nicht mehr mit 0 und 1, sondern mit mit Funktionen und/oder Makros mit so sinnigen Namen wie LEDEin() oder LEDAus() und es herrscht wieder Frieden im Lande. Alle sind glücklich und wenn sie nicht gestorben sind, dann blinken sie noch heute.
Danke für die Antworten. Damit wäre schon mal diese Frage geklärt. Allerdings ist dadurch gleich noch eine weitere entstanden. Im Anhang befindet sich der Quelltext zu einem Assemblerprogramm. Im Prinzip holt sich der der Mikrocontroller die Eingabe von den Tastern und zeigt sie (solange der Taster noch gedrückt) auf den LEDs an. Meine Frage hierzu: Warum zeigt er das jetzt nicht inventiert an? Heißt das für mich das bei der gewollten Eingabe 0x01 tatsächlich 0xfe aufgenommen wird? Das wäre die einzige Erkärung für mich warum jetzt die erste LED aufblinkt bei Betätigung des ersten Tasters.
Lieber Tim, [ironie] als angehender "computerengineer" hast Du das Recht Dir die Schaltpläne vom STK500 selbst anzusehen. Wir verlangen keine Lizenz dazu von Dir. Tatsächlich könnten wir Dich garnicht daran hindern es zu tun, denn die Beschreibung wird mit dem AVRStudio mitgeliefert. [/ironie] ;-)
Ich hab mich am Anfang auch schwer getan diese Drehung 0=EIN 1=AUS zu verinnerlichen. Auch bei Tastenabfragen hat sich das nun bewährt. War auch bei den ersten Schaltungen der Meinung ich seid er Herr der Platine und hab dann irgendwas auch gemerkt das die Leute sich was dabei gedacht haben wenn Sie die LED nach Masse zum leuchten bringen. :-D Beim STK500 kann man da nicht's umstöpseln höchstens den Lötkolben anwerfen. Der Vorteil ist auch das man eben viel mehr Strom in Richtung Masse dem PIN zumuten kann. Datenblatt ist da immer zu Rate zu ziehen. Gruß AVRli...
Vor allem ist diese Lösung die mit dem geringsten Aufwand und trotzdem reibungslosen Betrieb bei unterschiedlichen (und frei wählbaren) Target Spannungen geschuldet.
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.