Forum: Compiler & IDEs delay auf atmega für onewire


von Andreas K. (eisenkoch)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?

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.

von Andreas K. (eisenkoch)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

1-wire geht aber auch mit Timer:

Beitrag "DS1820, DS18B20 in C"


Peter

von Bernd (Gast)


Lesenswert?

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
}

von Elektrikser (Gast)


Lesenswert?

Pull-Up-Widerstand vergessen?

Gruß Elektrikser

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
Noch kein Account? Hier anmelden.