mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ad-Wandlung am PIC und Hiperterminal-Problem


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HAllo,

Ich bin noch ein Anfänger mit dem folgenden Problem. Ich habe ein 
Zigbee-Modul mit einem PIC18 MCU. Ich möchte ein Signal übertragen, habe 
aber ein Problem mit der Darstellung am Empfangs-Hiperterminal. Ich habe 
das Signal  am 10bit AD-Wandler angeschlossen und die Digitaldaten in 
den Sendepuffer übertragen:

Sender:

unsigned int16 adresult; //AD-Wert
//Einstellung der Register für AD-Wandlung
-
-
while (1)

//Start AD-Wandlung
//Warten bis Convert-Ende, dann:

adresult = ADRESL;        //Get the 8 bit result
adresult += (ADRESH << 8) // Get the 2 bits MSB result

FlushTx();  // löschen des Sendepuffer

WriteData(adresult); //senden der Daten

---------------------------------------------------------
Empfänger:
-
-
for (i=0; i < rxFrame.Payloadsize; i++)
consoleput(rxFrame.Payload[i])         // hier wird byteweise ausgelesen

----------
void consoleput(Byte C) //hier wird byte für byte an Terminal übertragen
{
while( !consoleIsPutReady() );

TXREG = c;
}

---------------------------

Jetzt mein Problem. Auf dem Hiperterminal bekomme ich nichts lesbares. 
Muss ich die Werte erst umwandeln? Wie mache ich das?

Hoffe auf Hilfe!

VG

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. glaube ich nicht, dass der sendebuffer aus uint16 besteht sondern aus 
uint8. also übertrage die beiden ADC-bytes auch als solche und setzte 
sie dann beim empfänger zusammen.

2. möglicherweise wird bei "adresult += (ADRESH << 8)" der shift zuerst 
ausgeführt (dann ergibt deine klammer immer null) und wird dann addiert. 
mach mal das so (ich weiss, es gibt elegantere lösungen):
adresult = ADC_highbyte;
adresult <<= 8;
adresult += ADC_lowbyte;

3. wenn du den wert aber sowieso wieder via hyperterminal byteweise 
überträgtst, wieso dann überhaupt zu einem uint16 zusammensetzen?

fazit: belass das messresultat so lange als 2 bytes bis zu dem punkt, an 
dem du den wert zum berechnen oder anzeigen brauchst; das wäre in deinem 
fall nach dem hyperterminal.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Danke für die antwort. Punkt "4" macht Sinn! Ich übertrage also ADRESH 
und ADRESL byteweise zum Empfänger und sende es dann byteweise zum 
Terminal. Was muss ich denn machen, dass im Terminal diese 2 bytes 
(ADRESL + ADRESH) als ein 10-Bit Wert angezeigt werden. Also z.B. soll 
die Bitfolge 0b00000111 (AdDRESH) und 0b11111111 (ADRESL) am Terminal 
als 3 Volt angezeigt werden.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich vermute mal, dass dein terminal deine "anzeige" ist? also muss das 
terminal programmiert werden (geht das?) oder dann muss die letzte 
instanz vor dem terminal die umrechnung vom 10bit-ADC-wert in die 
einzelnen char-zeichen machen und diese zeichen dann einzeln an dein 
terminal senden. kommt halt darauf an, ob dein terminal die letzte 
"funktion" ist...

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es wäre sehr hilfreich, wenn du ein schema zeigen könntest, wie das mit 
zigbee, PIC18, terminal etc alles zusammen geschlossen ist..

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.