Hallo, meine Microkontroller Zeit ist schon etwas her und ich probiere mich mal langsam wieder. Jetzt habe ich mir mal ein stk 500 zugelegt und mal das erste Programm in meinen Atmega8 eingespielt. Nur wundere ich mich, dass bei diesem kurzen Code die LED 0 angestuert wird, obwohl ich doch nur den Port C als Ausgang setze und noch keine weitere beschaltung vornehme. Weiß einer was ich hier falsch mache? #include <avr/io.h> int main(void) { DDRC = 0x01; } Danke!
:
Verschoben durch Moderator
Edit: Verlesen. Die LEDs sind Low-Aktiv. Das heißt, wenn der zugehörige Pin LOW ausgibt, geht die LED an. Da du das Port-Register nicht angefasst hast, ist PORTC komplett auf 0x00. Damit ist Pin C1 auf Ausgang (DDRC = 0x01) und gibt LOW (sprich, annähernd 0V) aus. Bei PORTC = 0x01 geht der Pin auf HIGH (nahezu 5 V) und die LED geht aus.
:
Bearbeitet durch User
Flo A. schrieb: > Weiß einer was ich hier falsch mache? Du hast dich in das falsche Unterforum verirrt. Nach Projekte & Code gehören nur Sachen, die schon zumindest einigermaßen funktionieren. Nicht die Fragen von Leuten, die von garnix irgendeine Ahnung haben...
Frank L. schrieb: > vergessen JTAG zu deaktivieren? Der Mega8 hat überhaupt kein JTAG-Interface. Noch so ein Nixwisser im falschen Forum...
c-hater schrieb: > Noch so ein Nixwisser im falschen Forum... Gott sei Dank gibt es in diesem Forum ja Leute wie dich, die mit ihren überragenden Kenntnissen und ihrem messerscharfen Verstand die "Minderperformer" in ihre wohlverdienten Schranken zu weisen. Wie hältst du es eigentlich tagtäglich aus hier diesen ganzen Diletantismus zu ertagen? rhf
Flo A. schrieb: > Nur wundere ich mich, dass bei diesem kurzen Code die LED 0 angestuert > wird, obwohl ich doch nur den Port C als Ausgang setze und noch keine > weitere beschaltung vornehme. Ich habe vor kurzer Zeit Ähnliches bei einem 328p beobachtet (steige auch gerade erst ein): LED an einem nicht explizit gesetzten Ausgang hat geleuchtet. Kurze Recherche hat gezeigt, dass die Ausgänge in einem undefinierten Zustand sind, solange sie nicht explizit gesetzt wurden – kann also sein, dass der Ausgang high ist, kann aber auch anders sein. Lösung: mit dem gewünschten Zustand initialisieren. Edit: der Threadtitel ist unglücklich gewählt, btw. – die meisten Leute, die’s wissen würden, werden gar nicht erst draufklicken. Was übrigbleibt, sind Selbstdarsteller, oder Noobs wie ich ;)
:
Bearbeitet durch User
Flo A. schrieb: > Weiß einer was ich hier falsch mache? Ja, mit ner uralten Gurke angefangen. Schmeiss den Scheiss weg und nimm was Richtiges: STM32, MSP430, ...
> Schmeiss den Scheiss weg und nimm > was Richtiges … und wenn man das dann gemacht hat, kennt und weiß man auf wundersame Weise alles und hat keine Fragen mehr? Dann sollte ich vielleicht auch umsteigen … [scnr – ich bleibe bei meinen kleinen ATmegas, bzw. bin sogar auf ’nen ATtiny zurückgefallen. Gerade deren Übersichtlichkeit/Schlichtheit macht’s zumindest mir leichter, das Ganze zu verstehen]
Hallo, Jack V. schrieb: > … und wenn man das dann gemacht hat, kennt und weiß man auf wundersame > Weise alles und hat keine Fragen mehr? Ja, genau so ist es. Wenn der Supercomputer in "Per Anhalter durch die Galaxis" aus STM32- oder MSP430-Prozessoren bestanden hätte, wäre die Frage „nach dem Leben, dem Universum und dem ganzen Rest“ statt in einigen Millionen Jahren in Sekundenbruchteilen berechnet worden (und mit der Antwort hätte man auch etwas anfangen können, trotz der vagen Fragestellung). rhf PS: > [scnr – ich bleibe bei meinen kleinen ATmegas, bzw. bin sogar auf ’nen > ATtiny zurückgefallen. Gerade deren Übersichtlichkeit/Schlichtheit > macht’s zumindest mir leichter, das Ganze zu verstehen] Ich weiß genau was du meinst.
c-hater schrieb: > Du hast dich in das falsche Unterforum verirrt. Habe es verschoben. Zum Thema: Stefan S. schrieb: > Die LEDs sind Low-Aktiv. Das ist des Rätsels Lösung. N. M. schrieb: > Wo ist denn deine while(1) ? Wenn main() verlassen wird, geht das Runtime-System der AVR-libc automatisch in eine Endlosschleife. It's not a bug, it's a feature.
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.