Departament de Microelectrònica i Sistemes Electrònics
AVR i FONAMENTS DE COMPUTADORS
Enginyeria en Informàtica (ETSE)
comptadors - exemple 5: generació de polsos per a IR
En la detecció d'obstacles en robòtica mòbil és útil emprar un conjunt emissor-receptor d'infrarroigs. L'emissor sol ser un fotodiode que emet en l'infrarroig i el receptor un fototransistor amb un filtre de detecció en els ultrasons que evita la interferència d'altres ones en la recepció. Per tant, el fototransistor és sensible a infrarroigs modulats en els ultrasons, entre 36KHz i 38KHz.
Aquest exemple mostra la generació/recepció de senyal per un circuit detector per a infrarroigs. El circuit ha estat provat en un microcontrolador ATmega128.
Per a generar la modulació s'ha emprat el timer0 del ATmega128. És un timer amb característiques similars al timer2 del ATmega8. El funcionament del programa es basa en el mode de Clear Timer on Compare:
- Es programa el Timer0 per a funcionar en mode CTC. A cada comparació el timer0 es reinicialitza.
- Es programa la sortida OC0 (PORTB.4) en commutació sobre comparació. Per tant, a cada comparació, en què el timer0 reinicialitza, la sortida commuta.
- El rellotge del ATmega128 en la placa ET-AVR funciona a 16MHz. Donat que es necessita una freqüència de 38KHz, i que la sortida commuta un cop a cada comparació del timer0, el registre de comparació del timer0 s'ha de carregar amb el valor 16MHz/38KHz/2= 211.
- No es fa cap acció sobre interrupció. Per tant, no s'activa.
- El programa principal implementa un bucle en el que emet una seqüència de polsos a 38KHz durant un cert temps i, un cop emesa la seqüència s'espera durant una estona.
.INCLUDE "m128def.inc"
.DEF srri = R10 ; guarda status reg
.DEF temp = R16 ; registre temporal
.DEF ir = R17 ; registre guarda divisor per IR
.DEF temp1 = R18 ; nombre de polsos del burst
.ORG 0x0
rjmp inici
inici: ldi temp,LOW(RAMEND)
out SPL,temp
ldi temp,HIGH(RAMEND)
out SPH,temp
ldi ir, 211
out OCR0, ir ;
ldi temp, (1<<WGM01)|(1<<COM00)|(1<<CS00)
out TCCR0, temp
sbi DDRB,4
main: nop
ldi temp, (1<<WGM01)|(1<<COM00)|(1<<CS00)
out TCCR0, temp
rcall wait
ldi temp, (1<<WGM00)|(1<<COM00)|(0<<CS00)
out TCCR0, temp
cbi PORTB,4
rcall wait
rcall wait
rcall wait
rjmp main
wait: ldi temp, 8
loop0: ldi temp1, 255
loop1: dec temp1
brne loop1
dec temp
brne loop0
ret; PROGRAMA GENERADOR DE BURSTS PER IR A 36-38KHz
; Joan Oliver
; Universitat Autònoma de Barcelona
;
; Alguns valors per OC0 (amb ck0=16MHz, prescaler=8 i toggle en OC0):
; 227 -> IR=35.2KHz
; 225 -> IR=35.6KHz
; 222 -> IR=36.0KHz
; 220 -> IR=36.4KHz
; 217 -> IR=36.8KHz
; 215 -> IR=37.2KHz
; 213 -> IR=37.6KHz
; 211 -> IR=38.0KHz
; 208 -> IR=38.4KHz
; 206 -> IR=38.8KHz
; crida a rutina d'inici del programa
;-------INICI--------------------------------------------------------
; inicialització stack
;-------SETUP CNT2----------------------------------------------------
; amb TOSC=16MhZ i prescaler a 1
; WGM01:0 = 2 --> Clear Timer on Compare
; COM01:0 = 1 --> OC0 toggle on compare match
; càrrega valor de comparació en OCR0
; inicialització Timer0 a CTC, OC0 toggle i prescaler a 1
;-------SETUP PORTS----------------------------------------------------
; -> sortida OC0
;-------PROGRAMA PRINCIPAL--------------------------------------------
;rellotge burst activat: aquí s'emet el pols durant 1 wait
;rellotge burst desactivat: s'esperen 3 waits
; en desactivar el timer0, s'allibera el PORTB.4, i això permet...
; ...posar la sortida a 0, de forma que no s'emeti infrarroig pel led
; retornar a programa principal
;-------RUTINA D'ESPERA------------------------------------------------
La figura mostra la resposta del programa. En blau s'observen els trens de polsos generats pel timer0 a una freqüència de 38KHz. La resposta vermella és la detecció del fototransistor (a 1-lògic el valor en repòs). La detecció d'obstacle posa a 0 la sortida del fototransistor.
Sortida de l'oscil·locop. En blau els polsos generats. En vermell la resposta del fototransistor en rebre el rebot del senyal emès.
WcN - AVR i Fonaments de computadors -> Comptadors -> Exemple 5