Stap 4: De assembler programma
Dit is de code voor de assembler-programma, de hexadecimaal bestand hieronder is het programma dat u zal worden geladen op de Attiny85:
;************************************ ; written by: JRV31 ; date: 2-20-15 ; version: 1.0 ; file saved as: FreqTest.asm ; for AVR: attiny85 ; clock frequency: 8MHz ;************************************ ; Program function: ; ; Test frequency of Attiny85 chips to see if they ; hold the +/- 10% specified in the data sheet. ; ;--------------------------------------- .nolist .include "./tn85def.inc" .list .def temp = r16 .def counter1 = r17 .def counter2 = r18 .def counter3 = r19 .org 0x0000 rjmp Init Init: ldi temp, 0b00000010 out DDRB,temp ; Configure PB1 as output. main: sbi PORTB, 1 ; Set PB1 (Turn on LED in 2 clock cycles) rcall delay cbi PORTB,1 ; Clear PB1 (Turn off LED in 2 clock cycles) rcall delay rjmp main ;=============================================== ; This subroutine is a triple nested delay loop. ; if counter1 = 2, counter2 = 30 and ; counter3 = 32 the delay this blink program ; runs at 504 Hz when the chip is running at 8 MHz. ;=============================================== delay: ldi counter1,2 ldi counter2,30 ldi counter3,32 count: dec counter3 cpi counter3,0 brne count ldi counter3,32 dec counter2 cpi counter2,0 brne count ldi counter2,30 dec counter1 cpi counter1,0 brne count ret
En dit is geassembleerde hexadecimaal bestand die u zal worden geladen op de Attiny85s:
:020000020000FC :1000000000C002E007BBC19A03D0C19801D0FBCF6A :1000100012E02EE130E23A953030E9F730E22A95ED :0E0020002030C9F72EE11A951030A9F7089587 :00000001FF
Dit bestand wordt uitgevoerd bij 504 Hz als draait op een kloksnelheid van 8 MHz op mijn test Attiny85 met een gecontroleerde kristal oscillator. Elke chip zal uitvoeren op deze frequentie als gecontroleerd door mijn crystal. Dit is de standaard gebruikt voor het meten van de snelheid van de chips. Door dit op een chip met behulp van de interne oscillator en het meten van het verschil dat we kunnen meten de snelheid van de chip.
Kopieer deze code in een bestand en noem deze FreqTest.hex.
Open de Arduino IDE en het type van de Raad van bestuur ingesteld op "Attiny85 (de interne klok van de 8 MHz)", en het branden van de bootloader als u wilt instellen van de fuses zodat de chip op 8MHz draait.
Nu kopieer je het bestand van de FreqTest.hex op een Attiny85 met behulp van avrdude. Avrdude is het programma dat gebruikmaakt van de Arduino IDE code uploaden zodat u reeds geïnstalleerd hebt.
Gebruik deze opdracht voor het uploaden van het programma:
sudo avrdude -b 19200 -c usbtiny -p t85 -v -e -U flash:w:FreqTest.hex
Het meten van de frequentie met uw meter. De gemeten waarde meer dan 504 keer 8.000.000 krijgt u de werkelijke snelheid van de chip bij het uitvoeren van de interne klok op 8 MHz.
Elk gefabriceerd onderdeel heeft sommige tolerantie. Het kristal die ik gebruikte is een tolerantie van 30 PPM, dus er nog steeds enkele mogelijkheid van fout is, maar het is geminimaliseerd.