Výpočet timera v režime CTC
Príspevkov: 3
• Stránka 1 z 1
- Robo Ulbricht
- Príspevky: 75
- Registrovaný: Štv 04. Dec 2014 22:15:58
- Bydlisko: Banská Bystrica
Výpočet timera v režime CTC
Pre mikrokontroléry ATmega328P som napísal kalkulačku, ktorá vypočíta nastavenie registrov pre želanú frekvenciu. Generuje to rovno zdrojový kód. Niečo podobného robí napríklad knižnica Timer1. Výsledkom je kód, ktorý si už len dotvoríte.
Kalkulačka je na adrese http://www.arduinoslovakia.eu/application/timer-calculator
Napríklad takto to vyzerá pre Timer1 a frekvenciu 1 Hz.
Kalkulačka je na adrese http://www.arduinoslovakia.eu/application/timer-calculator
Napríklad takto to vyzerá pre Timer1 a frekvenciu 1 Hz.
- Kód: Vybrať všetko
// AVR Timer CTC Interrupts Calculator
// v. 3
// http://www.arduinoslovakia.eu/application/timer-calculator
// Microcontroller: ATmega328P
// Created: 2017-01-18T20:50:25.493Z
#define ledPin 13
void setupTimer() {
noInterrupts();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 15624; // 1 Hz
TCCR1A |= 0;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS12) | (0 << CS11) | (1 << CS10);
TIMSK1 |= (1 << OCIE1A);
interrupts();
}
void setup() {
pinMode(ledPin, OUTPUT);
setupTimer();
}
void loop() {
}
ISR(TIMER1_COMPA_vect) {
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
}
- Robo Ulbricht
- Príspevky: 75
- Registrovaný: Štv 04. Dec 2014 22:15:58
- Bydlisko: Banská Bystrica
Re: Výpočet timera v režime CTC
Verzia 6 online kalkulátora prináša podporu mikrokontroléra ATtiny85. Tento mikrokontrolér má dva timery. Oba sú 8-bitové. Timer0 sa v podstate nelíši od toho, čo je v ATmega328P. Timer1 je iný. Nastavuje sa inak, má obrovské množstvo preddeličiek a donútiť ho robiť CTC prerušenie je trochu výzva. Ale všetko sa podarilo a testovacie príklady fungovali pre 1 MHz, 8 MHz a 16 MHz.
http://www.arduinoslovakia.eu/application/timer-calculator
https://github.com/RoboUlbricht/arduinoslovakia/tree/master/ATtiny85/timer
http://www.arduinoslovakia.eu/application/timer-calculator
https://github.com/RoboUlbricht/arduinoslovakia/tree/master/ATtiny85/timer
- Robo Ulbricht
- Príspevky: 75
- Registrovaný: Štv 04. Dec 2014 22:15:58
- Bydlisko: Banská Bystrica
Re: Výpočet timera v režime CTC
Doplnil som výpočet pre CTC timer ATmega2560. Podľa datasheetu je to rovnaké aj pre mikrokontroléry ATmega640, ATmega1280, ATmega1281, ATmega2561. ATmega2560 má 2 8-bitové timery a 4 16-bitové.
http://www.arduinoslovakia.eu/application/timer-calculator
https://github.com/RoboUlbricht/arduinoslovakia/tree/master/timer/atmega2560
http://www.arduinoslovakia.eu/application/timer-calculator
https://github.com/RoboUlbricht/arduinoslovakia/tree/master/timer/atmega2560
Príspevkov: 3
• Stránka 1 z 1