메모리를 절약하기 위해 Arduino UNO (= ATMega328P-PU) 프로그램을 작성 중이므로 avra.exe (atmel studio의 avrasm32와 동일)를 사용하여 컴파일하고 avrdude를 업로드하고 간단한 깜박 거리는 프로그램은 잘 실행됩니다. 하지만 지금은 PWM으로 LED를 반쯤 밝게하려고했습니다. 오류에 대한 코드를 확인했지만 아무 것도 찾지 못했지만 LED가 완전히 밝아졌습니다. 나는 배선도 점검했다. 내 pwm.asm 코드는 다음과 같습니다.Arduino PWM 페이딩, avra와 함께
.nolist
.include "m328pdef.inc"
.list
.cseg
.org 0x00
rjmp start
.org 0x34
start: sbi ddrb, 5 ;pin 13
sbi portb, 5 ;pin 13 on, just to compare with the PWMed led
sbi ddrd, 5 ;pin 5 pwm
ldi r16, 0b00100011 ;fast pwm mode, non inverted pwm at oc0b = pin 5
out tccr0a, r16 ;I'm using Timer0
ldi r16, 0b00000001 ;no prescaler
out tccr0b, r16
ldi r16, 128 ; duty cycle = 50%
out ocr0b, r16
loop: rjmp loop
듀티 사이클 값을 변경하려고했지만 아무 것도 변경되지 않았습니다.
avr-gcc와 함께 나는 .lss (어셈블리)가 더 많거나 적고 괜찮습니다. . 어쩌면 LED가 잘못 연결 되었나요? – KIIV