Hallo zusammen, an einem STM320F103 Bluepill habe ich einen DS18B20 angeschlossen. Dieser funktioniert auch für einige Zeit. Irgendwann aber erscheint nur noch der Wert 4095 und ich muss den Controller resetten. Ich habe mehrere Sensoren ausprobiert, immer mit dem selben Fehler. Angeschlossen habe ich diesen mit 5 V Versorgungsspannung und 3.3 V Portspannung. Ein 4k7-Pullup auf 3V3 ist ebenfalls eingebaut. Die eingestellten Zeiten in der tim.c passen ebenfalls. Die Programmierumgebung ist STM32CubeIDE und als Programmer kommt ein ST/Link V2 zum Einsatz. Als Ausgabe habe ich einen HD44780. Mein Code ist im Anhang. Was kann die Ursache für dieses Verhalten sein? Die Berechnung findet hier statt:
1 | float read_temperature(void) |
2 | {
|
3 | uint8_t check = 2; |
4 | uint8_t temp_l; |
5 | uint8_t temp_h; |
6 | uint16_t temp; |
7 | float temperature; |
8 | |
9 | check = sensor_init(); |
10 | |
11 | sensor_write(SKIP_ROM); |
12 | sensor_write(CONVERT); |
13 | delay_ms(200); |
14 | |
15 | sensor_init(); |
16 | sensor_write(SKIP_ROM); |
17 | sensor_write(READ_SCR); |
18 | |
19 | temp_l = sensor_read(); |
20 | temp_h = sensor_read(); |
21 | temp = (temp_h<<8)|temp_l; |
22 | temperature = (float)temp/16; |
23 | |
24 | return temperature; |
25 | }
|