PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [gelöst] DS1820 will nicht mit mega8



goof1980
14.07.2008, 21:36
hallo,

habe schon im forum einiges zum ds1820 gefunden und versucht, finde aber keine lösung.
ich habe einen ds1820 den ich auslesen will. die temperatur soll dann auf einer 7-segmentanzeige ausgegeben werden. habe das ganze schonmal auf einem at8515 zum laufen gehabt, da es aber nen mega8 werden soll eben umgebaut. und dort funktioniert aus irgend einem grund das auslesen nicht mehr. ich hab den quelltext jetzt wieder komplett eingekürzt das nur das auslesen des ds1820 und einfach die ausgabe der bytes auf meine 7-segmentanzeige durchgeführt wird. das sieht jetzt so aus:



' Deklaration
$regfile = "m8def.dat" ' für Mega8515
$crystal = 8000000 ' für 8MHz Quarz

' Temperatursensor (DS1820) - Port festlegen
Config 1wire = Portc.5

' SPI Bus (Hardware) als Master konfigurieren
Config Spi = Hard , Master = Yes , Polarity = Low , Phase = 1 , Data Order = Lsb
Config Portc.2 = Output ' !!! für D718D
Config Portc.3 = Output ' !!! für D718D
Portc.2 = 1 ' !!! für D718D
Spiinit ' SPI Bus initialisieren


' Bytes für die SPI-Daten
Dim Serpa(4) As Byte

' Bytes für Wert vom DS1820 Temperatur
Dim Ar(9) As Byte


1wreset
1wwrite &HCC
1wwrite &H44
Waitms 500
1wreset
1wwrite &HCC
1wwrite &HBE
Waitms 500
Ar(1) = 1wread(9)


' Ausgabe der 7-Segmentanzeige
Portc.3 = 1 ' !!! für D718D
Serpa(1) = Ar(3) ' Bits zuweisen
Serpa(2) = Ar(2)
Serpa(3) = Ar(1)
Serpa(4) = &B11111110
Spiout Serpa(1) , 4 'rausschicken
Portc.3 = 0 ' !!! für D718D


End


es kommt aber nichts an, besser gesagt, alle bytes haben f.
wechsel ich aber den port des ds1820 z.b. auf portb.0 kommen nur 0en an.
wenn ich den code aber so umändere das ich aus dem "m8def.dat" nen "m8515.dat" mache, den mikrocontroller tausche, noch mosi und sck für meine schieberegister umstecke funktioniert das wunderbar. die 7-segmentanzeige zeigt was an (natürlich noch unformatiert) und die werte ändern sich wenn ich den ds1820 erwärme und das programm neu starte.

ich hoffe es hat einer eine idee denn ich bin ratlos.

vielen dank vorab.

gruss Christian

PS: falls es eine rolle spielt, ich verwende nen stk500 und die softwareversion von bascom ist 1.11.8.1

TV FREAK
18.07.2008, 14:15
Hallo goof 1980

Anbei sende ich mal mein Programm das ich für meine Wetterstation entwickelt habe. Es ist für 2 DS 1820 geschrieben. Musst du halt anpassen genau wie die Pinbelegung.

Gruss, tv freak

goof1980
21.07.2008, 18:55
da hab ich mal wieder gemerkt das ich mich doch mal bissel mit grundlagen beschäftigen sollte.
die lösung war ganz einfach: falsches fusebit.
beim at8515 hat das gepasst, der mega8 läuft aber standardmäßig mit 1MHz und das hat die Kommunikation bei einem im Quelltext festgelegten 8MHz Takt außer Kraft gesetzt. Fusebit geändert und schon rennt das Ding. ;-)

Vielen Dank für die Unterstützung.

Gruss Christian