4temp mit neuer Lib kompilieren
-
- Beiträge: 645
- Registriert: 17. Mai 2013, 20:57
- Kontaktdaten:
Re: 4temp mit neuer Lib kompilieren
Hallo Stefan,
sei vorsichtig beim code aufräumen. Wenn du alles schön lesbar in kleine funktionen packst wirst du schnell ein langes gesicht machen
Unser (leider) Spaghetti code hat seinen Grund in dem geringerem Speicherverbauch.
Solange du mit dem code unter 0x1BFF bist, ist das setzen über write_byte sinnvoller.
Du flasht dann immer mit 'erease by hex file' wobei dir die PA GA PARAS erhalten bleiben.
Das spart sehr viel Zeit beim try&findout. Wenn es oben dann sehr knapp wird kannst du
auf code... übergehen. Dann wird hersteller usw per compiler reingedrückt.
Also auf gehts...
Das Schreiben und Lesen der Objekt ist ganz alleine DEINE Sache. Es wurde früher im userram, was flashen und 3ms idle bedeutet gemacht, einfach gehts in den Ram schreiben.
write_obj_value und read_obj_value. übergabe war glaube ich 'long' parameter die objektnummer.
send_value() gibt es nicht mehr.
1. Man muss die value in das objekt schreiben(entweder mit write_obj_value(objno) oder oftmals kürzer direkt in die variable zum Bsp Analogwert[objno] klar?
2. Man gibt das Objekt in den sende-Puffer
while!send_obj_value(Objektnummer));
Die Funktion gibt uns eine Erfolgsmeldung zurück. Ist diese 0 , so ist der sendepuffer gerade voll. im obigen Beispiel warten wir. Im out8 in der main siehst du wie man besser damit umtun kann. Hier wird je objekt in der app ein sendebit gesetzt und in der main bei
erfolgreichen Eintragen in den sendepuffer gelöscht.
3. Die lib holt sich die Objektnummer aus dem Sendepuffer und sendet diese. Dazu ruft sie die read_obj_value(objno) auf. Wenn du also den Analogwert in Eis5( oder sonst was), erst beim Senden wandeln willst, kannst du das auch hier machen.
Ich habe in der Wetterstation noch eine Funktion dazwischen gesetzt.
read_obj_data(objno)
Das war nötig weil ich zum vergleichen die daten nicht so brauchen konnte wie sie gesendet werden. Hier ruft dann read_obj_value(objno) die read_obj_data(objno) auf.
Ich hoffe dir geholfen zu haben. Vermutlich alle Klarheiten beseitigt
weiterhin viel Erfolg.
sei vorsichtig beim code aufräumen. Wenn du alles schön lesbar in kleine funktionen packst wirst du schnell ein langes gesicht machen
Unser (leider) Spaghetti code hat seinen Grund in dem geringerem Speicherverbauch.
Solange du mit dem code unter 0x1BFF bist, ist das setzen über write_byte sinnvoller.
Du flasht dann immer mit 'erease by hex file' wobei dir die PA GA PARAS erhalten bleiben.
Das spart sehr viel Zeit beim try&findout. Wenn es oben dann sehr knapp wird kannst du
auf code... übergehen. Dann wird hersteller usw per compiler reingedrückt.
Also auf gehts...
Das Schreiben und Lesen der Objekt ist ganz alleine DEINE Sache. Es wurde früher im userram, was flashen und 3ms idle bedeutet gemacht, einfach gehts in den Ram schreiben.
write_obj_value und read_obj_value. übergabe war glaube ich 'long' parameter die objektnummer.
send_value() gibt es nicht mehr.
1. Man muss die value in das objekt schreiben(entweder mit write_obj_value(objno) oder oftmals kürzer direkt in die variable zum Bsp Analogwert[objno] klar?
2. Man gibt das Objekt in den sende-Puffer
while!send_obj_value(Objektnummer));
Die Funktion gibt uns eine Erfolgsmeldung zurück. Ist diese 0 , so ist der sendepuffer gerade voll. im obigen Beispiel warten wir. Im out8 in der main siehst du wie man besser damit umtun kann. Hier wird je objekt in der app ein sendebit gesetzt und in der main bei
erfolgreichen Eintragen in den sendepuffer gelöscht.
3. Die lib holt sich die Objektnummer aus dem Sendepuffer und sendet diese. Dazu ruft sie die read_obj_value(objno) auf. Wenn du also den Analogwert in Eis5( oder sonst was), erst beim Senden wandeln willst, kannst du das auch hier machen.
Ich habe in der Wetterstation noch eine Funktion dazwischen gesetzt.
read_obj_data(objno)
Das war nötig weil ich zum vergleichen die daten nicht so brauchen konnte wie sie gesendet werden. Hier ruft dann read_obj_value(objno) die read_obj_data(objno) auf.
Ich hoffe dir geholfen zu haben. Vermutlich alle Klarheiten beseitigt
weiterhin viel Erfolg.
liebe Grüße
Andreas
Andreas
-
- Beiträge: 163
- Registriert: 15. Feb 2014, 13:32
Re: 4temp mit neuer Lib kompilieren
Hallo Andres,
das Hilft schon mal einen Überblick zu bekommen, wenngleich es auch wieder Fragen aufwirft. Soweit ich das bis jetzt verstanden habe wird alles über Objektnummern gemacht, also die GAs wie auch die Parameter. Wo finde ich denn die Liste der Objektnummern die von der ETS geschrieben werden? Kann man die einfach aus dem alten Code übernehmen, diese werden doch durch das VD File vorgegeben, oder bin ich jetzt auf dem Holzweg.
Wie wäre es wenn ich meinen "Versuch" im software-incubator hochlade, das ist vielleicht am einfachsten. Wenn die Portierung dann fertig ist kann es ins software repository übernommen werden.
Gruss
Stefan
das Hilft schon mal einen Überblick zu bekommen, wenngleich es auch wieder Fragen aufwirft. Soweit ich das bis jetzt verstanden habe wird alles über Objektnummern gemacht, also die GAs wie auch die Parameter. Wo finde ich denn die Liste der Objektnummern die von der ETS geschrieben werden? Kann man die einfach aus dem alten Code übernehmen, diese werden doch durch das VD File vorgegeben, oder bin ich jetzt auf dem Holzweg.
Wie wäre es wenn ich meinen "Versuch" im software-incubator hochlade, das ist vielleicht am einfachsten. Wenn die Portierung dann fertig ist kann es ins software repository übernommen werden.
Gruss
Stefan
-
- Beiträge: 645
- Registriert: 17. Mai 2013, 20:57
- Kontaktdaten:
Re: 4temp mit neuer Lib kompilieren
Die Objektnummern stehen in der ETS neben den gelben kästchen(für prakmatiker )
zum Bsp 0 und Beschriftung 'Eingang1'. Du kannst diese klar aus dem alten code nehmen.
Die parameter werden aus dem eeprom[adr] gelesen. Da hilft nur die VD Auswertung von Erich's tool. Oder aus dem alten code rauslesen.
zum Bsp 0 und Beschriftung 'Eingang1'. Du kannst diese klar aus dem alten code nehmen.
Die parameter werden aus dem eeprom[adr] gelesen. Da hilft nur die VD Auswertung von Erich's tool. Oder aus dem alten code rauslesen.
liebe Grüße
Andreas
Andreas
-
- Beiträge: 163
- Registriert: 15. Feb 2014, 13:32
Re: 4temp mit neuer Lib kompilieren
Klar, auf die Objektnummer in der ETS hätte ich auch kommen können. Ich schaue mal wie weit ich nun damit komme. Das VD Tool ist anscheinend in Java geschrieben, da muss ich erst einmal sehen das ich es ans laufen bekomme
/Stefan
/Stefan
-
- Beiträge: 645
- Registriert: 17. Mai 2013, 20:57
- Kontaktdaten:
-
- Beiträge: 163
- Registriert: 15. Feb 2014, 13:32
Re: 4temp mit neuer Lib kompilieren
Das habe ich dann wohl übersehen. Wo liegt das Tool denn?
-
- Beiträge: 645
- Registriert: 17. Mai 2013, 20:57
- Kontaktdaten:
Re: 4temp mit neuer Lib kompilieren
Frag mal im chat danach , ich weiss nicht ob das wo liegt
liebe Grüße
Andreas
Andreas
Re: 4temp mit neuer Lib kompilieren
Stefan, damit das ja nicht übersehen wird: ich habe auf Anfrage von erich73 eine ID für die 4fach Temp Applikation auf unserer Wiki Seite vergeben. Die ID ist 1080 (dezimal).
Zur Erklärung: die ID wird von ETS verwendet und in der VD eingetragen. Sie muss, glaube ich, auch im Programm gesetzt werden.
Zur Erklärung: die ID wird von ETS verwendet und in der VD eingetragen. Sie muss, glaube ich, auch im Programm gesetzt werden.
-
- Beiträge: 163
- Registriert: 15. Feb 2014, 13:32
Re: 4temp mit neuer Lib kompilieren
Ja danke, hab es gerade im IRC gesehen. Wenn die Vorhandene App mit der Lib läuft, geht es an die eigene VD. Parameter herunterladen funktioniert schon mit der neuen 4Temp
-
- Beiträge: 163
- Registriert: 15. Feb 2014, 13:32
Re: 4temp mit neuer Lib kompilieren
Die erste Beta der 4temp Firmware ist nun fertig, wer möchte kann gerne testen. Zu findest ist die neue FW im Git unter Software-incubation/4temp_withLIB.
Bei dieser Version werden die DS1820 direkt an den IOs 1-4 angeschlossen (3.3V und VCC nicht vergessen), die 4temp Platine ist nicht nötig.
Bei dieser Version werden die DS1820 direkt an den IOs 1-4 angeschlossen (3.3V und VCC nicht vergessen), die 4temp Platine ist nicht nötig.