Re: 4temp mit neuer Lib kompilieren
Verfasst: 3. Apr 2014, 09:29
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.