Arduino Timer: bapala ka nako mererong ea hau

pack Arduino UNO

Nakong e fetileng re ile ra hatisa boitsebiso bo eketsehileng mabapi le millis () mosebetsi de ArduinoJoale re tla teba haholoanyane Arduino Timer, ho qala ka tšobotsi ena bakeng sa sebopeho, utloisisa hore na boto ena e laola nako joang le MCU, hammoho le mesebetsi e meng e fetang millis().

Arduino Timer ke eng?

sebali sa nako ea arduino

El Sebali sa nako ea Arduino, kapa sebali sa nako, ke ts'ebetso e sebelisoang ke hardware (ka microcontroller, ka thuso ea kristale ea quartz e hlahisang maqhubu a oache le e behang "rhythm", ntle le tlhokahalo ea hardware ea ka ntle kapa ICs 555) e lumellang ho laola liketsahalo tsa nakoana ka lebaka la lioache. ka hare. Mohlala, ho etsa hore mosebetsi o etsahale ka linako tse itseng, ho etsa litekanyo tse nepahetseng tsa nako, joalo-joalo, ntle le khoutu ea sekeche.

Como Arduino UNO E na le chip ea MCU e sebetsang ho 16 Mhz, 16.000.000 e ka bolaoa motsotsoana o mong le o mong. Litaelo li hloka li-cycle tsa X hore li phethe, eseng kaofela ha tsona tse sebetsang ka nako e tšoanang ea lioache, mohlala, tse 16-bit li hloka lipotoloho tse ling moahong ona oa AVR.

Ak'u nahane hore u sebelisa delay() tshebetso, sena se tla thibela ho bolaoa ho Arduino MCU ho fihlela nako e boletsoeng e feta ebe o tsoela pele ka lenaneo, empa nako e ke ke ea thibela. E tla be e le nako ha MCU e ntse e tsoela pele ho phethahatsa litaelo tse ling ka nako e le 'ngoe. Ke ona molemo o moholo.

Sebali sa nako se amana le tšitiso ea Arduino, kaha ba tla bolaoa ka tsona ho ea mosebetsing o itseng. Ka mantsoe a mang, Arduino Timer ke ts'ebetso e hlahisoang ka nako e itseng, e etsa mosebetsi o sitisang. Ke kahoo hape ho leng bohlokoa ho tseba ka litšitiso tsena.

Mekhoa

Arduino Timer e na le Mekhoa e 2 ea tšebetso, ho khona ho e sebelisa ho:

  • Letšoao la PWM: U ka khona ho laola Arduino pins (~).
  • CTC (Hlakola sebali sa nako mabapi le papali): e bala nako ka har'a k'haontareng 'me ha e fihla ho boleng bo boletsoeng bukeng ea li-timers, tšitiso e etsoa.

E na le linako tse kae? Mefuta ea Linako

Arduino UNO mesebetsi ea millis

Ho na le 3 linako lipoleiting Arduino UNO, le hoja ho ka ba le tse ling holim'a lipoleiti tse ling tse holimo:

  • Selemo 0: 8-bit, e ka bala ho tloha ho 0 ho isa ho 255 (256 litekanyetso tse ka khonehang). E sebelisoa ke mesebetsi e kang delay(), millis(), le micros(). Phetoho ea eona ha e khothalletsoe e le hore e se ke ea fetola mananeo.
  • Selemo 1: e lekana le Nako ea 0. E sebelisoa ke laebrari ea Servo e UNO (Timer 5 bakeng sa MEGA).
  • Selemo 2: 16-bit, 'me e ka tloha ho 0 ho ea ho 65.525 (65.536 litekanyetso tse ka khonehang). E sebelisoa bakeng sa lentsoe () ts'ebetso, haeba e sa sebelisoe, e ka sebelisoa ka bolokolohi bakeng sa kopo ea hau.
  • Nako ea 3, 4, 5 (ho Arduino MEGA feela): kaofela 16-bit.

Arduino Timer e sebetsa joang?

li-timers, li-timers

Ho ba khona sebetsa ka Arduino Timer, ho bohlokoa ho tseba hore na tsena tsohle li sebetsa joang ka mokhoa oa elektroniki ho MCU ea boto ena ea ntlafatso:

  • Khafetsa Clock: ke palo ea lipotoloho ka motsotsoana eo e khonang ho e ntshetsa pele, tabeng ea Arduino ke 16 Mhz, kapa se tšoanang, pontšo ea oache e oscillates ka makhetlo a 16.000.000 ka motsotsoana (lipotoloho).
  • Nako: e emeloa ke T, 'me e lekanngoa ka metsotsoana, 'me ke ho fapana ha lipotoloho. Ka mohlala, T=1/C, e neng e tla fella ka 1/16000000 = 0.0000000625, nako e neng e tla nka hore potoloho ka 'ngoe e phethe. 'Me khafetsa ke ho fapana ha nako, kahoo f = 1/T.
  • Mokoloto: ke e 'ngoe le e 'ngoe ea ho ipheta-pheta ha lets'oao le hlahang yuniti ea nako. Ho Arduino e ka ba 16M ka motsotsoana. Kapa ke eng e tšoanang, tabeng ena, ha lipotoloho tse limilione tse 16 li fetile, motsotsoana o le mong o fetile. Ka hona, ho ka boleloa hore potoloho e le 'ngoe e nka 625 ns.
  • pheletso ya sesupo: Matšoao a oache a na le lisekoere, 'me mathōko a ka phahama kapa a oa. Moeli ke mola o otlolohileng oa lets'oao ha le fetoha ho tloha ho:
    • 0 (tlase) ho isa ho 1 (phahameng): nqa e phahameng.
    • 1 (phahameng) ho isa ho 0 (tlase): ho oela holimo.

Methapo e bohlokoa hobane li-timers tsa Arduino li lekanya lipotoloho ho tloha mathōkong a matšoao. A) Ho joalo contador e eketseha ka potoloho e 'ngoe le e' ngoe 'me ha e fihla ho boleng ba ngoliso, ho sitisoa ho etsoa.

Ka hona, hang ha u tseba sena, haeba u na le 16Mhz ho Arduino MCU, 'me ho sebelisoa 8-bit Timer, ho ka boleloa hore litšitiso li tla etsahala ka 16 μs (256/16000000) kapa 4 ms bakeng sa 16-bit (65536/16000000). Ka hona, haeba u beha registara ea 16-bit ho ea holimo, ka boleng ba 65535, joale tšitiso e tla etsahala ho 4 ms ho phethahatsa mosebetsi ofe kapa ofe oo e leng oona.

Ha counter e fihla boleng bo phahameng ka ho fetisisa bo ka khonehang, e tla khutlela ho 0 hape. Ke hore, ho na le khaphatseho 'me e tla bala ho tloha qalong.

Ho laola sekhahla sa ho eketseha ha sebali sa nako u ka se sebelisa hape motho ea etellang pele, e nkang boleng 1, 8, 64, 256 le 1024 mme e fetola nako ka tsela ena:

Lebelo la Nako (Hz) = Lebelo la Oache ea Arduino / Prescaler

Haeba e le 1 prescaler molaoli o tla nyolohela ho 16 Mhz, haeba ke 8 ho isa ho 2 Mhz, haeba ke 64 ho 250 kHz, joalo-joalo. Hopola hore ho tla ba le comparator ea timer counter state ho bapisa boleng ba counter le prescaler ho fihlela li lekana ebe o etsa ketso. Kahoo, sitisa leqhutsu e fanoa ka foromo:

+1 ke hobane rejisetara ea khaunta e ngotsoe ho 0, ke hore, ha e qale ho bala ho 1, empa ho 0.

Khahlanong le lebelo (Hz) = Arduino / Prescaler Clock Frequency (boleng ba rejisetara ea bapisa + 1)

Ka lehlohonolo, ha rea ​​​​lokela ho etsa joalo fetola direkoto ea Arduino Timers, kaha e tla hlokomeloa ke lilaebrari tseo re li sebelisang khoutu. Empa haeba li sa sebelisoe, li tlameha ho hlophisoa.

Mehlala ho Arduino IDE

Arduino IDE, mefuta ea data, mananeo

E le hore u utloisise sena sohle betere, mona ke bonts'a likhoutu tse peli tsa sketch bakeng sa Arduino IDE eo u ka fumanang boiphihlelo ba tšebeliso ea nako. Ea pele ke khoutu e tla benya LED e hokahaneng le Arduino pin 8 motsotsoana o mong le o mong:

#define ledPin 8
void setup()
{
  pinMode(ledPin, OUTPUT);
  // Configurar Timer1
  TCCR1A = 0;                        //Registro control A a 0, pines OC1A y OC1B deshabilitados
  TCCR1B = 0;                        //Limpia el registrador
  TCCR1B |= (1<<CS10)|(1 << CS12);   //Configura prescaler a 1024: CS12 = 1 y CS10 = 1
  TCNT1 = 0xC2F8;                    //Iniciar timer para desbordamiento a 1 segundo
                                     //65536-(16MHz/1024/1Hz - 1) = 49912 = 0xC2F8 en hexadecimal
  
  TIMSK1 |= (1 << TOIE1);           //Habilitar interrupción para Timer1
}
void loop()
{
}
ISR(TIMER1_OVF_vect)                              //Interrupción del TIMER1 
{
  TCNT1 = 0xC2F7;                                 // Reniciar Timer1
  digitalWrite(ledPin, digitalRead(ledPin) ^ 1); //Invierte el estado del LED
}

Lenaneo la ho panya kapa ho benya ha LED, joalo ka ketsahalong e fetileng motsotsoana o mong le o mong, empa lekhetlong lena u sebelisa CTC ke hore papiso:

#define ledPin 8
void setup()
{
  pinMode(ledPin, OUTPUT);
  
  // Configuración Timer1
  TCCR1A = 0;                //Registro de control A a 0
  TCCR1B = 0;                //Limpiar registro
  TCNT1  = 0;                //Inicializar el temporizador
  OCR1A = 0x3D08;            //Carga el valor del registro de comparación: 16MHz/1024/1Hz -1 = 15624 = 0X3D08
  TCCR1B |= (1 << WGM12)|(1<<CS10)|(1 << CS12);   //Modo CTC, prescaler de 1024: CS12 = 1 y CS10 = 1  
  TIMSK1 |= (1 << OCIE1A);  //Habilita interrupción por igualdad de comparación
}
void loop()
{
}
ISR(TIMER1_COMPA_vect)          //Interrupción por igualdad de comparación en TIMER1
{
  digitalWrite(ledPin, digitalRead(ledPin) ^ 1);   //Invierte el estado del LED
}

Tse ling mabapi le mananeo a Arduino

reka poleiti Arduino UNO Tšen3

Litaba tsa sengoloa sena li latela melao-motheo ea rona ea melao ea boitšoaro ea bongoli. Ho tlaleha phoso tlanya mona.

E-ba oa pele ho fana ka maikutlo

Siea maikutlo a hau

aterese ya hao ya imeile ke ke ho phatlalatswa.

*

*

  1. E ikarabella bakeng sa data: Miguel Ángel Gatón
  2. Morero oa data: Laola SPAM, tsamaiso ea maikutlo.
  3. Molao: Tumello ea hau
  4. Puisano ea data: Lintlha li ke ke tsa tsebisoa batho ba boraro ntle le ka tlamo ea molao.
  5. Polokelo ea data: Database e hapiloeng ke Occentus Networks (EU)
  6. Litokelo: Nako efe kapa efe o ka fokotsa, oa hlaphoheloa mme oa hlakola tlhaiso-leseling ea hau.

Teko ea SenyesemaneLeka Secatalanpotso ea sepanishe