rkat13 Δημοσ. 14 Ιουλίου 2003 Δημοσ. 14 Ιουλίου 2003 Καλησπέρα σε όλους Θα ήθελα να μάθω εάν υπάρχει κάποιος που ασχολείται με τον προγραμματισμό μικροελεγχτών της οικογένειας avr atmel.
drm Δημοσ. 15 Ιουλίου 2003 Δημοσ. 15 Ιουλίου 2003 Φίλε rkat13, έχω ασχοληθεί λιγάκι με το αντικείμενο. Οχι επαγγελματικα αλλά ακαδημαϊκά (είχα διδάξει ένα εξάμηνο το μάθημα). Αν έχεις κάποια αποροία θα χαρώ να σε βοηθήσω
rkat13 Δημοσ. 15 Ιουλίου 2003 Μέλος Δημοσ. 15 Ιουλίου 2003 Ναι μετά χαράς.Δεν μπορώ να κατανοήσω τους timers/counters και τον τρόπο λειτουργίας αυτών.Εαν μπορείς να μου πεις το πιο απλό παράδειγμα. Ευχαριστώ εκ των προτέρων Διαμαντής
xpert Δημοσ. 24 Ιουλίου 2003 Δημοσ. 24 Ιουλίου 2003 Gia sou. Ali8eia ti 8es akrivos na ftiakseis; A pulse frequency counting interface i kai mia Delay me xrisi timers/counters ; Apo hlektronika kseris tipota; Pos doulevi o telestikos se sindesmologia sigriti; Spoudazeis pou8ena i aplos monos sou asxolise me AVR. Pantos kala ekanes kai dialekses AVR apo ta PIC tis Microchip. Einai polu pio grigora kai ligo pio ftina apo ta antistixa PIC. Kai exei kai free C Compilers , eno ta PIC oxi.
drm Δημοσ. 24 Ιουλίου 2003 Δημοσ. 24 Ιουλίου 2003 Σόρυ που άργησα να απαντήσω, αλλά μόλις τώρα είδα το νέο Post, επειδή είμαι στην δουλεία τώρα δεν έχω τα παραδείγματα που θές, μόλις το laptop μου βγεί on-line (το απόγευμα) θα σου στείλω ένα παράδειγμαπου να δουλέυει
rkat13 Δημοσ. 24 Ιουλίου 2003 Μέλος Δημοσ. 24 Ιουλίου 2003 Ο.Κ ΘΑ ΠΕΡΙΜΕΝΩ ΤΟ ΜΗΝΥΜΑ. ΝΑΙ ΕΧΩ ΤΕΛΕΙΩΣΕ ΗΛΕΚΤΡΟΝΙΚΟΣ ΑΠΟ ΤΟ 1993 ΠΡΙΝ ΕΡΘΟΥΝ ΟΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΣΤΟ ΔΙΚΟ ΜΑΣ ΕΜΠΟΡΙΟ.ΠΑΡΑΛΛΗΛΑ ΤΕΛΕΙΩΝΩ ΚΑΙ ΗΛΕΚΤΡΟΛΟΓΟΣ ΓΙΑ ΝΑ ΚΑΝΩ ΕΝΑ ΩΡΑΙΟ ΠΑΝΤΡΕΜΑ
xpert Δημοσ. 26 Ιουλίου 2003 Δημοσ. 26 Ιουλίου 2003 Gia sou. Telika ti 8es den mou ipes akrivos. Ti parageigma 8elis; To pos doulevei o Timer/Counter 8a sou po oso mporo apla. Uparxei enas metritis 8bit i 16bit analoga ti microcontroller exeis. Merika exoun kai perisoterous apo 2 ton 8 bit kai 2 ton 16bit. O metritis TCNT0 autos loipon metrai palmous i opoioi mporei na einai eksoteriki apo kapoio pin pou 8a oriseis esu. I mporei na einai esoteriki apo to Clock tou Crystal i RC talantoti sto chip ean exei. Autos loipon o metris auksanetai pros ta pano apo tous palmous autous esoterikous i eksoterikous. Gia na oriseis esu pios na einai autos o palmos diegerseis uparxei enas allos kataxoritis elegxou o TCCR0 o opoios analoga me ta bit pou 8a tou kaneis enable diladi 1 kai kapoia disable diladi 0, 8a sou energopioisi pos 8a diegiretai o sigritis pou exei o microcontoller. Diladi me arnitiko metopo i 8etiko metopo tou palmou (gia eksoterikous palmous) ktl. Akoma ston kataxoriti auto uparxei kai alla bit pou xreazontai ri8misi ean 8elis na xrisimopoisis to 1/8 tou Clock i 64/clk ktl. Koita kala to Data Manual exei odigies xrisis. Auta se genikes grammes ean ginis pio sigekrimenos isos se voi8iso perisotero. Bye
rkat13 Δημοσ. 27 Ιουλίου 2003 Μέλος Δημοσ. 27 Ιουλίου 2003 ΘΕΛΩ ΝΑ ΜΑΘΩ ΠΩΣ ΜΠΟΡΩ ΝΑ ΠΡΟΓΡΑΜΜΑΤΙΣΩ ΤΟΝ 90S2313 Π.Χ.ΓΙΑ ΝΑ ΚΡΑΤΑ ΤΗΝ PORTB ΓΙΑ ΠΑΡΑΔΕΙΓΜΑ ΑΝΟΙΧΤΗ ΓΙΑ 5 ΔΕΥΤΕΡΟΛΕΠΤΑ ΓΙΑ ΑΝ ΜΠΟΡΕΣΩ ΝΑ ΔΩ ΠΩΣ ΔΟΥΛΕΥΟΥ ΟΙ TIMERS/COUNTERS
drm Δημοσ. 28 Ιουλίου 2003 Δημοσ. 28 Ιουλίου 2003 Ελπίζω ότι έχεις το manual του AVR. Πρώτα από όλα ενεργοποιείς τα Interrupt από κάποιον γενικό καταχωρητή (μπορεί GIMSK) μετά ενεργοποιείς τα interrupt του timer που σε βολεύει (TIMSK). Ο timer δουλέυει ώς εξής, ο παλμός του ρολογιού περνάει από έναν διαιρέτη (pre-scaler). Ο οποίος διαιρεί την συχνότητα του ρολογιού απο 1/1 έως 1/64 (νομίζω). κάθε παλμός που περνάει από τον διαιρέτη αυξάνει την τιμή του timer κατα 1. όταν ο timer "γεμίσει" και συμβεί το overflow (δηλ. ο timer έχει μέγιστη τιμή και έρθει ο επόμενος παλμός) τότε συμβαίνει ένα interrupt. Βάση λοιπόν της συχνότητας του Microcotroller του Pre-Scaler και του Μέγεθους του timer (8bit - 16bit) μπορείς να υπολογίσεις κάθε πότε συμβαίνει ένα interrupt. Αν o χρόνος του interrupt είναι αρκετός τον χρησιμοποιείς όπως είναι αν είναι μικρός (πχ 1 sec )τότε, κρατάς ένα global counter και τον αυξάνεις σε κάθε interrupt, όταν ο global counter φτάσει την τιμή που θες (πχ 5 για 5 δευτερόλεπτα) τότε κάνεις αυτό που θές και μηδενίζεις τον global counter....
xpert Δημοσ. 28 Ιουλίου 2003 Δημοσ. 28 Ιουλίου 2003 Opos katalava 8elis na kaneis mia ka8isterisi gia 5sec. Tote uparxoun duo tropoi na ta kaneis: 1) O palios kai ligo isos mperdemenos kata tous upologismous. Einai na xrisimopioisis Delay me Deciment i Incriment i mia mesa stin alli. px. ;Paramenetrs for Delay Delay_Parametri: clr Delay1 clr Delay2 ldi Delay3,0x0A ret ;Delay Routine Delay: dec Delay1 brne Delay dec Delay2 brne Delay dec Delay3 brne Delay ret Meletise tin ligo kai 8a katalaveis ti kani. Tin kalis px. me rcall Delay_Parametri Tora ean den se endiaferi autos o tropos uparxei o deuteros 2)Edo xrisimopoiis to Interrupt Overflow. Kai auto ginetai me xrisi tou Timer/Counter. O 90S2313 exei duo Timer/Counter enan 8bit kai enan 16bit. Edo sto paradeigma xrisimopoio enan 8 bit Counter. Meletise kala to programa kai ean exeis aporia se kapoia entoli i giati einai etsi 8a sou eksigiso. To egrapsa oso ginetai pio aplo. Kai einai pragmati polu aplo aplos meletise kai 8a dis. Ante good luke! ;*************************** Delay ****************************** ;* Mporeis na pareis Delay me xrono apo 0.0256sec eos 6.5536sec.* ;* * ;* Ean allakseis to Crystall tote prepei na allakseis kapoies * ;* grammes ston kodika , vlepe prakseis kai 8a katalaveis poies.* ;* * ;* Oi prakseis pou ekana einai oi eksis. * ;* Xrisimopoio Crystall me suxnotita 8.000Mhz. * ;* Auto simeni oti ka8e entoli ektelitai se xrono (Clock) * ;* (T=1/f) diladi 1/8000000=125nSec. * ;* 8a xrisimopioiso prescaler se 1024 pou dieri to Clock me 1024* ;* (8000000/1024).Diladi ka8e palmos diegersis tou Timer/Counter* ;* 8a einai (T=1/f) 1/(8000000/1024)=1024/8000000=128uSec. * ;* Auto simeni ean 8elis na exeis xrono 0.0256 sec delay tote * ;* prepi na metrisis sto Counter 200 kai auto giati: * ;* 0.0256Sec/128uSec=200. * ;* * ;* Opote ean xrisimopoiois 8.0Mhz clock kai prescaler se 1024 * ;* prepi na metrisis 200 gia na exeis 0.0256sec delay. * ;* Gia na metrisi o 8bit Timer/Counter 200 prepi na ksekinisi * ;* oxi apo 0 eos to 255 alla apo 0x38 se dekaeksadiko sustima * ;* 256-200=56=0x38 * ;* Afou to 56 einai se dekadiko to 0x38 einai se dekaeksadiko. * ;**************************************************************** ;Device .device AT90S2313 ;Includes: .include "2313def.inc" ;Defines: .def Temp =r16 .def DelayTime =r17 .def InOut =r18 ;Equ .equ StartoverTime =0x38 .CSEG rjmp RESET ;Reset Handler rjmp EXT_INT0 ;IRQ0 Handler rjmp EXT_INT1 ;IRQ1 Handler rjmp TIM_CAPT1 ;Timer1 Capture Handler rjmp TIM_COMP1 ;Timer1 Compare Handler rjmp TIM_OVF1 ;Timer1 Overflow Handler rjmp TIM_OVF0 ;Timer0 Overflow Handler rjmp UART_RXC ;UART RX Complete Handler rjmp UART_DRE ;UART UDR Empty Handler rjmp UART_TXC ;UART TX complete handler rjmp ANA_COMP ;Analog Comparator Handler ;Start: RESET: ;***** Set Stackpointer ***** ldi Temp,high(RAMEND) out SPH,Temp ldi Temp,low(RAMEND) out SPL,Temp ;***** Set ports, A = out ***** ser Temp out DDRA,Temp ;***** Set Timer0 ***** ldi Temp,0b00000010 ;overflow int enabled out TIMSK,Temp out TIFR,Temp ldi Temp,0b00000101 ; Set Prescaler Clock/1024 out TCCR0,Temp ;***** Start flashing LED lsb on PORTA ***** ldi InOut,0x01 LOOP: ldi Temp,0x01 eor InOut,Temp out PORTA,InOut ldi DelayTime,0xC3 ;0xC3 = 195 => 195*0,0256sec=4.992sec rcall TIME_DELAY ;Delay rjmp LOOP ;Loop forever ;Handlers: EXT_INT0: reti EXT_INT1: reti TIM_CAPT1: reti TIM_COMP1: reti TIM_OVF1: reti ;***** Interupt; Timer/Counter0 overflow ***** TIM_OVF0: ldi Temp,StartoverTime out TCNT0,Temp ;Start cpi DelayTime,0x00 breq DELAY_DONE dec DelayTime ;Decriment DELAY_DONE: reti ;Return from Interrupt Timer/Counter0 overflow ;Handlers: UART_RXC: reti UART_DRE: reti UART_TXC: reti ANA_COMP: reti ;************** Delay: DelayTime * 0.0256s *************** ;* Interupt enable kai disable mporeis na ta vgaleis ean * ;* xrisimopoiis allou tis energopoiis autes sto programma* ;********************************************************* TIME_DELAY: sei ;Interupt enabled. ldi Temp,StartoverTime out TCNT0,Temp DELAY_LOOP: cpi DelayTime,0x00 ;Loop until delay is done brne DELAY_LOOP cli ;Interupt disabled ret ;Return from rcall TIME_DELAY Vlepo o kodikas den ka8ete kala stin selida opos 8elo ego. Ean 8es stile email na sou stilo ekei. Bye
rkat13 Δημοσ. 30 Ιουλίου 2003 Μέλος Δημοσ. 30 Ιουλίου 2003 ΣΕ ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ ΓΙΑ ΤΟ ΠΑΡΑΔΕΙΓΜΑ ΤΟ e-mail ΜΟΥ ΕΙΝΑΙ [email protected].ΘΑ ΜΕΛΕΤΗΣΩ ΤΟ ΠΡΟΓΡΑΜΜΑ ΚΑΙ ΑΝ ΒΡΩ ΚΑΠΟΙΑ ΔΥΣΚΟΛΙΑ ΤΑ ΞΑΝΑΓΡΑΦΟΥΜΕ.ΑΥΤΟ ΜΕ ΤΟ INCREMENT & DECREMENT ΤΟ ΓΝΩΡΙΖΑ ΤΟ ΚΑΝΩ ΓΙΑ ΚΑΘΥΣΤΕΡΗΣΕΙΣ ΜΕ ΕΝΔΙΑΦΕΡΕΙ ΝΑ ΜΑΘΩ ΤΟΥΣ ΧΡΟΝΙΣΤΕΣ. ΚΑΙ ΠΑΛΙ ΣΕ ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΤΟΝ ΧΡΟΝΟ ΠΟΥ ΔΙΕΘΕΣΕΣ.
xpert Δημοσ. 3 Αυγούστου 2003 Δημοσ. 3 Αυγούστου 2003 Parakalo. To proigoumeno paradeigma eixe duo la8i. Edo einai sostos o kodikas. Bye ;***************************Delay************************* ;* Mporeis na pareis Delay me xrono apo 0.0256sec eos 6.5536sec. * ;* se auto to paradeigma. * ;* * ;* Ean allakseis to Crystall tote prepei na allakseis kapoies * ;* grammes ston kodika , vlepe prakseis kai 8a katalaveis poies. * ;* * ;* Oi prakseis pou ekana einai oi eksis: * ;*Xrisimopoio Crystall me suxnotita 8.000Mhz. * ;* Auto simeni oti ka8e entoli ektelitai se xrono (Clock) * ;* (T=1/f) diladi 1/8000000=125nSec. * ;* 8a xrisimopioiso prescaler se 1024 pou dieri ton * ;* Timer/Counter me f/1024 Hz opou f=8Mhz Diladi (8000000/1024) * ;* Diladi ka8e palmos diegersis tou Timer/Counter 8a einai * ;* t=1/(f/1024) --> t=1/(8000000/1024)=1024/8000000=128uSec. * ;* Auto simeni ean 8elis na exeis xrono 0.0256 sec delay tote * ;* prepi na metrisis sto Counter 200 kai auto giati: * ;* 0.0256Sec/128uSec=200. * ;* * ;* Opote ean xrisimopoiois 8Mhz clock kai prescaler se 1024 * ;* prepi na metrisis 200 ston Timer/Counter gia na exeis * ;* 0.0256sec delay (diladi na er8ei to proto interupt). * ;* Gia na metrisi o 8bit Timer/Counter 200 prepi na ksekinisi * ;* oxi apo 0 eos to 255 alla apo 0x38 se dekaeksadiko sustima * ;* 256-200=56=0x38 * ;* Afou to 56 einai se dekadiko to 0x38 einai se dekaeksadiko. * ;* Kai meta auto to Interupt to xrisimopioume toses fores oses * ;* mas xreazetai gia na exoume ton xrono pou 8eloume. Gia auto * ;* 8a exoume 5sec/0,0256sec=195.3125 diladi peripou 195 fores 8a* ;* xrisimopoiisoume to interupt gia na paroume xrono teliko pou * ;* 8eloume na exoume diladi 195*0,0256=4.992 sec . Opos vlepis * ;* 8a exeis ena mikro sfalma 5sec-4,992sec=0,008sec. To 195 * ;* einai se dekadiko kai se dekaeksadiko 8a einai C3. * ;******************************************************** ;Device .device AT90S2313 ;Includes: .include "2313def.inc" ;Defines: .def Temp =r16 .def DelayTime =r17 .def InOut =r18 ;Equ .equ StartoverTime =0x38 .CSEG rjmp RESET ;Reset Handler rjmp EXT_INT0 ;IRQ0 Handler rjmp EXT_INT1 ;IRQ1 Handler rjmp TIM_CAPT1 ;Timer1 Capture Handler rjmp TIM_COMP1 ;Timer1 Compare Handler rjmp TIM_OVF1 ;Timer1 Overflow Handler rjmp TIM_OVF0 ;Timer0 Overflow Handler rjmp UART_RXC ;UART RX Complete Handler rjmp UART_DRE ;UART UDR Empty Handler rjmp UART_TXC ;UART TX complete handler rjmp ANA_COMP ;Analog Comparator Handler ;Start: RESET: ;***** Set Stackpointer ***** ldi Temp,low(RAMEND) out SPL,Temp ;***** Set ports, B = out ***** ser Temp out DDRB,Temp ;***** Set Timer0 ***** ldi Temp,0b00000010 ;Overflow int enabled out TIMSK,Temp out TIFR,Temp ldi Temp,0b00000101 ;Set Prescaler Clock/1024 out TCCR0,Temp ;***** Start flashing LED lsb on PORTB ***** ldi InOut,0x01 LOOP: ldi Temp,0x01 eor InOut,Temp out PORTB,InOut ldi DelayTime,0xC3 ;0xC3=195 ->195*0,0256sec=4.992sec o ;xronos pou 8es rcall TIME_DELAY ;Delay rjmp LOOP ;Loop forever ;Handlers: EXT_INT0: reti EXT_INT1: reti TIM_CAPT1: reti TIM_COMP1: reti TIM_OVF1: reti ;***** Interupt; Timer/Counter0 overflow ***** TIM_OVF0: ldi Temp,StartoverTime out TCNT0,Temp ;Start cpi DelayTime,0x00 breq DELAY_DONE dec DelayTime ;Decriment DELAY_DONE: reti ;Return from Interrupt Timer/Counter0 overflow ;Handlers: UART_RXC: reti UART_DRE: reti UART_TXC: reti ANA_COMP: reti ;************** Delay: DelayTime * 0.0256s *************** ;* Interupt enable kai disable mporeis na ta vgaleis ean * ;* xrisimopoiis allou tis energopoiis autes sto programma * ;***************************************************** TIME_DELAY: sei ;Interupt enabled. ldi Temp,StartoverTime out TCNT0,Temp DELAY_LOOP: cpi DelayTime,0x00 ;Loop until delay is done brne DELAY_LOOP cli ;Interupt disabled ret ;Return from rcall TIME_DELAY
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.