ForumPortal
Dein letzter Besuch: Aktuelle Zeit: 20. Jun 2018 15:15


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
AbonnentenAbonnenten: 1
LesezeichenLesezeichen: 0
Zugriffe: 190

AutorNachricht
 Betreff des Beitrags: Handbedienung 4out funktioniert nicht
BeitragVerfasst: 6. Aug 2017 11:17 

Registriert: 08.2013
Beiträge: 6
Geschlecht: nicht angegeben
Hi,

für die Emulation der Tasten einer Garagenfernbedienung mit Kleinsignalrelais möchte ich den 4fach Binärausgang verwenden. Dazu habe ich die 2TE Controller-Platine etwas umgebaut und mit Taster für Handbedienung, LEDS sowie Open-Collector Ausgängen für die Relais versehen sodass diese genau in ein kleines BOPLA Gehäuse passt. Um Störungen durch den Funk zu vermeiden sind die Relais direkt in der Fernbedienung verbaut und diese ist etwas Abgesetzt in einem eigenen Gehäuse montiert.
Bild

Die Steuerung über KNX funktioniert ganz normal, nur die Handbedienung ist nicht möglich. Mit der Version für HB am Controller (out4_h-3.39.hex) schalten sobald der KNX Bus angeschlossen wird alle Ausgänge durch. Die Taster für die Handbedienung sind funktionslos. Per Bus lassen sich die Ausgänge nach wie vor abschalten (und auch wieder einschalten).
Die Pulse für die HB sind vorhanden:

Alle Ausgänge Ein:
Bild
Alle Ausgänge Ein + Taster 4 gedrückt:
Bild
Alle Ausgänge Aus:
Bild
Alle Ausgänge Aus + Taster 4 gedrückt:
Bild

Ein kurzer Blick in den Sourcecode an die vermutlich betreffende Stelle sieht schon etwas merkwürdig aus (ab line 385 in fb_app_out.c). "n" wird zwar weiter oben gesetzt aber irgendwas scheint hier trotzdem nicht richtig zu sein:
Code:
   #ifdef MAX_PORTS_4
//      ledport=0x01;
//      for (n=0;n<4;n++) {
         P0=~bitmask_1[n];
         P0_5=1;         //P0.5 auf 1, wird über Dioden und taster auf low IO gezogen.
//         for(m=0;m<10;m++);
         if (!P0_5){
           Tasten=bitmask_1[n];
           }
//           ledport=ledport<<1;
//      }
//TODO
         P0=oldportbuffer|0x20;//|20 ist neu--> TESTEN  port zurückschreiben
   #endif


Für eine genauere Analyse müsste ich wesentlich genauer in den Code graben was sehr Zeitaufwändig ist.
Hoffentlich kann mir jemand weiterhelfen wo hier das Problem sein könnte oder ob HB für die 4out gar nicht fertig implementiert ist.

mfg
Rupert


Nach oben
Offline Profil  
 
 Betreff des Beitrags: Re: Handbedienung 4out funktioniert nicht
BeitragVerfasst: 8. Aug 2017 08:07 

Registriert: 05.2013
Beiträge: 612
Geschlecht: nicht angegeben
Hallo, Ich habe die im Einsatz. Wichtig ist, dass eine andere Leitung zum abscannen als beim 8out verwendet wird. (Hier P0_5).
Ich kann nicht ausschließen dass sich ein Fehler später in der Evulation eingeschlichen hat.
Vermutlich wird n in der Hauptschleife hochgezählt, so haben wir die Abfragefrequenz mal geändert.
Vorher haben wir alle 65ms alle Taster auf einmal gefragt. Später dann in jedem Zeitschlitz immer nur einen.

_________________
liebe Grüße
Andreas


Nach oben
Offline Profil  
 
 Betreff des Beitrags: Re: Handbedienung 4out funktioniert nicht
BeitragVerfasst: 8. Aug 2017 10:09 

Registriert: 08.2013
Beiträge: 6
Geschlecht: nicht angegeben
Hi,

Also n wird mittels maske über die globale variable
Code:
unsigned char Tval,Taster_ctr;

gesetzt und bei jedem aufruf erhöht! Mit der Maske "&0x07" fährt diese auf jedenfall über 0-3 hinaus, im auskommentierten code wird nur von 0-3 gezählt. Ob der "Überlauf" die Fehlfunktion auslösen könnte hab ich mir noch nicht angeschaut...

Welche Version hast du auf deinen Aktoren wo die Handbedienung funktioniert?

Code:
void handbedienung(void)
{
   unsigned char n;
   unsigned char Tasten=0;
   unsigned char ledport,m,P0_old;
__bit Taste=0;
   Taster_ctr++;
   n=Taster_ctr&0x07;
//   unsigned char n;
ledport;

      //+++++++   Handbetätigung  ++++++++++

   if((TMOD&0x0F)==0x02 && fb_state==0) {
//      ET1=0;

      #ifdef MAX_PORTS_8

      while(  (!PWM || (TL0>0x72)));// PWM scannen um "Hand"-Tasten abzufragen

      #endif
      #ifdef MAX_PORTS_4
      while( (TMOD&0x0F)==0x02 && ( TL0>0x72));// PWM scannen um "Hand"-Tasten abzufragen
      #endif
      interrupted=0;
      P0_old=P0;// Port sichern
   #ifdef MAX_PORTS_8
      #ifdef zeroswitch
      P1_0=1;   // TXD wird über Dioden auf low gezogen.
      #else
      P1_3= 1;             //int0 auf 1, wird über Dioden und taster auf low IO gezogen.
      #endif
      P0=~bitmask_1[n];
      for(m=0;m<5;m++);
      #ifdef zeroswitch
         Taste=P1_0; // check TXD IO
      #else
         Taste=P1_3;// check INT0 IO
      #endif
         P0=P0_old;// port zurückschreiben
   #endif

   #ifdef MAX_PORTS_4
//      ledport=0x01;
//      for (n=0;n<4;n++) {
         P0=~bitmask_1[n];
         P0_5=1;         //P0.5 auf 1, wird über Dioden und taster auf low IO gezogen.
//         for(m=0;m<10;m++);
         if (!P0_5){
           Tasten=bitmask_1[n];
           }
//           ledport=ledport<<1;
//      }
//TODO
         P0=oldportbuffer|0x20;//|20 ist neu--> TESTEN  port zurückschreiben
   #endif
      //if (interrupted==1) Tasten=Tval;  // wenn unterbrochen wurde verwerfen wir die Taste
         //Tasten = Tval; // ##############  <----- Hier wird Handbetätigung quasi mit ausgeschaltet !! #########################
      if (!Taste){
        Tasten= bitmask_1[n];
        }
      if ((Tasten&bitmask_1[n])!= (Tval&bitmask_1[n]))  {
         portbuffer=oldportbuffer;
           ledport=(Tasten&~Tval)& bitmask_1[n]; // ledport ist hier die Hilfsvariable für steigende Flanke
           if (ledport){
              portbuffer^=ledport; // bei gedrückter Taste toggeln
              portchanged=1;
           }
           Tval|=(Tasten & bitmask_1[n]);         //neue Taste sichern
           Tval&=(Tasten|(~bitmask_1[n]));
      }
//      ET1=1;
   }

}
#endif


Nach oben
Offline Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron
Powered by phpBB® Forum Software © phpBB Group | Theme created StylerBB.net
phpBB3 Forum von phpBB8.de
» Kontakt & Rechtliches Support / Hilfe Forum Gooof Webdesign Kostenloses Forum Dein Forumo Forum web tracker