:
;programma 100 un 135 Hz generatoram;kvarcs 11.0592
;lai ieguutu 100Hz jaadala ar 110592
;taa kaa jaaformee meandrs, tad fronte buus ik peec 110592/2=55296 sisteemas pulkstena tikskiem
;lai ieguutu 135Hz jaadala ar 81920
;taa kaa jaaformee meandrs, tad fronte buus ik peec 81920/2=40960 sisteemas pulkstena tikskiem
.include "tn2313def.inc"
.cseg
.org $0000
rjmp reset
.org INT0addr ;External Interrupt0
reti
.org INT1addr ;External Interrupt1
reti
.org ICP1addr ;Input capture interrupt
reti
.org OC1Aaddr ;Timer/Counter1 Compare Match A
rjmp int_comp
.org OVF1addr ;Overflow1 Interrupt
reti
.org OVF0addr ;Overflow0 Interrupt
reti
.org URXC0addr ;USART0 RX Complete Interrupt
reti
.org UDRE0addr ;USART0 Data Register Empty Interrupt
reti
.org UTXC0addr ;USART0 TX Complete Interrupt
reti
.org ACIaddr ;Analog Comparator Interrupt
reti
.org PCINTaddr ;Pin Change Interrupt
reti
.org OC1Baddr ;Timer/Counter1 Compare Match B
reti
.org OC0Aaddr ;Timer/Counter0 Compare Match A
reti
.org OC0Baddr ;Timer/Counter0 Compare Match B
reti
.org USI_STARTaddr ;USI start interrupt
reti
.org USI_OVFaddr ;USI overflow interrupt
reti
.org ERDYaddr ;EEPROM write complete
reti
.org WDTaddr ;Watchdog Timer Interrupt
reti
reset:
;inicializacijas proceduuras
;uzstaadam steka raadiitaaju uz steka beigaam
wdr
cli ;aizliedzm paartraukumus, taapat vien drosiibai
clr r2 ;sis registrs vienmeer nulle, noder
ldi r16,$DF
out SPL,r16 ;jaunaakaa kaarta
ldi YL,$60
clr YH
ldi XL,128
;notiiram operatiivo atminu
clr_loop:
st Y+,r2
dec XL
brne clr_loop
;PORTA ieejas un izejas nedefineejam, taas buus kvarcam un resetam
;nodefineejam PORTB ieejas un izejas
;PB7 - netiek izmantota caur pievelkoso rezistoru uz +
;PB6 - MISO izeja, izeja prieks ieejas sprieguma daliitaaja, sasleedzu uz masu
;PB5 - MOSI ieeja, citaadi neizmantoju, caur pievelkoso rezistoru uz +
;PB4 - ieeja, signaala celaa, nedriikst trauceet, taapeec paliek kaa ieeja bez pievelkosaa rezistora
;PB3 - izeja, kuraa buus vajadziigaa frekvence
;PB2 - izeja, PWM analogaa komparatora referencei
;PB1 - analogaa komparatora ieeja, taa, pie kuras pienaak vadiibas signaals
;PB0 - analogaa komparatora ieeja, taa, kur references spriegums
ldi r16,0b01101100
out DDRB,r16
ldi r16,0b10100000
out PORTB,r16
;nodefineejam PORTD ieejas un izejas
;PD7 - neeksistee
;PD6 - netiek izmantota caur pievelkoso rezistoru uz +
;PD5 - netiek izmantota caur pievelkoso rezistoru uz +
;PD4 - netiek izmantota caur pievelkoso rezistoru uz +
;PD3 - izeja, +5V caur diodi un 4.7k uz izejas tranzistora kolektoru
;PD2 - netiek izmantota caur pievelkoso rezistoru uz +
;PD1 - izeja TXD/ netiek izmantota caur pievelkoso rezistoru uz +
;PD0 - ieeja RXD/ netiek izmantota caur pievelkoso rezistoru uz +
ldi r16,0b00101000
out DDRD,r16
ldi r16,0b01111111
out PORTD,r16
;taimera0 A izejas PWM izmantosu analogaa komparatora ieejas references formeesanai
;kvarcs 11.0592
;taimera0 ieeja bez daliitaaja, paarpildiisanaas frekvence 43200Hz
;taimeri0 izmanto kaa PWM RPM ieejas atbalsta liimena reguleesanai
;7 - 1 Clear OC0A on Compare Match, set OC0A at TOP
;6 - 0 Clear OC0A on Compare Match, set OC0A at TOP
;5 - 0 Normal port operation, OC0B disconnected
;4 - 0 Normal port operation, OC0B disconnected
;3 - 0 neizmanto
;2 - 0 neizmanto
;1 - 1 fast PWM
;0 - 1 fast PWM
ldi r16,0b10000011
out TCCR0A,r16
;7 - 0 PWM modee
;6 - 0 PWM modee
;5 - 0 neizmanto
;4 - 0 neizmanto
;3 - 0 fast PWM virsotne FF
;2 - 0 bez daliitaaja
;1 - 0 bez daliitaaja
;0 - 1 bez daliitaaja
ldi r16,0b00000001
out TCCR0B,r16
ldi r16,128+16 ;saakotneejais PWM
out OCR0A,r16
;7 - 0 OC1A atvienots
;6 - 0 OC1A atvienots
;5 - 0 OC1B atvienots
;4 - 0 OC1B atvienots
;3 - 0 neizmanto
;2 - 0 neizmanto
;1 - 0 bez PWM
;0 - 0 bez PWM
out TCCR1A,r2
;7 - 0 input capture neizmantoju
;6 - 0 input capture neizmantoju
;5 - 0 neizmanto
;4 - 0 normaala mode
;3 - 0 normaala mode
;2 - 0
;1 - 0
;0 - 1 bez daliitaaja
ldi r16,0b00000001
out TCCR1B,r16
;taimeru paartraukumus pagaidaam neiesleedzu
;7 - 0 komparators iesleegts
;6 - 0 bangup reference nav izmantota
;5 - 0 tas ir tikai lasaams bits
;4 - 1 iterrupta karogs, ierakstam 1, lai nomestu
;3 - 0 interrupts nav atlauts
;2 - 0 izeja uz ICP netiek izmantota
;1 - 0 interrupts uz augoso fronti, bet vispaar neizmantojam
;0 - 0 interrupts uz augoso fronti, bet vispaar neizmantojam
ldi r16,0b00010000
out ACSR,r16
;sajaa vietaa paartraukumi no taimeriem veel nav atlauti
;taimeru vadiisanas registrs
;7 - 0 atlauts paartraukums no taimera 1 paarpildiisanaas
;6 - 1 atlauts paartraukums no OC1A
;5 - 0 nav atlauts OC1B
;4 - 0 rezerveets
;3 - 0 nav atlauts ICP
;2 - 0 nav atlauts paartraukums OC0B
;1 - 0 nav atlauts paartraukums no taimera0 paarpildiisanaas
;0 - 0 nav atlauts paartraukums no OC0A
ldi r16,0b01000000
out TIMSK,r16
in XL,TCNT1L ;nolasam taimera 1 staavokli
in XH,TCNT1H
inc XH ;palielinam par 256
out OCR1AH,XH ;ieliekam output compare registros so momentu, tad buus pirmaa fronte
out OCR1AL,XL
ldi r17, 0b00001000
ldi r18,low(55296) ;tas prieks 100Hz
ldi r19,high(55296)
ldi r20,low(40960) ;tas prieks 135Hz
ldi r21,high(40960)
sei ;atlaujam paartraukumus
;galvenajaa cilpaa nekas nenotiek
mainloop:
wdr
rjmp mainloop
;paartraukums OC1A
int_comp:
in r3,SREG
in r16,PORTB ;ielasam PORTB staavokli
eor r16,r17 ;izmainam uz preteejo vajadziigo bitu
out PORTB,r16 ;un ierakstam atpakal
in XL,OCR1AL
in XH,OCR1AH
sbis ACSR,ACO ;kaadai frekvencei atbilst signaals no analogaa komparatora?
rjmp fr1 ;135Hz
;frekvence 100 Hz
fr0:
add XL,r18 ;registros r19:r18 ir laika intervaals liidz naakosajai frontei prieks 100Hz
adc XH,r19
out OCR1AH,XH ;ieliekam output compare registros so momentu, tad buus naakosaa fronte
out OCR1AL,XL
ldi r16,128+16 ;PWM kas nosaka references spriegumu virs kura paarsleegsies uz 135Hz
out OCR0A,r16
out SREG,r3
reti
;frekvence 135Hz
fr1:
add XL,r20 ;registros r21:r20 ir laika intervaals liidz naakosajai frontei prieks 135Hz
adc XH,r21
out OCR1AH,XH ;ieliekam output compare registros momentu, tad buus naakosaa fronte
out OCR1AL,XL
ldi r16,128-16 ;PWM kas nosaka references spriegumu zem kura paarsleegsies uz 100Hz
out OCR0A,r16 ;liimeni atskiras, lai buutu histereeze
out SREG,r3
reti