Forum: Mikrocontroller und Digitale Elektronik DS1820 an PIC16F630 - Softwareprobleme, ich verzweifle!


von Jan Purrucker (Gast)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,

ich bin PIC Anfänger, und habe die Schaltung unter

http://elektronik.kai-uwe-schmidt.de/index.php?page=pic_thermometer

nachgebaut, bei der Kai Uwe Schmidt auch den Source-Code zur Verfügung 
gestellt hat. Der PIC16F84A soll hier alle Zeiteinheiten die 
umgerechnete Temperatur des digitalen Temperatursensors DS18S20 
ausgeben. (Die dann z.B. mit einem Terminalprogramm eingelesen werden 
kann)

Nun habe ich hierfür einen PIC16F630 hergenommen (lag gerade rum, und 
wegen einen PIC kann ich nicht extra bestellen). Daher habe ich die 
Software (Orignial: mess.asm) entsprechend modifiziert (Datei im Anhang)
Das Problem ist aber, dass ich im Terminalprogramm (Hyperterminal) ca. 
alle 1 Sekunde was empfange, jedoch totalen Schmarn, z.B.

$%-0521452

Wenn man in die Software schaut, dann müsste folgendes gesendet werden:

Temperatur: XX.X0 oC

als TX Pin benutze ich RC1, als RX Pin benutze ich RC0, die Datenleitung 
des DS1820 liegt auf DQ.
Hardwarebeschaltung habe ich schon 100 mal kontrolliert. Stimmt alles
Es muß an der Software liegen, bei der ich den Fehler einfach nicht 
finden kann. Bin am Verzweifeln.
Noch einen Anmerkung: Ich benutze einen DS1820 und nicht einen DS18S20 
wie bei Kai Uwe. Das dürfte aber nichts machen, da wenigstens der Text 
"Temperatur" richtig gesendet werden müsste. Ich vermute es liegt an der 
Software UART-Schnittstelle. Wenn mir ein echter Crack bei dem Assembler 
Programm weiterhelfen könnte wäre super.
Vielen Dank schon mal für Hilfen.

Gruß
Jan

von Henrik J. (henrikj)


Lesenswert?

Hast du die richtige Baudrate in deinem Terminalprogramm eingestellt?

von Jan Purrucker (Gast)


Lesenswert?

Hallo Henrik,

ja die richtige Baudrate ist eingestellt:
9600, 8, N, 1
Als Quarz nehme ich den internen 4MHz Oszillator, der ja hinreichend 
genau sein dürfte (+- 1%). Für Hilfen wäre ich sehr dankbar.

Gruß
Jan

von Carsten S. (carsten)


Lesenswert?

Hallo,
ich hatte schon das Problem, dass der interne Quarz (3,9 MHz) nicht 
genau genug war -> in das Baudratenregister musste ein anderer Wert (als 
die in der Datenblatt-Tabelle) eingetragen werden.
-> Lass dir den Takt ausgeben (Clockout) und messe

von Peter D. (peda)


Lesenswert?

Carsten Steiner wrote:
> Hallo,
> ich hatte schon das Problem, dass der interne Quarz (3,9 MHz) nicht
> genau genug war


MCs mit internem Quarz gibt es nicht.

Die haben nur nen RC-Oszillator drin und der ist eben nicht mit einem 
Quarz vergleichbar.



Peter

von Carsten S. (carsten)


Lesenswert?

Entschuldigung, meinte Oszillator (sag ich leider immer falsch).
Ändert aber an dem Problem von Jan nichts. Wollte nur sagen, dass man 
sich nicht 100% auf die interne Taktquelle verlassen kann und ich denke, 
dass das Problem beim Systemtakt liegt.

von Lazy B. (lazybee)


Lesenswert?

hast Du berücksichtigt, daß der 16f630 Analogeingänge hat, die 
deaktiviert werden müssen?

Gruß

LazyBee

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.