Hiho zusammen, ich würde gerne meine Anfänger PIC Kenntnisse weiter ausbauen, habe mir deshalb 2 Temperatursensoren besorgt und würde diese gerne am PIC auslesen. Allerdings komme ich mit dem 1-wire Protokoll nicht zurecht. In den tiefen des Internet habe ich auch einige Projekte und Codefetzen gefunden, doch meistens als C-Code oder nich vollständig. Auch in der Suche hier gibts einige Beiträge zum thema DS1820 aber bis jetzt habe ich noch keinen zum laufen gebracht und wäre für jede hilfe dankbar. Ich habe mich für die Assemblerprogrammierung entschieden was aber im nachhinein wohl ein Fehler war, da die meisten Programme heute eher in C geschrieben werden. Ich arbeite mit dem PIC16f84 bzw pic18f88, wobei die Codes ja mit kleinen Anpassungen kompatibel zu anderen PICs sind. Meine Frage an euch, hat jemand zufällig irgendwo ein lauffähigen Assemblercode für einen DS18B20 oder DS18S20 ( bzw den Baugleichen DS1820) übrig, der nur die Temperatur ausliest und lediglich das ergebnis in einem 8 Bit Register speichert? die meisten codes sind so umfangreich dass man den überblick über das eigentliche Protokoll verliert. wäre echt super gruß fanti
> ich würde gerne meine Anfänger PIC Kenntnisse weiter ausbauen, Wenn DU deine Kenntnisse ausbauen willst, warum liesst du dann nicht mal das Datenblatt und programmierst das selber. Dabei lernt man naemlich. Abschreiben bringt einen nicht weiter. > Ich habe mich für die Assemblerprogrammierung entschieden was > aber im nachhinein wohl ein Fehler war, Das ist natuerlich zum Teil Geschmacksache, aber IMHO kann man PICs hoechstens in C ertragen. :-) > die meisten codes sind so umfangreich dass man den überblick > über das eigentliche Protokoll verliert. Noe, die Dinger sind relativ anspruchsvoll. Wenn du wissenmaessig noch bei Null anfaengst dann nimm lieber einen LM75 oder einen andere I2C-Bus Sensor. Das ist fuer die ersten Versuche weniger frustrierend. Olaf
Hallo, als Anlage hab ich eine einfache 1-wire Ansteuerung für einen Temperatursensor DS1822 mit einem PIC 18F in Assembler beigefügt. Die Anpassung auf Deine Hardware und den DS18B20 sollte damit auch für Anfänger möglich sein. Wichtig ist immer das Datenblatt ausführlich durchzulesen.
@olaf danke für deine Antwort, doch es hat mich nicht schlauer gemacht. Seit wann muss man denn das Rad neu erfinden um zu verstehen wie es sich dreht? Desweiteren interpretiere ich, ich soll umsteigen auf avr, C lernen und bei Problemen selbst ne Lösung finden^^ @atlas das ist nett von dir, ging ja fix Da das Programm sehr zeitkritisch ist, mit welcher Frequenz läuft der PIC?
@ Da das Programm sehr zeitkritisch ist, mit welcher Frequenz läuft der PIC? Es ist ein 4 MHz Quarz angeschlossen, folglich ist die Taktfrequenz für einen Befehlszyklus 1 MHz (1 us).
hallo. ich wollte die frage noch mal aufgreifen, da ich das gleiche problem habe. ich wollte die temparatur-sensoren über einen pic18f4550 ansprechen, doch bei meinem zusammengeschnittenen code hängt sich mein µC auf, was wahrscheinlich an den delays liegt. hat jemand einige fertige funktionen, um die temperaturmessung in gang zu setzen und diese dann abzurufen. danke im voraus. lg, malptech
Olaf schrieb: >> Ich habe mich für die Assemblerprogrammierung entschieden was >> aber im nachhinein wohl ein Fehler war, > > Das ist natuerlich zum Teil Geschmacksache, aber IMHO kann man PICs > hoechstens in C ertragen. :-) Diese Diskussion entzieht sich mal wieder jeder Grundlage... ich sag sowas von AVR ...
Probier mal MikroC, da gibts eine fertige 1-wire Library, wenn du C magst: http://www.mikroe.com/forum/viewtopic.php?f=147&t=23735 Da du am Anfang vermutlich noch nicht viel Funktionen einbauen wirst, sollten dir die 2K Demolimit eigentlich reichen. MikroC ist gut für einfache Steuerungsaufgaben.
die DS18... Sensoren haben mich auch schon zur Verzweiflung gebracht, seitdem nehme ich nur noch TSIC http://www.mikrocontroller.net/articles/Temperatursensor#TSic Beitrag "Re: digitaler Thermosensor"
Tobi D. schrieb: > Seit wann muss man denn das Rad neu erfinden um zu verstehen wie es > sich dreht? Hallo Tobi (fanti), Du musst nicht das Rad neu erfinden, aber erst wenn Du es geschafft hast eins zu bauen das sich tatsächlich dreht, dann weist Du dass Du es verstanden hast. In der Appnote APP2420 von Maxim gibt es eine Beschreibung von 1-Wire und Assemblercode für PIC16F628. http://www.maxim-ic.com/app-notes/index.mvp/id/2420 Gruß John
Sorry, habe erst jetzt gesehen, dass die erste Frage schon fast ein Jahr alt ist.
hallo. jo danke für die schnellen antworten. ich habe jetzt die funktion zum abrufen der temperatur geschrieben. funktioniert alles auch so weit, auch das kompilieren. woher weiß ich jetzt, was er da misst. ich kriege keine Verbindung vom µC zum PC hin. über USB läuft es nicht. hatte vorher ein lauflicht erstellt und da hat er die verbindung zum pc gehabt. kann das an den delays liegen, dass er keine interrupt ausführt und usb-verbindung nicht aufrecht halten kann?
1 | // USBTasks()
|
2 | // "Service loop for USB tasks."
|
3 | void USBTasks(void) |
4 | {
|
5 | /*
|
6 | * Servicing Hardware
|
7 | */
|
8 | USBCheckBusStatus(); // Must use polling method |
9 | if(UCFGbits.UTEYE!=1) |
10 | USBDriverService(); // Interrupt or polling method |
11 | |
12 | #if defined(USB_USE_CDC)
|
13 | CDCTxService(); |
14 | #endif
|
15 | }
|
16 | |
17 | // High priority interrupt vector
|
18 | #pragma code InterruptVectorHigh = 0x08
|
19 | void InterruptVectorHigh (void) |
20 | {
|
21 | _asm
|
22 | goto InterruptHandlerHigh //jump to interrupt routine |
23 | _endasm
|
24 | }
|
25 | |
26 | // High priority interrupt routine
|
27 | // Hier Behandlung von Trigger- und Timer-Interrupt
|
28 | #pragma code
|
29 | #pragma interrupt InterruptHandlerHigh
|
1 | // LED-Blinken zur USB-Statusanzeige
|
2 | // beide an: "Attached"
|
3 | // Nur RC0 an: "Powered"
|
4 | // Nur RC1 an: "Default"
|
5 | // Nur RC0 blinkt: "Address"
|
6 | // Nur RC1 blinkt: "Detached"
|
7 | // Abwechselndes Blinken: "Configured" (funktionsfähiger Zustand)
|
Im moment leuchten beide LEDs. Lg, alptech
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.