Forum: Mikrocontroller und Digitale Elektronik PWM ATMega16. Was mache ich falsch (DRINGEND)


von M. Н. (Gast)


Lesenswert?

Hallo.
Das unten gezeigte Programm habe ich auf einen Atmega 16 gebrannt. Es 
funktioniert nicht. Was ist falsch?
1
.include <m16def.inc>
2
.cseg
3
.org 0
4
init:
5
ldi r16, (1<<pb3)
6
out ddrb, r16
7
ldi r16, 100
8
out ocr0, r16
9
ldi r16, (1<<WGM00) | (1<<COM01) | (1<<CS02)
10
out tccr0, r16
11
s: rjmp s

Gruß M.H.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Momentan hast Du phasenkorrektes PWM aktiviert. Was genau funktioniert 
nicht?

von M. Н. (Gast)


Lesenswert?

.include <m16def.inc>
.cseg
.org 0
init:
ldi r16,low(RAMEND)
ldi r17, high(RAMEND)
out spl, r16
out sph, r17
ldi r16, 0xff
out ddra, r16
clr r16
out porta, r16
ldi r16, (1<<pb3)
out ddrb, r16
ldi r16, 100
out ocr0, r16
ldi r16, (1<<WGM00) | (1<<COM01) | (1<<CS01)
out tccr0, r16
s:
; =============================
;    delay loop generator
;     4000000 cycles:
; -----------------------------
; delaying 3999996 cycles:
          ldi  R17, $24
WGLOOP0:  ldi  R18, $BC
WGLOOP1:  ldi  R19, $C4
WGLOOP2:  dec  R19
          brne WGLOOP2
          dec  R18
          brne WGLOOP1
          dec  R17
          brne WGLOOP0
; -----------------------------
; delaying 3 cycles:
          ldi  R17, $01
WGLOOP3:  dec  R17
          brne WGLOOP3
; -----------------------------
; delaying 1 cycle:
          nop
; =============================
cbi porta, 0
; =============================
;    delay loop generator
;     4000000 cycles:
; -----------------------------
; delaying 3999996 cycles:
          ldi  R17, $24
xWGLOOP0:  ldi  R18, $BC
xWGLOOP1:  ldi  R19, $C4
xWGLOOP2:  dec  R19
          brne xWGLOOP2
          dec  R18
          brne xWGLOOP1
          dec  R17
          brne xWGLOOP0
; -----------------------------
; delaying 3 cycles:
          ldi  R17, $01
xWGLOOP3:  dec  R17
          brne xWGLOOP3
; -----------------------------
; delaying 1 cycle:
          nop
; =============================
sbi porta, 0
rjmp s
Hier sollte gleichzeitig noch ne led blinken. das tut sie aber nicht

von M. Н. (Gast)


Lesenswert?

ohh jetzt funktioniert alles. Ein wackelkontakt auf dem Steckbrett :)

Danke.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Schmeiss das Ding in die nächstgelegene Mülltone. Viele Fehler beruhen 
auf schlechten Kontakten im Steckbrett, so man denn eins verwendet...

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.