ejercicos en atmega 164p uso de modo fast pwm cambio tiempo en alto y medir delta
Short Description
Download ejercicos en atmega 164p uso de modo fast pwm cambio tiempo en alto y medir delta...
Description
ESCUELA POLITECNICA NACIONAL SISTEMAS MICROPROCESADOS NOMBRES: Wilmer Villegas FECHA: 0 8 – 0 5 – 2012 1. Realizar un programa que genere una señal PWM (modo a usar “FAST PWM”). Con un cristal de 1MHz en donde variamos el
, para lo cual
usamos INT0 con un y INT1 con un . Cuando no presiono ninguna interrupción debo tener un delta normal igu al a 0.5, usamos cualquier frecuencia.
PROGRAMA EN AVR: .include"m164pdef.inc" .def tempo=r17 .def aux=r18 .def aux1=r19 .def aux2=r20 ; coloco los vectores de interrupcion .org 0x00
j mp .org 0x02 j mp .org 0x04 j mp .org 0x06 j mp
inic io de lta1 de lta2 de lta3
inicio: ; declaro como salida el correspondiente al OC0A ldi tempo,0b00001000 out ddrb,tempo ; declaro como entradas interrupciones ldi tempo,0b00000000 out ddrd,tempo ; habilitación de pull - up ldi tempo,0b00001100 out portd,tempo ldi tempo,0b00000100 out portb,tempo ; garantizo pull - up in tempo,mcucr andi tempo,0b11101111 out mcucr,tempo ;habilitación del SP ldi r16,high(ramend) out sph,r16 ldi r16,low(ramend) out spl,r16 ; habilitacion de interrupciones ldi tempo,0b00000111 out eimsk,tempo ;desencademaniento de interrupciones ldi tempo,0b00101010 sts eicra,tempo ;comparación y modo ldi tempo,0b10000011 out tccr0a,tempo ;preescaler 8 y modo ldi tempo,0b00000010 out tccr0b,tempo ; habilitacion global interrupciones sei
lazo: pin
rjmp lazo delta1:
las
push tempo in tempo,sreg push tempo ; cambio mi delta = 0.3 ldi aux,77 out ocr0a,aux rjmp salir delta2: push tempo in tempo,sreg push tempo ; cambio mi delta = 0.7 ldi aux1,179 out ocr0a,aux1 rjmp salir delta3:
mis
push tempo in tempo,sreg push tempo ; cambio mi delta = 0.5 ldi aux2,128 out ocr0a,aux2 salir:
de
pop tempo out sreg,tempo pop tempo reti
SIMULACION EN PROTEUS:
DIAGRAMA DE FUJO:
2. Realizar un programa el cual se ingrese una seña l de entrada externa y medir el tiempo en delta (%).
PROGRAMA EN AVR: .include"m164pdef.inc"
out
sph,r16
.def .def .def .def .def .def .def
ldi out
r16,low(ramend) spl,r16
ldi
tempo,0b00001000
sts ldi
PCICR,tempo tempo,0b01000000
sts
PCMSK3,tempo
ldi
tempo,0b00000000
sts ldi
TCCR1A,tempo tempo,0b01000000
sts ldi
TCCR1B,tempo tempo,0b00100000
sts
TIMSK1,tempo
ldi
tempo,0b0000000
ldi tempo,0b01000000 out ddrd,tempo
out out
TCCR0A,tempo TCCR0B,tempo
ldi
ldi
tempo,0b00000001
tiempoh=r17 tiempol=r18 TH=r19 TL=r20 tempo=r21 aux=r23 taux=r24
.org 0x00 j mp .org 0x0E j mp .org 0x18 j mp
inicio t i me r c aptur a
.org 0x24 j mp
desbor de
inicio:
r16,high(ramend)
sts
TIMSK0,tempo
sei clr tempo clr aux
salir: pop
tempo
out pop reti
SREG,tempo tempo
lazo: rjmp lazo timer: push tempo in tempo,SREG push tempo sbrc aux,0 rjmp detener0 clr r22 out TCCR0B,r22 out sts sts sts
TCNT0,r22 TCCR1B,r22 TCNT1H,r22 TCNT1L,r22
ldi out
r22,0b00000001 TCCR0B,r22
ldi sts ldi rjmp
r22,0b01000001 TCCR1B,r22 aux,1 salir
detener0: clr out in mov clr
r22 TCCR0B,r22 tiempol,TCNT0 tiempoh,taux aux
desborde: push tempo in tempo,SREG push tempo inc
taux
pop out pop reti
tempo SREG,tempo tempo
captura: push tempo in tempo,SREG push tempo lds lds clr sts
TH,ICR1H TL,ICR1L r22 TCCR1B,r22
sts
TCNT1H,r22
sts
TCNT1L,r22
pop
tempo
out pop reti
SREG,tempo tempo
View more...
Comments