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 | void wait (uint16_t zeit) //zeit: wartezeit in ms (0 bis 65536) |
2 | {
|
3 | uint16_t i; |
4 | for(i=0;i<zeit;i++) _delay_ms(1); |
5 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.