Bascom ds1820 Problem atmega8 vs atmega32

Ich habe mal schnell nen Atmega16 + ds1820 auf nem Steckbrett aufgebaut und dein Programm nur soweit modifiziert das es mir die Daten auf'n Comport ausgibt da ich kein LCD display zur Hand habe.
Mit 1 Mhz Intern rührt sich der DS1820 kein Stück. SerialNr sowie Temp. alles 0.
Mit 2 Mhz Intern funktioniert es wenn nach dem TempConvert &H44 ein wenig länger gewartet wird. (Waitms700)

kitty.png Display_DS1820.jpg


Hier der Code
Code:
' $regfile = "m32def.dat"
' $crystal = 4000000
' $hwstack = 40
' $swstack = 16
' $framesize = 32

'$regfile = "M8def.dat"
'$crystal = 1000000
'$hwstack = 64
'$swstack = 64


$regfile = "m16def.dat"
$crystal = 2000000

$hwstack = 64
$swstack = 64
$framesize = 64

'Config Lcdpin = Pin , Port = Portd , E = Portb.5 , Rs = Portb.4
'Config Lcd = 20 * 4

'Config Comport
$baud = 1200
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

waitms 500
Print
Print
Print "Takt Intern 2Mhz "
waitms 1000


Print "DS1820 Test"
Print


Config 1wire = Portc.5

Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer
Dim Halb As Byte

Dim Dsid(8) As Byte
Dim TempDS1820_tmp As String * 5

Dsid(1) = 1wsearchfirst()

Print "DS1820 ID: "
For I = 1 To 8
 Print Hex(dsid(i))
Next
Print

Print "Temp:"
Do
Waitms 2000
1wreset                                                     'reset the

1wwrite &HCC                                                'read ROM

1wwrite &H44

Waitms 700                                                  'read ROM

1wreset                                                     'reset the

1wwrite &HCC                                                'read ROM

1wwrite &HBE                                                'read ROM

For I = 1 To 2
Ar(i) = 1wread()                                            'place into

Next

'Locate 2 , 1
Temperatur = Ar(1)

If Ar(2) > 0 Then Temperatur = 0 Else Shift Temperatur , Right

'Lcd Temperatur ; ".";

Halb = Ar(1) And 1

If Halb = 1 Then TempDS1820_tmp = str(Temperatur) +".5 C" Else TempDS1820_tmp = str(Temperatur) +".0 C"

print TempDS1820_tmp
Loop

End


Edit: Display gefunden und eingebunden
 
Interessant ist, daß es beim Mega8 ja mit 1MHz zu klappen scheint. Also ist entweder dieser toleranzbedingt schnell genug, oder der Mega32 braucht eben doch für einige Instruktionen dann mehr Takte als der Mega8 (mal die DB vergleichen, bezügl. Registern im I/O- bzw extended I/O-Space).

Wie siehts jetzt mit mehr Tempo aus?
 
Zurück zum Thema:
bei einem MHz Takt dauert ein Taktzyklus 1µs, klar. Die Anforderungen des Sensors liegen aber auch irgendwo sicher im µs-Bereich - sollte also eigentlich keine Probleme machen (soweit wird der Mega32 mit seiner Toleranz ja wohl ncht abweichen).
Trotzdem könntest Du den Controller ja mal auf 8MHz setzen (also interner RC mit 8Mhz und max. Startzeit bei den Fuses), natürlich Bascom das auch bei der Crystal-Direktive mitteilen.

Ansonsten hast Du das ja irgendwie auf'm Steckbrett - steckst Du bei Deinen Versuchen den Controller jedesmal um? Oder nur die Verbindungen vom LCD/Sensor zum Controller? Die Verbindungen (von Bein zu Bein) hast Du sicher schon durchgeklingelt. (Ich hatte bei sowas mal'n Wackelkontakt im Steckbrett - da wars aber nur der Pin, der die Hintergrundbeleuchtung eines LCD schalten sollte. Nach langer erfolgloser Fehlersuche ging das Licht plötzlich wenn man die Leitung angetippt hat...)


An dickes Dankeschön an LotadaC und Lema Ihr habt mir das Wochenende gerettet :)
Ich hab den internen RC nun mit 8Mhz und Max. Startzeit laufen und der "Mistkäfer" spuckt tatsächlich das aus was ich will :)
Danke auch die anderen für die Hilfestellung hier :)

gruß
Kasmo (in dessen Zimmer es 16.5 Grad hat ;))
 
Hallo,

Interessant ist, daß es beim Mega8 ja mit 1MHz zu klappen scheint. Also ist entweder dieser toleranzbedingt schnell genug, oder der Mega32 braucht eben doch für einige Instruktionen dann mehr Takte als der Mega8 (mal die DB vergleichen, bezügl. Registern im I/O- bzw extended I/O-Space).

Wie siehts jetzt mit mehr Tempo aus?
also die Befehlsstruktur und auch die IO-Register sollten beim Mega8 und Mega32 relativ identisch sein. Bei beiden paßt die Anzahl der Steuerregister noch in den IO-Bereich und muß nicht wie bei den neueren mit in den Memory-Bereich gelegt werden. Ich kann mir nur vorstellen das es an Toleranzen in der Taktfrequenz liegt. Das es beim Mega8 also grade mal so klappt und beim Mega32 grade mal nicht mehr. Eventuell sind die Routinen bei 1MHz relativ ausgereizt. Vergleichbar mit nem 1MHz Takt und 9600 Baud auf dem UART was ja auch schon sehr grenzwertig ist und meißt nicht mehr zuverlässig funktioniert.

Aber schön das es nun läuft. :cool:

Da ich meine sowieso meißt mit vollem internen Takt oder vollem externen Takt laufen lasse hab ich das Problem noch nie gehabt. Ich kenne es nur das er FFFFFFF... anzeigt weil der 1Wire-Chip nicht reagiert.

Gruß
Dino
 
Hab mir mittlerweile das ganze auf ne eigene Platine verbaut und das teil läuft nun mit 16MHZ externem Quarz. Zwar hatte ich Dussel gleich ma die falsche Freq.-Einstellung vorgenommen sodass nix mehr ging, aber da konnte ich auch gleich die Rescue-Clock von meinem Programmiergerät testen ;)

gruß
Kasmo
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)