Forum: Mikrocontroller und Digitale Elektronik Boardnetzüberwachung mittels Cypress CY8C29466-24PXI


von Ben B. (bambule)


Lesenswert?

Hallo Leute,

ich versuche mittels Assembler einer Boardnetzüberwachung zu 
Programmieren.  Der µC ist der im Titel genannte.

Funktionieren soll das ganze so:
Der Messwert der 13 V Versorgung wird mittels ADC an den µC 
weitergegeben. Nun wird mittels Programmierung verglichen, ob die 
Spannung kleiner 11 V, bzw. größer 15 V ist. Sollte eins davon der Fall 
sein, wird zu der Markierung gesprungen, welche das System abschaltet 
(P_AUS).
Die Spannung kommt aus einem DCDC-Wandler also ist relativ Konstant.

Hier mein Ansatz:
1
P_U012:         mov A, [U012]   ;ADC Messwert in Register A schreiben
2
                sub A, 10       ;Ziehe 10 vom ADC Wert ab
3
                cmp A, 2        ;Vergleiche Delta U mit 2
4
                jc P_AUS        ;Wenn A kleiner als 2, springe zu P_AUS
5
                sub A, 16       ;Ziehe 16 vom ADC Wert ab
6
                cmp A, 2        ;Vergleiche Delta U mit 2
7
                jc P_AUS        ;Wenn A kleiner als 2, springe zu P_AUS
Den [U012] Wert bekomme ich aus:
1
WRU012:      
2
                 mov [U012], [ADC_cResult]
3
                 M8C_SetBank1
4
                 or reg[ABF_CR0], 80h   ;Analog Input MUX 0 für Column 0   
5
                                        ;auswählen (ungerade Ports)
6
                 M8C_SetBank0        
7
                 mov A, reg[AMX_IN]
8
                 and A, 0FDh             ; Port 0.3 für AI MUX 0  
9
                                        ;auswählen
10
                 or A, 1
11
                 mov reg[AMX_IN], A
12
                 jmp ADRET
13
14
15
ADRET:  inc [ADCOUNT]

Gebe ich die 13 V auf die Testplatine, wird das System erst gar nicht 
eingeschaltet. Prinzipiell sollte sie ja mit den 13 V arbeiten und dann 
abschalten, wenn ich die Spannung verändere.
Verändere ich das Segment von "P_U012", indem ich den SUB Befehl 
entferne und direkt vergleiche, schaltet sich das System ein, aber auch 
direkt wieder aus, habe dann quasi ne Blinkschaltung :D
habt ihr vielleicht ein paar Vorschläge, was da nicht stimmt?

Es ist noch zu sagen, dass ich nur 3 Sprungbefehle zur Verfügung habe. 
Einmal jmp, jc/jnc und jz/jnz.

ich hoffe ich hab das einigermaßen verständlich dargestellt und
bitte nagelt mich nicht auf die korrekte Bezeichnung fest, bin erst seit 
diesem Jahr dabei zu Programmieren ;)

Grüße

Bambule

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.