Hallo zusammen, ich mache gerade das AVR-GCC Tutorial. Ausprobieren tue ich das ganze mit dem STK500. Und schon habe ich das erste Problem. Übertrage ich den folgenden code auf den Controller: #include <avr/io.h> // (1) int main (void) { // (2) DDRB = 0xFF; // (3) PORTB = 0x03; // (4) while(1) { // (5) /* "leere" Schleife*/ // (6) } // (7) /* wird nie erreicht */ return 0; // (8) } Leuchten alle LED's, ausser die ersten 2. Nach meinem Verständniss sollte dies doch aber genau andersherum sein. Alle aus, nur 1 und 2 an. Kann mir da jemand weiterhelfe?! Vielen Dank Jürgen
Guck dir mal die Beschaltung des STK500 in der Doku an! Die Signale gehen über Transistoren und werden da invertiert, wenn ichs richtig in Erinnerung hab...
aha, so was dachte ich mir schon. Hatte nur gesehen, dass das STK500 mit transistoren arbeitet. Also wird das Signal tatsächlig an dieser stelle invertiert. Merkt man sich so was und denkt dann logisch andersrum, oder gibt es einen trick "normal" weiter zu programieren mit ein paar zeile extra, die die Invertierung übernehmen?
uint8t value=0x03; Alle Bits invertieren: uint8t value=~0x03; Nur bestimmte Bits invertieren (in diesem Fall das niedrigste Bit) uint8t value=0x03 ^ 0x01;
Klar geht das. Du baust Dir ein GPIO-Modul mit Handles und Enums in Klartext und einer Konfig-Möglichkeit für Low-/High-Active-Signale.
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.