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
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
Das sollte gehen wenn man die Schwelle zyklisch verschiebt. Beginnen wie mit dem Bereich. Welcher Zahlenbereich wird auf welchen Spannungsbereich abgebildet ?
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?
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!
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?
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 )
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!!!
Joini2 wrote:
> Verzweiflung! Kannst Du mir die hex Bezeichnungen daneben schreiben?
Wozu hex?
Jeder Assembler versteht Dezimalzahlen.
Peter
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...
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)
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... :-(
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!
Gern geschehen. Und gib dem Verfasser der kurzen Erklärung, die Du vor zwei Monaten bekommen hast, eine Ohrfeige.
>> 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!
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.