Archiv verlassen und diese Seite im Standarddesign anzeigen : Grenzwertauswertung
Hallo @ all,
muss eine Grenzwertauswertung wie z.B. Spannungsüberwachung mit anschliessender Ausgabe durch LED Blinken realisieren.Spannung wird über RA0 eingelesen.
z.B. Spannungsbereich
>14V 8 x blinken
13,5 - 14V 7 x blinken
13 -13,5V 6 x blinken
usw.
Wie würdet Ihr sowas programmieren???? Bitte gebt mir mal einen Tip.
Gruß
Mike 22
Pseudo code, wenn das hilft
if (V < 13) goto tschüss
6xBlinken
if (V >= 13,5) 1xBlinken
if (V > 14) 1xBlinken
tschüss:
Hallo Robert,
das ganze wird in Assembler programmiert ist aber letzendlich egal. Wie realisierst Du die Routine wenn z.B. die Spannung 6 V ist?? laut deiner Pseudo Routine ist Sie in der ersten Zeile erfüllt und geht zu Tschüss.
Wäre aber nicht korrekt, da es im jeweilige Fenster sein muß also z.B. 6 - 7 V 4 Blinks............oder habe ich das falsch verstanden???????
Gruß
Mike 22
Ah so, ich hab gedacht unter 13 V is nix. State-of-the-art wäre natürlich, aus einer Tabelle die Blinkanzahl zu holen und dann zu blinken.
Wenn blinken und Spannung linear abhängig sind, also z.B. je 0.5 V einmal blinken
Ich würd' aber eine simple Schleife machen, wo ich vom Spannungswert immer wieder 0.5 V abziehe. Bei negativ (Carry = 0 ! =PIC-Schweinerei) hör ich dann auf.
(0.5 müßt du natürlich auf eine ADC-Zahl umwandeln (511 / max volt), das kann aber schon der Compiler machen
Isses nicht linear, eigentlich die gleiche Schleife, aber nicht gleich blinken, sondern mitzählen. Mit diesem Wert dann in die berühmte PIC-RETLW-Tabelle
movlw nn ; in w steht die anzahl 0.5 V Werte
call TAB
w-mal blinken
....
TAB:
addwf PCL, f ; add to PC
retlw blinkzahl_00_0
retlw blinkzahl_00_5
retlw blinkzahl_01_0
retlw blinkzahl_01_5
...........
retlw blinkzahl_14_0
Hilft das ?
EDIT: Beim PIC sind Schleifen zwar elegant, aber oft gar nicht effektiv.
Es kann sein, daß du mit Spaghetti-Code sogar besser dran bist
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.