Hallo, > Ich verwende das NETIO von Pollin, Atmega32 ohne Anpassungen. > > Dann mache ich (ohne Polling): > 1w convert > OK > 1w get 289dfb0402000072 > 297.74 > > Dasselbe Ergebnis wie bei dem Webserver (http://192.168.0.65/ow.ht) > Besteht das Problem also nur beim Onewire ohne Polling?
Hmm. > Ich habe dann mal versucht das Onewire Polling zum Laufen zu bekommen... > Meine Config: > [*] Onewire device detection support > [ ] Onewire DS2502 (eeprom) support > [ ] Onewire DS2450 (4 channel ADC) support > [*] Onewire Polling > (600) Time between 1w-bus discoveries in 1s steps > (30) Time between polling in 1s steps > [ ] Hooks > [*] ECMD 1w list with values > [ ] ECMD 1w list with power mode > [*] Onewire naming support > (1) Maximum sensor count > [-] Onewire SNMP support > --- Debugging Flags > [*] Onewire ROM parsing (ECMD) > [ ] Onewire device detection (ECMD) > [-] Onewire DS2450 (core) > [-] Onewire DS2450 (ECMD) > [ ] Onewire Polling > > 1w name set 0 289dfb0402000072 netio > > 1w list > 289dfb0402000072 netio 0.0 > OK > > Dann dachte ich mir hm... Polling sollte doch irgendwas mit Zeit > voraussetzen, also > habe ich unter Applcation "System clock support" und dort dann "Use CPU clock > to > tick the clock" aktiviert. > Jetzt funktioniert das Polling auch. Hmm. Ich sehe im Code keine Abhängigkeit von der Clock. onewire.c ifdef(`conf_ONEWIRE_POLLING',`timer(50, ow_periodic())') Das Timermacro ist der ganz normal HZ-Tick in Ethersex. An dem hängt alles. > Aber dann die große Enttäuschung, auch hier, wenn es kalt wird, brennt bei > Ethersex die Hütte ab ;( > > 1w list > 289dfb0402000072 netio 319.31 1 > OK > > Mache ich etwas falsch? Ich habe den Aufruf in Verdacht: itoa_fixedpoint(ow_sensors[i].temp.val, ow_sensors[i].temp.twodigits + 1, temperature, sizeof(temperature)); Vermutlich verwendet du einen anderen Compiler als ich (gcc483) und Dein generierter Code sieht anders aus als meiner: #ifdef ONEWIRE_ECMD_LIST_VALUES_SUPPORT char temperature[7]; itoa_fixedpoint(ow_sensors[i].temp.val, ow_sensors[i].temp.twodigits + 1, temperature, 7b12: 20 91 6f 05 lds r18, 0x056F 7b16: 27 fb bst r18, 7 7b18: 66 27 eor r22, r22 7b1a: 60 f9 bld r22, 0 7b1c: 6f 5f subi r22, 0xFF ; 255 7b1e: 80 91 6e 05 lds r24, 0x056E 7b22: 92 2f mov r25, r18 7b24: 9f 77 andi r25, 0x7F ; 127 7b26: 88 0f add r24, r24 7b28: 99 1f adc r25, r25 7b2a: 27 e0 ldi r18, 0x07 ; 7 7b2c: ae 01 movw r20, r28 7b2e: 4f 5f subi r20, 0xFF ; 255 7b30: 5f 4f sbci r21, 0xFF ; 255 7b32: 6a 01 movw r12, r20 7b34: 95 95 asr r25 7b36: 87 95 ror r24 7b38: 0e 94 b8 07 call 0xf70 ; 0xf70 <itoa_fixedpoint> ow_sensors[i].temp.twodigits + 1, temperature, sizeof(temperature)); Ich kenne mich mit dem AVR-Assembler nicht aus, vermute aber dass es an der Vorzeichenexpansion liegen könnte. Ich würde an Deiner stelle mal ein Debug-printf in itoa_fixedpoint einbauen. > Darf ich dein Fork mal Testen? Jederzeit: https://github.com/eku/ethersex Komm doch bitte unseren IRC-Channel. Mail ist lästig und langsam. _______________________________________________ Ethersex-devel mailing list Ethersex-devel@list.zerties.org http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel