Hallo Zusammen
So wie ich das Forum beurteile, kann mir bestimmt jemand helfen.
Möchte in einem Projekt eine PWM Rampe durch subtahieren eines Betrages
eine Rampe erzeugen, leider geht es von X >125 nur bis 125, danach
springt mir der Befehl cpi ; brge als wäre ich schon am Ziel.
Hat bitte jemand ein Tip, irgend wo ist da der Wurm drin.
Drive_up: ;up= PortA,0=1 + PortB,1=0
sbi PortB, 3 ;"Down-LOW" Kurzschluss Fet abschalten
cbi PortA, 1 ;Down High Fet 50V abschalten
ldi Rampe, 240
rcall Umschaltzeit
Drive_up2:
ldi temp, (1<<COM1A1)|(0<<COM1A0)|(1<<PWM1A) ;PWM Ausgang)
out TCCR1A, temp
ldi temp, (0<<CS13)|(0<<CS12)|(0<<CS11)|(1<<CS10) ;PWM
out TCCR1B, temp
cpi Rampe, 30 ;PWM_Wert_UP !!!Problempunkt
brge voll !!!Problempunkt
subi Rampe, 5
mov temp, Rampe
rjmp OCR1A_
voll:
ldi temp, PWM_up
OCR1A_:
out OCR1A, temp
ldi temp, 125
out OCR1C, temp
sbi PortA, 0 ;UP High Fet 50V einschalten
sbic PinA, 6 ;"Up" Input nicht mehr aktiv?
rjmp Bremsen
sbis PinA, 7 ;"down" Input aktiv?
rjmp Bremsen
sbis PinA, 4 ;"Stop up" Input aktiv?
rjmp Bremsen
rcall Umschaltzeit
;Vergleiche Analog Werte
cp MWC_L, XL ;Compare low Byte
cpc MWC_H, XH ;Compare high Byte
brsh OFF_up
rjmp Drive_up2
Vielen Dank
Philfly
Hallo Zusammen Ich habe den Fehler gefunden, mit brge wird das S Flag gesetzt, für die Mitte von + und - 125. Befehl auf brlo gewechselt, und es läuft. Grüssli an alle Philfly
Es gibt noch mehr Sprungbefehle, die fast immer gehen, "brcc" springt, wenn größer/gleich, "brcs", wenn kleiner als.
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.