Forum: Mikrocontroller und Digitale Elektronik Quelltext geht nicht weiter


von Frank (Gast)


Lesenswert?

Hallo mein Quelltext bleibt immer an der stelle : sp2 = PINB; stecken 
und geht auch nicht weiter außer ich machen aus dem == ein != in der if 
anweisung ich brauche aber ein ==. Ich verwende ein atmaga 16 und AVR 
studio.

1
int main(void)
2
{
3
uint8_t sp2;
4
//lcd_init();            
5
//lcd_home();
6
7
8
               
9
     DDRB  = 0x00;             
10
     //PORTB = 0xff;
11
   
12
    
13
  while(1) 
14
  {                
15
    
16
  sp2 = PINB;  // hier bleibt er immer stehen 
17
   
18
19
       if (sp2 != 0b00000001) // dort brauche ich eigentlich ==
20
      {
21
      PORTD = 0xff; // Teste 
22
      //lcd_string("1");
23
      }
24
         
25
    if (sp2 != 0b00000010) // dort brauche ich eigentlich ==
26
      {
27
      //lcd_string("2");
28
      PORTD = 0xff;  // Teste
29
30
      }
31
     }            
32
return 0;
}

von Matthias L. (Gast)


Lesenswert?

>immer an der stelle : sp2 = PINB; stecken

Unsinn. Ist ja keine Schleife.

Dein Problem ist, dass du (unter gewissen Bedingungen) das PORTD=0xFF 
setzt, dieses aber nie zurücksetzt....

von Gast (Gast)


Lesenswert?

Du hast das hier vergessen:
1
sp2 = PINB;  // hier bleibt er immer stehen 
2
sp2 &= 0b00000011;

Sonst wird die If-Bedingung niemals erfüllt sein, weil du nicht weißt, 
welchen Pegel die anderen Port-Pins haben

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

@ Frank
>immer an der stelle : sp2 = PINB; stecken
Wie kommst du darauf, welche Auswirkungen verleiten dich zu der Aussage? 
Welcher Compiler? Hast du Hardware oder machst du das im Simulator?

Oder so:
1
sp2 = PINB & 0b00000011;

Besser wäre aber:
1
  sp2 = PINB;  
2
   
3
  if ( sp2 & (1<<PINB0) )   // Taste gegen Vcc an Pin B0
4
  {
5
      PORTD = 0xff; // Teste 
6
  }
7
         
8
  if ( sp2 & (1<<PINB1) )   // Taste gegen Vcc an Pin B1
9
  {
10
      PORTD = 0xff;  // Teste
11
  }
12
:

von ich (Gast)


Lesenswert?

Wenn du der selbe bist wie hier :
Beitrag "Quelltext bleibt immer stehen und geht nicht weiter"

muss ich mit erschrecken feststellen, das du dir scheinbar die Beiträge 
nicht durchließt, die die Anderen schrieben. Es ist doch exakt das 
gleiche Problem!!! Oder sehe ich das falsch!?

Und scheinbar hast du gravierende Mängel in C.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Dabei ist es grundsätzlich fraglich,
ob ein Quelltext an sich überhaupt in der Lage ist zu "Gehen"  ;-))

Und wenn er schon prinzipiell nicht "Gehen" kann,
dann wird er sicher auch nicht "Weitergehen"...

von PeggySue (Gast)


Lesenswert?

Die Beschreibung, dass der Quelltext stehen/stecken bleibt finde ich 
ebenfalls etwas sehr seltsam... wie soll denn das genau gehen? Ich glaub 
mal, dass du einfach deinen Fehler nicht ordentlich beschreiben kannst.

Anhand deiner Beschreibung würde ich eher davon ausgehen, dass er 
einfach nicht in die IF-Anweisung springt. Und das liegt dann wohl 
offenbar daran, dass die Bedingung nicht erfüllt ist. Das würde auch 
erklären, warum es mit != "geht" und mit == nicht. Du solltest also 
tatsächlich mal überprüfen woran  es liegt, dass die Bedingung nicht 
wahr wird.

Also erstmal checken welchen Wert PINB tatsächlich hat. Kann der 
überhaupt den abgefragten Wert annehmen? Ansonsten mal überprüfen ob das 
in den Datentyp pb2 überhaupt sinnvoll reinpaßt. Vielleicht hilft ja 
auch schon ein typecast.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

@Frank

hast du denn mittlerweile den Unterschied zwischen "=" und "==" 
verstanden?

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.