Verständnisfragen: Integer-to-Char für LCD und Dallas DS1821 (Temp.Sens.)

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 11 2024  22:55:00      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Verständnisfragen: Integer-to-Char für LCD und Dallas DS1821 (Temp.Sens.)
Suche nach: lcd (4684)

    







BID = 98900

austin2powers

Gelegenheitsposter



Beiträge: 59
 

  


Hallo liebe Leute,

ich benutze einen ATmega8535 mit CodevisionAVR und habe ein paar kurze Fragen:

1. Muss ich zwangsläufig meine umständliche Integer-zu-Char-Umwandlung benutzen, um Int-Werte z.B. vom Temperatursensor auf einem LCD auszugeben?
Es gibt ja nur String- und Char-Output-Befehle..
Habe nämlich Schwierigkeiten mit meiner Lösung, die ich bei einer einfachen Sekundenanzeige benutzt habe (nur zum Testen), hier kurz das main (Kommentare waren für Azubi-Kollegen):


while (1)
{

sekunden++;
//Sekündliche Erhöhung von sekunden um 1
delay_ms(1000);

x=1;
//Zählvariablen für die Umrechnung von
i=0; //Int zu Char (String) werden initialisiert
j=0;

while(sekunden>=x)
//Umrechnung von sekunden (Int) in zeit[] (Char-Array)
{
zeit[i]=((sekunden/x)%10)+0x30;
//Jede einzelne Stelle der Integer-Variable wird mit
//Hex-30 addiert, denn laut ASCII-Tabelle liegt
i++; //die 0 bei Position Hex-30 und die 9 bei Hex-39.
x*=10; //Bsp. für sekunden=325 wird gespiegelt in zeit[] gespeichert: 5-2-3
}

i--;

while(j<=i)
//Spiegelung von zeit[] in ausgabe[]
{
ausgabe[j]=zeit[i-j];
j++;
}

lcd_gotoxy(0,0);
//LCD-Position x=0 und y=0 (oben links) wird angesteuert
lcd_putsf("Sekunden:"); //lcd_putsf wird für Ausgabe von String-KONSTANTEN verwendet
lcd_gotoxy(0,1); //LCD-Position x=0 und y=1 (unten links, 2. Zeile) wird angesteuert
lcd_puts(ausgabe); //lcd_puts wird für Ausgabe von String-VARIABLEN verwendet

};
}


Gibt es keine vorgefertigten Lösungen?


2. Falls jmd. den Dallas DS1821 kennt - ist der baugleich mit dem DS1820? In den Datenblättern und bei google äußert sich keiner dazu.. CodevisionAVR unterstützt den DS1820, aber ich habe hier den DS1821.... bisher klappt das nicht.
Evtl. liegt es aber auch an obenstehender Int-to-Char-Routine, die ich da benutzt habe.

Vielen Dank im voraus.

Viele Grüße vom fragenden
Henning

[ Diese Nachricht wurde geändert von: austin2powers am  6 Sep 2004 17:30 ]

[ Diese Nachricht wurde geändert von: austin2powers am  6 Sep 2004 17:39 ]

BID = 99060

austin2powers

Gelegenheitsposter



Beiträge: 59

 

  

Hallo nochmal,

die erste Frage hat sich erledigt, habe in der stdlib.h Routinen für die Umwandlung gefunden, die sogar float abdecken.


Aber der DS1821 läuft noch nicht..

Grüße,
Henning

BID = 99505

austin2powers

Gelegenheitsposter



Beiträge: 59

ok, nachdem ich den ganzen Tag gegoogelt und rumprobiert habe, kann ich nun meine behämmerte Frage konkretisieren:

Die Befehlssätze des DS1820 und DS1821 sind wohl nicht gleich.
Ich habe es allerdings auch nicht geschafft, eine DS1821.c und DS1821.h aus dem Netz zu adaptieren (Assembler-Errors en masse).

Nun möchte ich mit den im Datenblatt gegebenen Befehlen (wie READ TEMPERATURE [AAh], START CONVERT T [EEh], READ STATUS [ACh] etc.) C-Funktionen schreiben.
Sind das Assembler-Befehle..?

Wie kann ich sie benutzen?

Vielen Dank für die Aufkärung.


Grüße,
Henning

BID = 99563

MinceR

Stammposter



Beiträge: 277

ich habe keine ahnung von C deshalb hab ich mal gestern abend nix gepostet. ich kann dich aber beruigen, das sind definitiv keine assembler befehle.

also wenn du mich fragst sind das die befehele die dein µC an den sensor schicken muss. also wenn dein µC AA in hex an den sensor schickt schickt er deinem µC den wert der temperatur zurück.
ich vermute mal das du zuerst start conversion schicken musst. dann fängt er an zu rödeln und xx [zeit] später kannste mit read temperatur das dann auslesen..
ist aber nur erraten, ich gucke mal ob ich daraus schlau werde, suche momentan auch einen temperatur sensor :)

BID = 99622

MinceR

Stammposter



Beiträge: 277

ich weiss nicht was du für nen compiler hast, findest aber bestimmt irgendwo ne 1wire routine. dann brauchste nur aa zu senden und er schickt dir das ergebniss der temperatur. diese ist dann in 2erkomplimentär. vorausgesetzt das du vorher einmal start conversion geschickt hast. dann sollte er die ganze zeit messen und jedes mal wenn du aa schickst sie dir zurückgeben..

BID = 100069

austin2powers

Gelegenheitsposter



Beiträge: 59

Moin,

ja genau, habe es auch hinbekommen - diese Hex-Befehle gehen über den 1Wire-Bus raus, also die 1wire.h includieren und dann z.B: mit w1_write(0xAA) die Codes zum Konvertierungsstart (AAh) schicken, dann Read Temp. rausgeben, so dass schließlich über "int w1_read(void);" die Temperatur ausgelesen werden kann (Hab den funktionierenden C-Code im Betrieb, könnte ich bei Interesse nächste Woche posten).

Werde mir aber wahrscheinlich demnächst doch ein paar DS1820 zulegen, da die a) wie gesagt in Codevision voll unterstützt werden und b) in 0,5°-Schritten messen (DS1821 nur 1-Grad-Schritte).

Allerdings muss ich es noch versuchen, mehrere DS1821 an den 1Wire-Bus (also an einen Pin) zu hängen und dann manuell mit den 1Wire-Hexcodes jeweils separat anzusprechen.. hab's nämlich bisher nur mit einem einzelnen getestet.

Vielen Dank für die Hilfe.

Grüße,
Henning

BID = 100259

MinceR

Stammposter



Beiträge: 277

np.
so wie ichs aus dem pdf rausgelesen habe kannste bei deinem temperatur sensor nur 1 slave pro 1wire bus hängen. also quasi nur den einen sensor.

MfG MinceR

BID = 101063

austin2powers

Gelegenheitsposter



Beiträge: 59


Zitat :
MinceR hat am 10 Sep 2004 16:50 geschrieben :

np.
so wie ichs aus dem pdf rausgelesen habe kannste bei deinem temperatur sensor nur 1 slave pro 1wire bus hängen. also quasi nur den einen sensor.

MfG MinceR


...und wieder ein Grund mehr für den DS1820

Na ja, hoffentlich kann ich dann wenigstens mehr als einen Sensor benutzen, wenn ich pro Sensor jeweils einen ganzen Pin opfer.

ma' schaun..

Grüße,
Henning


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 35 Beiträge verfasst
© x sparkkelsputz        Besucher : 182425847   Heute : 4894    Gestern : 5459    Online : 294        29.11.2024    22:55
8 Besucher in den letzten 60 Sekunden        alle 7.50 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0335218906403