Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Programmfehler beim Drehgeber Kategorie: Programmierung (von wema - 28.07.2005 22:08)
Als Antwort auf Programmfehler beim Drehgeber von Markus - 28.07.2005 19:59
Ich nutze:
C164CI-ControllerBoard, CC2-ReglerBoard, OSOPT V3.0
> Hallo, ich habe von WEMA ein Programm erhalten aber bekomme meinen Drehgeber nicht zum laufen...
> Vielleicht macht sich ja mal jemand die Mühe und kann den Quellcode bei sich ausprobieren??!!
> Also ich besitze einen Drehgeber von Fa. Conrad und gehe an den Timer3 Port (FRQ1) und den Host
> Port, habe auch die Interfaceschaltung im Einsatz und der Taster geht auf P1H0.
> Ich möchte halt einfach nur dass mir ein Wert ausgegeben wird....
>  
>
>
>
> long position, position_alt;
> byte min,max,wert;
>
> //------------------------------------------------------------------------
> function abfrageDrehgeber (int wert,int min,int max,byte cur)
> //------------------------------------------------------------------------
>
> { lcdext.init();
>   while not inkremental.getPushKey()//  alle nachfolgenden Befehle werden solange
>         //  wiederholt, bis der Drehknopf gedrückt wird,. Dann wird die ganze
>         //  Funktion verlassen
>   {
>     position=inkremental.get_position();
>     if position < position_alt-10  //Wird der Drehregler nicht betätigt, ändern
>     //sich die Werte auch nicht und die IF-Funktion wird nicht ausgeführt
>     {
>       position_alt=position;
>       wert=wert-1;
>       if wert==min-1  wert=max;
>       lcdext.goto(1,cur);  
>       lcdext.zahl2(wert);
>       lcdext.cursorleft();
>     }
>     else if position > position_alt+10  
>     {
>       position_alt=position;
>       wert=wert+1;
>       if wert==max+1   wert=min;
>
>       lcdext.goto(1,cur);
>       lcdext.zahl2(wert);
>       lcdext.cursorleft();
>     }
>   }
> }
>
> //------------
>   thread main
> //------------
> {
>   abfrageDrehgeber(50,2,99,3);
>   inkremental.init(8);
>   halt;
>  
> }


Hallo Markus,

ich hatte es ja bereits erwähnt, aber um grundsätzliche Dinge zu wissen, solltest Du doch bitte zuerst
das Handbuch in Ruhe durcharbeiten. Ohne dem geht es nicht:
Du hast im mainthread ZUERST die Funktion "abfrageDrehgeber" aufgerufen und dann erst
den inkrementalregler initiiert. Es MUSS umgekehrt sein. AuÃ?erdem setzt man das lcdext.init
nur einmal zu Beginn ein und nicht jedesmal beim Aufruf der Funktion, also z.B. als erster Befehl
im Mainthread.

Bei mir funktioniert die Abfrage anstandslos, ich habe jedoch auch einen Regler mit entspr. Board
direkt bei Andre gekauft ("Werbung aus") ;-)) - da konnte von den Anschlüssen eigendlich auch
nicht viel schiefgehen.

GruÃ?,
Heiko (wema)


    Antwort schreiben


Antworten:

Re: Programmfehler beim Drehgeber (von Markus - 28.07.2005 22:36)