Använda statistisk processtyrning för att testa Attiny85 inre klockan (4 / 7 steg)
Steg 4: Assembler program
Detta är koden för programmet assembler, hex filen nedan är det program som du kommer in på Attiny85:
;************************************
; Skrivet av: JRV31
; datum: 2-20-15
; version: 1.0
; filen sparas som: FreqTest.asm
; för AVR: attiny85
; klockfrekvens: 8MHz
;************************************
; Programmet funktion:
;
; Testa frekvens Attiny85 marker att se om de
; Håll den +/-10% som anges i databladet.
;
;---------------------------------------
.nolist
.include ". / tn85def.inc"
.lista
.def temp = r16
def counter1 = r17
def counter2 = r18
def counter3 = r19
.org 0x0000
rjmp Init
Init:
LDI temp, 0b00000010
ut DDRB, temp; Konfigurera PB1 som utdata.
viktigaste:
SBI PORTB, 1. Ställa in PB1 (aktivera LED i 2 klockcykler)
rcall fördröjning
CBI PORTB, 1. Rensa PB1 (stänga av lampan i 2 klockcykler)
rcall fördröjning
rjmp huvudsakliga
;===============================================
; Denna subrutin är en trippel kapslade dröjsmål loop.
; om counter1 = 2, counter2 = 30 och
; counter3 = 32 förseningen blink programmet
; kör på 504 Hz när chipet körs på 8 MHz.
;===============================================
fördröjning:
LDI counter1, 2
LDI counter2, 30
LDI counter3, 32
antal:
dec counter3
CPI counter3, 0
brne greve
LDI counter3, 32
dec counter2
CPI counter2, 0
brne greve
LDI counter2, 30
dec counter1
CPI counter1, 0
brne greve
ret
Och detta är monterade hex filen du kommer in på Attiny85s:
: 020000020000FC
: 1000000000C002E007BBC19A03D0C19801D0FBCF6A
: 1000100012E02EE130E23A953030E9F730E22A95ED
: 0E0020002030C9F72EE11A951030A9F7089587
: 00000001FF
Denna fil körs på 504 Hz när körs med en klockhastighet på 8 MHz på mitt test Attiny85 med en kontrollerad kristalloscillator. Varje chip kommer att köra på denna frekvens om kontrolleras av min kristall. Detta är den standard som används för att mäta hastigheten på markerna. Genom att köra detta på ett chip med en intern oscillator och mäta skillnaden vi kan mäta hastigheten på chipet.
Kopiera denna kod till en fil och kalla det FreqTest.hex.
Öppna Arduino IDE och ange vilken styrelsen till "Attiny85 (interna 8 MHz klocka)", och bränna boot loader för att ställa in säkringarna så chip går på 8MHz.
Nu kopiera filen FreqTest.hex till en Attiny85 med avrdude. Avrdude är programmet där Arduino IDE att ladda upp koden så att du redan har det installerat.
Använd det här kommandot att ladda upp programmet:
sudo avrdude -b 19200 - c usbtiny -p t85 - v -e - U flash:w:FreqTest.hex
Mäta frekvensen med din mätare. Det uppmätta värdet över 504 gånger 8,000,000 ger dig den verkliga hastigheten av chip när du kör på den interna klockan på 8 MHz.
Alla tillverkade delar har vissa tolerans. Kristallen jag använt har en tolerans på 30 PPM så finns det fortfarande vissa möjligheten till fel, men den är minimerad.