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
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