hallo,
habe mit folgendem code erfolglos versucht, die PWM zu initialisieren:
_________
.include "m32def.inc"
.def temp=r16
ldi temp, LOW(RAMEND)
out SPL, temp
ldi r25, HIGH(RAMEND)
out SPH, temp
ldi temp, 0xff
out DDRD, temp
ldi temp, 0b01100011
out TCCR1A, temp
ldi temp, 0b00000100
out TCCR1B, temp
ldi temp, 0x00
out OCR1AH, temp
out OCR1AL, temp
loop:
rjmp loop
_________
wie man sieht benütze ich den mega32. kann mir jemand sagen warum das
so nicht funktioniert? habe den code so aus dem datenblatt
erschlossen.
mfg
Ich will mir jetzt nicht nochmal das Datenblatt reinziehen.
1tens: Wie hast du das getesteet? Als ichs mal probiert habe, da hatte
der AVR-Simulator nen Bug (im AVR Studio)
2tens:
ldi temp, LOW(RAMEND)
out SPL, temp
ldi r25, HIGH(RAMEND)
out SPH, temp
==> 3te Zeile muss "ldi temp, .." heißen.
3tens: Warum lädst du 0x0000 in OCR1A ? Das kann ja fast nichts
werden.
dave
danke für deine antwort dave:
1stens: also ich bekomme da "Assembly complete, 0 errors. 0
warnings"
2tens: stimmt :) mist g. hab den fehler verbessert, aber ich brauch
hier eh keinen stack. also es funktioniert immer noch nicht
3tens: jo habs mit 0xff und mal mit 0x00 probiert. hab ausversehn hier
die 0xff version reingesetzt.
noch wer ne idee?
mfg
kann bitte jemand nochmal diesen code auf fehler prüfen?
oder anders gesagt :) : wie habt ihr die register fürs pwm beladen?
kann ja auch ein c code sein ;)
mfg
Fang doch erstmal einfach an. Nimm mal den Timer 0 für deine PWM. Hier
ein Beispiel
.include "m32def.inc"
.def temp = r16
.equ pwmwert = 150;Hier der PWM Wert eintragen(0-255)
ldi temp, low(ramend)
out spl, temp
ldi temp, high(ramend)
out sph, temp
ldi temp, 0xff
out DDRB, temp;bei Port B ist OCR0
ldi temp, pwmwert
out OCR0, temp;den PWM Wert ins OCR0 register übertrage
ldi temp, 0b01101001;Fast PWM, Set OC0 on compare match, no
prescaling
out TCCR0, temp
main:
rjmp main
Gruß Avus
Ist für einen kombibnierten Step-Up/Step-Down Wandler. Wenn der Strom
schon mit dem 1.PWM erreicht wird (Step-Dowm) dann OK. Wenn nicht,dann
2. PWM (Step-Up). Eingangsspannung 10-13V (7V funktionieren auch noch,
wenn mann den Strom liefern kann), Ausgangsspannung bis 0-50V/6A,
jedenfalls bei meiner Schaltung. Funktioniert einwandfrei.
Hallo,
lade doch einfach mal das OCR1A register mit einem Wert größer als 0
und kleiner als 255. Bei 0 hast du dauernd low pegel, bei 255 dauernd
high pegel.
mfg
Stefan
danke für all eure antworten! ich will zwei 8 bit pwm's machen um damit
2 motoren (mit einem l293d treiber) anzusteuern und die geschwindigkeit
zu regeln.
mfg
Hi raoul.
Probiere es mal si wie im Anhang.
Wenn du 2 PWM's haben willst, dann darfst du nicht
ldi temp, 0x00
out OCR1AH, temp
out OCR1AL, temp
machen, weil OCR1AH wäre dann für ddi 9 oder 10 bit PWM.
Deshalb
ldi temp, 0x03
out ocr1al,temp; erste PWM
out ocr1bl,temp; zweite PWM
Gruß Avus