Code mit Invertierten Werten für die Ports geht nicht.

OP #1109717
Ich habe ein wirklich seltsames Problem:

Folgender Code
1
  PLED |= (1<<LED1 | 1<<LED2 | 1<<LED3 | 1<<LED4 | 1<<LED5 | 1<<LED6); //Zuerst alle LEDs aus
2
  switch(farbe[array_pos]){ //Dann entsprechende LED wieder einschalten
3
    case 1:  PLED &= ~(1<<LED1);  break;
4
    case 2:  PLED &= ~(1<<LED2);  break;
5
    case 3:  PLED &= ~(1<<LED3);  break;
6
    case 4:  PLED &= ~(1<<LED4);  break;
7
    case 5:  PLED &= ~(1<<LED5);  break;
8
    case 6:  PLED &= ~(1<<LED6);  break;
9
  }
funktioniert einwandfrei.
Kehre ich den Code nun um, so dass statt 1er 0er geschrieben werden und 
umgekehrt, geht das ganze nicht mehr, soll heißen der Mega8 kommt ins 
"Stolpern" (Macht undefinierbare Dinge).
Das hier geht nicht:
1
  PLED &= ~(1<<LED1 | 1<<LED2 | 1<<LED3 | 1<<LED4 | 1<<LED5 | 1<<LED6); //Zuerst alle LEDs aus
2
  switch(farbe[array_pos]){ //Dann entsprechende LED wieder einschalten
3
    case 1:  PLED |= (1<<LED1);  break;
4
    case 2:  PLED |= (1<<LED2);  break;
5
    case 3:  PLED |= (1<<LED3);  break;
6
    case 4:  PLED |= (1<<LED4);  break;
7
    case 5:  PLED |= (1<<LED5);  break;
8
    case 6:  PLED |= (1<<LED6);  break;
9
  }

Hat jemand eine Idee, warum das so ist?
Gast #1109727
Sicher das deine Mosfet richtig angeschlossen sind? Da du den Code 
geändert hast denke ich mal das auch die Beschaltung sich geändert hat. 
Schaltplan wäre hilfreich. Ansonsten, miss doch einfach mal direkt an 
den Pins ob da rauskommt was du willst.
OP #1109733
Nein, nein, das ist ja das Problem, an der Beschaltung hat sich 
überhaupt nichts geändert.
Zum Anhang:
Die Transistoren sind vom Typ IRLU 2905. R_Pullup kann auch weggelassen 
werden, ändert sich nichts...
Der unterste Transistor wird mit PWM angesteuert. So kann man die LEDs 
dimmen.

Es war nur so, dass ich den Code auf einem STK500 mit Low-aktiven LEDs 
gecodet habe aber jetzt eben mit den MOSFETs High-aktive ausgänge habe. 
Und auf dem STK500 lief das Programm auch einwandfrei.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.