mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik If Bedingung ohne Funktion


Autor: Manuwar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
als erstes, ich verwende einen ATMege8535 und CodevisionAVR.

Mein Problem:

mit hilfe eines schalters werden bestimmte pins auf 5V gesetzt. diese
pins möchte ich dann mit hilfe einer if funktion auswerten und eine
entsprechende routine ablaufen lassen(hier nur testfunktionen). leider
funktioniert das überhaupt nicht. die Pins sind als eingänge deklariert
und haben auch 5v bei aktiviertem schalter und 0v bei inaktivem
schalter.
würde mich freuen wenn mir jemand weiterhelfen könnte.

gruß manuwar


  while (1)
//***********************************Sollwerteinstellung**************** 
****************
  {        //While(1) Anfang
          if((PORTD.5==1)&&(PORTD.1==1))// Schalter aktiv
          {

              lcd_clr();
              lcd_curs(8);
              asc_out('0');

          }



//*************************************Überwachung und
Steuerung************************
          if((PORTD.5==0)&&(PORTD.1==0))//Schalter inaktiv,
          {
                        lcd_clr();
              lcd_curs(80);
              asc_out('1');

          }

  };      //While(1) Ende

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei WinAVR müsste man wohl PIND abfragen, denke das ist bei Codevision
nicht anders.
PORTD enthält was man ausgibt, PIND was wirklich an den Pins liegt.
Typischer Anfängerfehler bei AVR-Controllern!

Autor: Manuwar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dank dir für die antwort,

wie sieht das dann genau aus, ich möchte ja einen bestimmten pin
abfragen!

gruß manuwar

Autor: miwitt001 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich weiß nicht wie das bei Codevision ist, aber bei WinAVR musst du
schauen ob PINX gesetzt ist nicht PORTX. Also vielleicht so:

if((PIND.5==1)&&(PIND.1==1))// Schalter aktiv


Verbessert mich falls ich Blödsinn erzähl.
mfg Michael

Autor: miwitt001 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups da war wer schneller... Hätte wohl net so lang mitm abschicken
warten dürfen .....

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kenne den Codevision Compiler nicht.
Wenn der sowas kann wie PIND.x must Du nur PIND.5 statt PORTD.5
schreiben.
Bei WinAVR hiesse die erste if-Abfrage:
   if((PIND & 0x22)==0x22){...}
die zweite
   if((PIND & 0x22)==0){...}

also PIND lesen, benötigte Bits ausmaskieren und abfragen.

Uwe

Autor: Manuwar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke euch, mit pind.x hat alles wunderbar geklappt.
vielleicht könnt ihr mir hierbai auch weiterhelfen. ich hab eigene
funktionen für ein lcd (4x40)geschrieben. es funktioniert alles bis auf
die eine geschichte das ich kleinen zusammenhängenden text ausgeben
kann. hab dafür auch ne eigene funktion.
aufgerufen wird die funktion so: lcd_string("Hallo Welt");
Fehlermeldung: function parameter #1 incompatible with its declaration

der prototyp sieht so aus:void lcd_string (unsigned char
*ptr);  //Textausgabe

ich schick die funktionen mal als anhang mit, vielleicht könnt ihr mir
ja helfen! vielen dank auch
gruß manuwar

Autor: Marcel Meyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
arbeite auch mit codevision und das ganze sieht ähnlich aus wie bei den
anderen:

if((PINC & 0x08)!=0)  //0x08 gibt den schalter an, das wäre also
  {                   //portc pin PC3, 0x16 wäre dann pc4 usw.
  ....
  }

Autor: Manuwar (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
sorry, hier die funktionen

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.