mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik PIC Spannung in hex


Autor: Joini2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Bin am verzweifeln! Ich muß in nem PIC 16F627A den Komparator 
programmieren... Ich habe 4 LEDs anzusteuern. Betriebsspannung 5 Volt. 
Die erste LED soll bei 1,6V, die zweite bei 2,5V , die dritte bei 3,0V 
und die letzte bei 3,4 Volt leuchten. Das Programm steht, nur weiß ich 
nicht wie ich die Spannungen in hex umrechnen kann..... Hat jemand  Zeit 
mir zu helfen?
Danke!
Joinie

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich behaupte einfachmal, dass das mit nem Komparator nicht geht. Der hat 
nur eine Schwelle.

Sowas sollte mit nem ADC (keine Ahnung ob dein PIC einen hat) gehen. 
Hilfe zur Umrechnung der Hexwerte in Volt oder was auch immer sollte 
dann im Datenblatt stehen

Autor: sechszweisechs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte gehen wenn man die Schwelle zyklisch verschiebt. Beginnen wie 
mit dem Bereich. Welcher Zahlenbereich wird auf welchen Spannungsbereich 
abgebildet ?

Autor: Joini2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der ADC. Sorry.das Programm läuft. Aber mit den falschen Spannungen 
(in hex) im Programm. Hab beispielsweise 083h für 1,72 Volt. Die 
hex-Angaben muß ich ändern für die o.g. 
Spannungen....hmmm....verzeifel..... N klitzekleienr Tip?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joini2 wrote:
> Bin am verzweifeln! Ich muß in nem PIC 16F627A den Komparator
> programmieren...

> Ist der ADC. Sorry.
Öhhh, der 16F627A hat keinen ADC...

Vielleicht könntest Du mal genau erzählen, was Du machen willst und was 
Du schon gemacht hast!

Autor: Joini2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...hmm analoger Eingang PIN 17....

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joini2 wrote:
> ...hmm analoger Eingang PIN 17....

Analog comparator input

Autor: Joini2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nu denn: Ich nutze den PIC um Lichtstärken zu messen. Je nach 
Lichtstärke am LDR wird ne ensprechende LED angesteuert und leuchtet. 
Also, das ganze Ding funktioniert brauche nur andere Schaltschwellen an 
PIN17 (I/O...als analoger Eingang geschaltet) Im Programm sind diese 
Schaltschwellen hinterlegt...logisch... nu will ich diese 
Schaltschwellen ändern. Diese Schaltschwellen sind immer Bruchteile der 
Versorgungsspannung. Ich hab da also hex 083h für 1,72 Volt und zb 0a7h 
für 1,46 Volt. Ich muß nu die og Spannungen in hex ins Programm 
schreiben. NUR: Wie rechne ich die Spannungen in hex um?

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal ins Datenbuch, Kapitel 11.1

Da stehen die Formeln:
bit 3-0 VR<3:0>: VREF Value Selection bits 0 ≤ VR <3:0> ≤ 15
When VRR = 1: VREF = (VR<3:0>/ 24) * VDD
When VRR = 0: VREF = 1/4 * VDD + (VR<3:0>/ 32) * VDD

VRR ist bit 5.

Also:
xx0x0011 ergibt 1.72 V
xx1x0111        1.46 V

(jeweils bei VDD=5V).

Alles klar?

(um es vorweg zu nehmen: folgende Spannungen können eingestellt werden:
VRR=0:
0.00
0.21
0.42
0.63
0.83
1.04
1.25
1.46
1.67
1.88
2.08
2.29
2.50
2.71
2.92
3.13

VRR=1:
1.25
1.41
1.56
1.72
1.88
2.03
2.19
2.34
2.50
2.66
2.81
2.97
3.13
3.28
3.44
3.59
)

Autor: Joini2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja!!! Jippiii! Wir kommen der Sache näher! Ich hab das Programm 
schreiben lassen. Komme aber momentan nicht an die Programmierquelle 
ran... :-(  Ich bin für sowas sorry: zu d..f Deswegen meine 
Verzweiflung! Kannst Du mir die hex Bezeichnungen daneben schreiben? Ist 
sicherlich friemelei... ich weiß.. Ich krieg das sonst echt nicht 
gebacken... bin in dieser Sache reiner Praktiker! Wäre Dir wirklich sehr 
dankbar!!!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joini2 wrote:
> Verzweiflung! Kannst Du mir die hex Bezeichnungen daneben schreiben?

Wozu hex?

Jeder Assembler versteht Dezimalzahlen.


Peter

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sind jeweils 16 Werte, für die 4 Bit (eben VR3..0) zur Adressierung 
zur Verfügung stehen. Da sollte es doch wohl keine Schwierigkeiten 
machen, den Zusammenhang zu erahnen...

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, heute ist mein guter Tag...

> Ist sicherlich friemelei...
Überhaupt nicht, kleine Fingerübung in Excel

> bin in dieser Sache reiner Praktiker
In welcher Sache bist Du denn Theoretiker?

Aber bitte: Lerne zu lesen und zu verstehen.

VRR=1:
0.00    0a0h
0.21    0a1h
0.42    0a2h
0.63    ..
0.83
1.04
1.25
1.46
1.67
1.88
2.08
2.29
2.50
2.71
2.92
3.13    0afh

VRR=0:
1.25    080h
1.41    081h
1.56    082h
1.72    ..
1.88
2.03
2.19
2.34
2.50
2.66
2.81
2.97
3.13
3.28
3.44
3.59    08fh

(hatte übrigens VRR 0 und 1 vertauscht)

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:

> Wozu hex?
>
> Jeder Assembler versteht Dezimalzahlen.

Er hat den Sourcecode nicht und muss das Hexfile patchen...

> Komme aber momentan nicht an die Programmierquelle ran... :-(

Autor: Joini2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab das ganze Programm. Hat 150,00 Euro gekostet. Ist extra für mich 
geschrieben worden...

Theoretiker bin ich im PIC programmieren...hab mich mal dran versucht 
und bin dann aus lauter Verzweiflung an einen Bekannten gegangen.

Herzlichen Dank Severino! Hast mir echt von nem Nervenzusammenbruch 
gerettet...lol

Hier mal die kurze Erklärung die ich vor 2 Monaten bekommen habe. Bin 
dann erst heute wieder dazu gekommen, dran zu arbeiten..:

+++
+++
Die Spannungswerte sind immer Bruchteile der
Versorgungsspannung, also von 5V.
Es gibt zwei Bereiche; die "Zehnerziffer" im Hex gibt den Bereich
an.
Ziffer 8 -> 8/32..23/32
Ziffer a -> 0/24..15/24
Die "Einerzffer" wählt innerhalb des Bereichs.
Beispiel: 83 ->11/32 der Versorgungsspannung -> 1,72V
a7 -> 7/24 -> 1,46V

Schreibweise im Programm:
Groß- oder Kleinbuchstabe ist egal.
Eine Zahl muß immer mit 0..9 beginnen, bei einem Wert in Hex
muß ein h angehängt werden. Deshalb muß bei a7 im Programm
0a7h stehen. 000a7h ginge genauso. Bei 83 kann 83h stehen, oder
auch 083h oder 0000083h (oder 131, das ist der dezimale Wert).

Viele Grüße,
+++
+++

Da steig ich echt nicht durch.... ;-(... Nochmals herzlichen Dank!

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gern geschehen.

Und gib dem Verfasser der kurzen Erklärung, die Du vor zwei Monaten 
bekommen hast, eine Ohrfeige.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> bei einem Wert in Hex muß ein h angehängt werden.
oder je nach kompiler ein '0x' davor anstelle des 'h' danach ...verlang 
den sourcecode, wenn du dafür schon bezahlt hast!

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.