MikroKopter-Wiki   •   SHOP   •   Video-Liste   •   MikroKopter-FAQ   •    English translation

Mikrocontroller- & MicroSPS-Forum » Software & Programmierung » Suche zwei functions für 1-wire Bus

Suche zwei functions für 1-wire Bus

Moderatoren: jamiro, ligi, P_Latzhalter.

Seite: 1

Autor Neuer Beitrag
Mitglied
Registriert seit: Jun 2008
Beiträge: 24
Ort: Offenbach am Main
Hallo zusammen,

Habe ein AVR-Experimentierboard (AVR-Ctrl) bestückt und in Betrieb genommen.
(ATmega644p 20 MHz Software WINAVR )
Alle Funktionen gehen problemlos - bis auf den Tempatatursensor DS1820.

Also habe ich mir aus dem Downloadbereich das kleine Demo Program
"DS1820 Temperatur des DS1820 (1-Wire-Bus) anzeigen" heruntergeladen.

Das ist soweit kein Problem und ist relativ schnell vom Chip type : AT90S8535
auf den ATmega644p umgeschrieben.

Hier fehlen mir allerdings zwei functions:

// 1 Wire Bus initialization
w1_init();

und

ds1820_temperature_10(NULL);

Außerdem wird auf zwei Header verwiesen:

#include <1wire.h>

// DS1820 Temperature Sensor functions
#include <ds1820.h>


Wo finde ich die passenden Header und Functions ?

Gruß
Bernhard
Mitglied
Registriert seit: Jun 2008
Beiträge: 24
Ort: Offenbach am Main
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.htm

Nachtrag am 19.8.2008
Fertig. Inzwischen funktioniert das 1-Wire Protokoll des DS1820
an den ATmega644p.
« Bearbeitet von dk9nw am 19.08.2008. »

Seite: 1

Mikrocontroller- & MicroSPS-Forum » Software & Programmierung » Suche zwei functions für 1-wire Bus

© Holger Buss & Ingo Busker   •  Mikrocontroller- & MicroSPS-Forum is powered by UseBB Forum Software