www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Quelltext geht nicht weiter


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

int main(void)
{
uint8_t sp2;
//lcd_init();            
//lcd_home();


               
     DDRB  = 0x00;             
     //PORTB = 0xff;
   
    
  while(1) 
  {                
    
  sp2 = PINB;  // hier bleibt er immer stehen 
   

       if (sp2 != 0b00000001) // dort brauche ich eigentlich ==
      {
      PORTD = 0xff; // Teste 
      //lcd_string("1");
      }
         
    if (sp2 != 0b00000010) // dort brauche ich eigentlich ==
      {
      //lcd_string("2");
      PORTD = 0xff;  // Teste

      }
     }            
return 0;     

}

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast das hier vergessen:
sp2 = PINB;  // hier bleibt er immer stehen 
sp2 &= 0b00000011;

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
sp2 = PINB & 0b00000011;  

Besser wäre aber:
  sp2 = PINB;  
   
  if ( sp2 & (1<<PINB0) )   // Taste gegen Vcc an Pin B0
  {
      PORTD = 0xff; // Teste 
  }
         
  if ( sp2 & (1<<PINB1) )   // Taste gegen Vcc an Pin B1
  {
      PORTD = 0xff;  // Teste
  }
:

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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"...

Autor: PeggySue (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Frank

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.