Forum: Mikrocontroller und Digitale Elektronik C-Tutorial LED Problem


von its just a game (Gast)


Lesenswert?

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

von Verilog hans (Gast)


Lesenswert?

die leds sidn bestimmt low aktiv

von Jan (Gast)


Lesenswert?

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...

von its just a game (Gast)


Lesenswert?

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?

von Stefan (Gast)


Lesenswert?

uint8t value=0x03;

Alle Bits invertieren:

uint8t value=~0x03;

Nur bestimmte Bits invertieren (in diesem Fall das niedrigste Bit)

uint8t value=0x03 ^ 0x01;

von gfq432fq (Gast)


Lesenswert?

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.

von Micha (Gast)


Lesenswert?

.. oder ein Makro mit dem die entsprechende LED ein- bzw. ausgeschaltet 
wird.

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
Noch kein Account? Hier anmelden.