Cemi Skrevet 17. desember 2009 Del Skrevet 17. desember 2009 Hei, jeg er ikke sikker på om dette spørsmålet hører hjemme her, men jeg antar at det har noe med assembly å gjøre. Jeg prøver å forstå hvordan man velger en prescaler til en gitt interrupt, programmerer til ATMega128, bruker AVRStudio 4 og desverre ikke i C++. :/ For eksempel .equ F_OSC=3686000 .equ tikk_tall=(3686000/1024)*15 Her skal man ha interrupt hvert 15 sekund. Såvidt jeg forstår så kan man sette prescaleren til hva man vil av 1, 8, 64, 256 og 1024. Jeg vet derimot ikke hvorfor man skulle foretrekke en over en annen, eller hvorfor man skulle bruke en prescaler i det hele tatt. Hvorfor velger man å benytte prescaler, hvorfor kan man ikke bare la det være? Interrupten ville jo fungert uansett om man bare tok F_OSC*15 såvidt jeg kan forstå? Lenke til kommentar
Kagee Skrevet 24. desember 2009 Del Skrevet 24. desember 2009 Nå har jeg ikke drevet spesifikt med en ATMega128, men jeg tror jeg kan forklare deg teorien. En timer vil telle opp (eller ned) hver gang den får et signal, f.eks en gang hvert microsekund. Timeren vil utløse et interrupt når den går fra f.eks FF(255) til 00 eller andre veien. Men fordi denne timeren ikke har noen prescaler, kan den kun brukes for tidsperioder som er 255 ganger 1 microsekund. Dersom du har en prescaler vil den "samle opp" f.eks 1024 "tick" før den inkrementerer timeren, noe som gjør at den kan brukes 255 * 1024 * 1 microsekund. (denne forklaringen er dårlig, bruker helt tullete tall, og kan godt være feil, men nå har du iallefall et svar) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå