Hallo,
scheint nicht so einfach zu sein, passende 1-wire Bus Funktionen zu finden.
Im Moment fange ich halt mal an das Ganze zu Fuß zu programmieren.
Immerhin reagiert der DS1820 auf meine " INITIALIZATION PROCEDURE:
All communication with the DS18S20 begins with an initialization sequence
that consists of a reset pulse from the master followed by a presence pulse from the DS18S20"
Das sieht dann bei mir so aus:
...
DDRD |= (1<<DDD4); // Port des Tempsensor auf PD4 auf Senden stellen
PORTD |= (1<<DDD4); // erst mal eine Weile per Warteschleife hochschalten
// -----------------------Warteschleife rote taste ----------------------------------------------------------------------
unsigned char c9 = 0x00;
while(1)
{
c9= ((PINA & 0xF8)>> 3) ; // Die Tasten sind an Pin PA3,PA4,PA5,PA6 und PA7 angeschlossen
if (c9 == 0x01) // rote Taste auf 1 angeschlossen
{
_delay_ms(300);
break;
}
}
// -----------------------Ende Warteschleife rote taste ----------------------------------------------------------------------
PORTD &= ~(1<<DDD4); // Port PD4 1 ms auf 0 stellen
_delay_ms(1);
DDRD &= ~(1<<DDD4); // nun PD4 auf Empfang umstellen
_delay_us(100); // 100 us später anwortet der DS1820
if ( (PIND & 0x10) == 0 )
{
PORTB=0x55; // das ist nur ein optischer Hinweis, daß der Port auch wirklich unten war
_delay_ms(500);
}
Na ja - ist nichts besonderes, aber zeigt immerhin daß der Fühler antwortet.
( Das - vorhandene - Einrücken wird hier in der Darstellung irgendwie "wegoptimiert")
Des weiteren habe ich die Funktionen ownet.c und temp10,c im Netz gefunden.
Gehören zur Familie der "1-Wire Net library"
Die müsste ich aber auch erst auf den ATmega644p umschreiben.
Mühsames Geschäft.
Gruß
Bernhard
PS Problem gelöst. Inzwischen habe ich die notwändigen Funktionen
über die Suche im mikrocontroller.net bei Peter Dannegger gefunden:
http://home.tiscali.de/peterd/appl/soft/c51/thclock/index.htmNachtrag am 19.8.2008
Fertig. Inzwischen funktioniert das 1-Wire Protokoll des DS1820
an den ATmega644p.
« Bearbeitet von
dk9nw am 19.08.2008. »