Hallo,
ich habe folgendes Problem.
Meine OnewireBusAbfrage funktioniert nicht. Es ist sehr schwierig
einzukreisen . Immer bekomme ich nur "no sensor found"
*Port am Atmega habe ich getauscht
*DS18S20 gegen anderen ausgetauscht
*Pins kontoliert
*etc....
ich vermute es hängt mit dem delay zusammen, daher habe ich folgendes
gemacht
------
#include <avr/delay.h>
.
.
.
printf_P (PSTR("=> start 5sec\r\n"));
_delay_us(5000000);
printf_P (PSTR("=> stop 5sec\r\n"));
------
das sollte doch 5 sec pause machen, oder?
auch die quellen von
http://www.siwawi.arubi.uni-kl.de/avr_projects/tempsensor/index.html
bringen mich nicht weiter. Wo kann ich ansetzen
Erstens wäre es Unfug, mit einer µs-Delay-Funktion eine Verzögerung im Sekundenbereich erreichen zu wollen, da es immerhin auch eine _delay_ms()-Funktion gibt. Zweitens: Die _delay_xx()-Funktionen sind begrenzt. Man sollte in solchen Fällen nicht in irgendwelchen ominösen Weblinks rumsuchen, sondern einfach einen Blick in die AVR-libc-Dokumentation werfen. Da steht die maximale Zeit, die mit einem _delay_us und einem _delay_ms möglich ist (abhängig von der Taktfrequenz des µC). Drittens sind die _delay_xx()-Funktionen für kurze Verzögerungen gedacht und keinesfalls für Verzögerungen im Sekundenbereich (die man sowieso vermeiden sollte). Für so was gibts, wenn erforderlich, Timer.
gut... war ja auch nur als Beispiel gedacht, das eigentliche Problem ist das der selbst der code von: http://www.siwawi.arubi.uni-kl.de/avr_projects/tempsensor/index.html keinen Sensor findet. Wo kann ich suchen /typische Fehlerquellen?
1-wire geht aber auch mit Timer: Beitrag "DS1820, DS18B20 in C" Peter
Gast
#568010
1 | |
2 | |
3 | |
4 | |
5 | |
Gast
#568148
Pull-Up-Widerstand vergessen? Gruß Elektrikser