freebus.org
http://freebus.org/phpBB3/

BUG in AVR 8 Out? Rückmeldeobjekte
http://freebus.org/phpBB3/viewtopic.php?f=25&t=1814
Seite 1 von 1

Autor:  KrasserMann [ 10. Januar 2012 21:19 ]
Betreff des Beitrags:  BUG in AVR 8 Out? Rückmeldeobjekte

Hallo,

habe heute beim Programmieren meiner neuen MDT Taster durch das nicht funktionieren der
Status LEDs festgestellt, dass der AVR 8Out anscheind keine Rückmeldungen sendet wenn der Kanal eine Zeitfunktion
nutzt.

Ich habe auf einem Aktor alle 8 Kanäle belegt, Jedem Kanal ist eine GA für die Rückmeldung zugewiesen.

Bei den normalen Schaltkanälen kommt die Rückmeldung auch brav. Bei den 3 mit beigefügter Zeitfunktion konfigurierten
Kanälen jedoch nicht. Weder eine Rückmeldung fürs Einschalten noch fürs zeitgesteuerte Ausschalten.


Kann das vielleicht mal jemand überprüfen?

Besteht die Möglichkeit das dies kurzfristig behoben werden kann?

Vielen lieben Dank

Gruß Martin

Dateianhänge:
rm.jpg
rm.jpg [ 48.58 KiB | 687-mal betrachtet ]

Autor:  KrasserMann [ 11. Januar 2012 23:19 ]
Betreff des Beitrags:  Re: BUG in AVR 8 Out? Rückmeldeobjekte

Update:

Ich hab das eben mit dem ETS Busmonitor mal Überprüft.

Der AVR sendet wenn die Zeitfunktion Aktiv ist nur eine Rückmeldung für den Abschaltvorgang, Keine fürs Einschalten.

Im gegensatz dazu sendet ein LPC brav beide Rückmeldungen.

Bitte fixt den Bug kurzfristig.

Vielen Dank, gruss Martin

Autor:  KrasserMann [ 17. Januar 2012 23:38 ]
Betreff des Beitrags:  Re: BUG in AVR 8 Out? Rückmeldeobjekte

Ok, nachdem ich die Sourcen gefunden hatte hab ich mich selbst ans Werk gemacht.

mit diesem Patch bekomme ich nun auch für alle Statusänderungen Rückmeldungen.

Was noch nicht implementiert ist ist die Überprüfung ob es zu einem Kommunikationsobjekt ein Rückmeldeobjekt gibt.

Gruß Martin

Code:
*** original.c   2012-01-17 22:26:56.000000000 +0100
--- fb_relais_app.c   2012-01-17 22:24:36.866477800 +0100
***************
*** 158,164 ****
              // DEBUG_PUTHEX(portValue);
 
              /* send response telegram to inform other devices that port was switched */
!             sendTelegram(i,(portValue & j)?1:0, 0x0C);
 
              switchObjects();
          }
--- 158,164 ----
              // DEBUG_PUTHEX(portValue);
 
              /* send response telegram to inform other devices that port was switched */
!             //sendTelegram(i,(portValue & j)?1:0, 0x0C); //CommentKrasserMann
 
              switchObjects();
          }
***************
*** 547,557 ****
 
          //** @todo need to check here for respond
          // send response telegram to inform other devices that port was switched
!         sendTelegram(commObjectNumber, data, 0x0C);
      }
      switchObjects();
  }
!
  /**
   * Switch the objects to state in portValue and save value to eeprom if necessary.
   *
--- 547,558 ----
 
          //** @todo need to check here for respond
          // send response telegram to inform other devices that port was switched
!         //sendTelegram(commObjectNumber, data, 0x0C);  //Comment: KrasserMann
      }
      switchObjects();
  }
!
!
  /**
   * Switch the objects to state in portValue and save value to eeprom if necessary.
   *
***************
*** 561,567 ****
      uint16_t initialPortValue;
      uint8_t portOperationMode;  /**< defines if IO is closer or opener, see address 0x01F2 in eeprom */
      uint8_t savedValue;
!     uint8_t i;
 
      DEBUG_PUTS("Sw");
      DEBUG_NEWLINE();
--- 562,570 ----
      uint16_t initialPortValue;
      uint8_t portOperationMode;  /**< defines if IO is closer or opener, see address 0x01F2 in eeprom */
      uint8_t savedValue;
!     uint8_t i;
!    uint8_t pattern;
!
 
      DEBUG_PUTS("Sw");
      DEBUG_NEWLINE();
***************
*** 573,579 ****
 
      /* read saved status and check if it was changed */
      savedValue = mem_ReadByte(0x0100);
!     if(savedValue != portValue) {
          // now check if last status must be saved, we write to eeprom only if necessary
          initialPortValue = ((uint16_t)mem_ReadByte(0x01F7) << 8) | ((uint16_t)mem_ReadByte(0x01F6));
          for(i=0; i<=7; i++) {
--- 576,596 ----
 
      /* read saved status and check if it was changed */
      savedValue = mem_ReadByte(0x0100);
!     if(savedValue != portValue) {
!
!
!       // R�ckmeldungen Senden ( @todo pruefen ob ein r�ckmeldeobjekt besteht)
!       for (i=0;i<8;i++) {
!          pattern=1<<i;
!          if((portValue&pattern)!=(savedValue&pattern)) {
!             sendTelegram(i, (portValue & pattern) ? 1 : 0, 0x0C);
!          }
!          
!       }
!
!
!
!
          // now check if last status must be saved, we write to eeprom only if necessary
          initialPortValue = ((uint16_t)mem_ReadByte(0x01F7) << 8) | ((uint16_t)mem_ReadByte(0x01F6));
          for(i=0; i<=7; i++) {

Seite 1 von 1 Alle Zeiten sind UTC + 2 Stunden
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/