Peter M. schrieb:
> @Drachenbändiger
> Was muss ich vorher mit DDRB denn machen? Und aus deinem Assembler-Code
> werde ich nicht schlau, ich kann ihn momentan nur identifizieren ;)
Der Assembler-Code zeigt, dass der Compiler Deine Defines korrekt
übersetzt: Bit 2 in DDRB wird gelöscht, wie Du es mit
1 | #define set_DATA DDR_SHT &= ~(1<<P_DATA)
|
auch verlangst. Um bei Deinem konkreten Beispiel zu bleiben: Dieser
Befehl ist nach einem Reset (dabei wird DDRB auf 0 gesetzt!) nur dann
sinnvoll, wenn Bit 2 in DDRB irgendwann zwischen Reset und diesem Befehl
auf 1 gesetzt wurde. Falls Bit 2 in DDRB 0 ist, wenn der Befehl
abgearbeitet wird, ändert sich nichts am Wert in DDRB.
Oben habe ich Dich ja schon gefragt: Soll "set_DATA" wirklich DDRB
manipulieren oder meinst Du PORTB? Bei Deiner "symbolischen
Schreibweise" machst Du formell nichts falsch, aber vielleicht meinst Du
nicht, was Du dem Prozessor als Anweisung vorgibst ... das kann ich
nicht beurteilen (ich kenne weder den Sensor, noch habe die von Dir
genannten Quellen gelesen).