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
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!
dank dir für die antwort, wie sieht das dann genau aus, ich möchte ja einen bestimmten pin abfragen! gruß manuwar
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
Ups da war wer schneller... Hätte wohl net so lang mitm abschicken warten dürfen .....
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
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
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. .... }
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.