Seite 2 von 2

Re: Maskenversion 7.5

Verfasst: 27. Feb 2020, 23:23
von Doumanix
Hi Uwe,

weil es hier ja nochmal um einen Dimmer geht und ich auch meine mich erinnern zu können, dass du mal Dimmkurven ins Git geladen hattest: welche Hardware nutzt du denn dazu?
Der wirds ja kaum sein: https://selfbus.myxwiki.org/xwiki/bin/v ... _2x230_4TE
Und der wohl auch nicht: https://selfbus.myxwiki.org/xwiki/bin/v ... _3xRGB_LED
Ja aber was denn dann? Gibt's dazu schon was?

Grüße
Christian

Re: Maskenversion 7.5

Verfasst: 28. Feb 2020, 18:32
von uwe223
Hallo Christian,
ja stimmt, die Dimmkurven hatte ich mal aufgenommen bevor ich den LED-Controller verbaut habe. Ich dachte das könnte für das Projekt im Git nützlich sein, aber das ruht ja nun schon eine Weile.
Eine Hardware hab ich jetzt noch nicht, im Moment werden hier nur LEDs auf dem Steckbrett heller und dunkler. Ich habe aber den 3xRGB LED schon einige Jahre im Einsatz und der funktioniert eigentlich gut, also werde ich den mal um einen Kanal erweitern und testen.
Bei Erfolg lade ich natürlich alles hoch.

Gruß
Uwe

Re: Maskenversion 7.5

Verfasst: 4. Mär 2020, 21:13
von Olli
Hallo Uwe,

ich habe ein wenig recherchiert und herausgefunden, dass die USER_EEPROM_SIZE 256, 512, 1024 oder 4096 betragen sollte (vgl. User Manual UM10398 für LPC1115, Kapitel 26.7.2, Seite 442)

Dort ist die iap Funktion "copy to flash" beschrieben, die über den folgenden Weg nach der Übermittlung der physikalischen Adresse aufgerufen wird:

main() -> BCU::loop() -> BcuBase::loop() -> processTelegram() -> setOwnAddress(...) -> userEeprom.modified()

anschließend

main() -> BCU::loop() -> writeUserEeprom() -> iapProgram(page, userEepromData, USER_EEPROM_SIZE)

In iapProgram wird die USER_EEPROM_SIZE dann direkt durchgeschleift in den Parameter Param2, welcher in den oben angegeben Dokument beschrieben wird.

Mit einer Größe von 4096 kann ich die physikalische Adresse problemlos programmieren.
Zumindest dann, wenn ich die #define MASK_VERSION 0x705 in bcu_type.h einstelle.

Eventuell kommst du so noch ein Stück weiter?

Grüße,
Olli

Re: Maskenversion 7.5

Verfasst: 7. Mär 2020, 11:42
von uwe223
Hallo Olli,

danke für Deine Recherche.
Mit USER_EEPROM_SIZE 4096, MASK_VERSION 0x705 und der richtigen Hardwarekennung kann ich die phys. Adresse setzen und auch das Programmieren des Applikationsprogramms läuft jetzt komplett durch.
Leider reagiert der Controller jedoch nicht auf die programmierten Gruppenadressen. Ich habe eine leere loop() und damit sollte zumindest ja das lesen der Gruppenadressen gehen. Es kommt jedoch nicht mal ein ack vom Controller zurück. Ich denke da ist wohl die Adresstabelle jetzt woanders.
Aber so detailliert steig ich da nicht wirklich durch.

Gruß
Uwe

Re: Maskenversion 7.5

Verfasst: 7. Mär 2020, 19:15
von Olli
Hallo Uwe,

da ich das Programmieren mit deiner angestrebten knxprod bisher nicht hinbekommen habe, könntest du die bisherigen Sourcen evtl in Github stellen, sodass ich das mal probieren kann.

Oder sonst als zip an mich per Mail: o.stefan252 [at] gmail.com

Eventuell bekomme ich heraus, wo die Adressen geblieben sind.

Grüße,
Olli

Re: Maskenversion 7.5

Verfasst: 7. Mär 2021, 11:41
von Darthyson
Hallo Uwe & Olli,

wie ist denn der Stand hier?
Für mich klingt das u.a. nach diesem Problem.
Eventuell kann jemand die MDT-Prduktdatenbank verlinken?

Viele Grüße
Denis

Re: Maskenversion 7.5

Verfasst: 23. Mär 2021, 18:41
von Darthyson
Hallo Uwe,

falls es hier mal weitergehen sollte. Falls nicht, vielleicht hilft es jemandem anderem mit einem ähnlichen Problem.
uwe223 hat geschrieben: 26. Feb 2020, 18:20

Code: Alles auswählen

_bcu.enableGroupTelSend(false);
deaktiviert das Senden von Gruppentelegrammen, daher auch keine Komunikation auf den Gruppenadressen. Ohne diese Zeile sollte es funktionieren.

Ich vermute mal, dass es ursprünglich um diese MDT-Produktdatenbank hier ging. Die Adresse der ComObjectTable (0x4400) wird bei dieser eigentlich korrekt von der ETS übermittelt. Hier mal als Beispiel für den AKD-0424R.02 LED Controller 4 Ch/RGBW, MDRC

Code: Alles auswählen

handleLoadStateMachine: objectIdx=0x03 OT_APPLICATION loadstate=0x05 LS_LOADCOMPLETING
handleAllocAbsTaskSegment: objectIdx=0x03 OT_APPLICATION Data: 44 00 00 00 83 00 40 24 len: 8
  --> startaddress: 0x4400 PEI: 0x00 Manufacturer: 0x0083 AppID: 0x0040 Vers.: 0x24
  ----> userEeprom.commsTabAddr == 0x4400
  ----> userEeprom.appPeiType == 0x00
  ----> userEeprom.manufacturerH & L == 0x0083
  ----> userEeprom.deviceTypeH & L == 0x0040
  ----> userEeprom.version == 0x24
Ebensowenig ist eigentlich die Verwendung des MemMapperMod's notwendig. Der ist relativ speziell für den out6-cs-bim112. Mit folgenden Änderungen müßte man nicht einmal USER_EEPROM_SIZE auf 4096 ändern:

Code: Alles auswählen

MemMapper memMapper(0xe900, 0x500);

....

void setup()
{
    ...
    _bcu.setMemMapper(&memMapper);
    if (memMapper.addRange(0x4A00, 0x400) != MEM_MAPPER_SUCCESS)
    {
        fatalError();
    }
    ...
}
Viele Grüße
Denis