03-05-2023, 12:10
682kHz tym sprzętem nie osiągniesz. Masz w komentarzach w pliku wyraźnie napisane wzór na częstotliwość:
OCR2A może przyjąć wartości od 0 do 255. Do tego dochodzi prescaler, ale i z jego wykorzystaniem niewiele zdziałasz.
A co do dopisywania nowych wartości do programu:
Ta funkcja wykonuje się przy odczycie danych z EEPROM. Jeżeli którakolwiek z danych nie będzie się zgadzać to będziesz mieć 40kHz.
Dobrze poczytaj opisy w programie - można z nich wyciągnąć wiele przydatnych informacji. (Częstotliwość można zapamiętać poprzez długie przytrzymanie w prawo lub w lewo).
Kod:
// f = 8MHz/(OCR2A + 1)
OCR2A może przyjąć wartości od 0 do 255. Do tego dochodzi prescaler, ale i z jego wykorzystaniem niewiele zdziałasz.
A co do dopisywania nowych wartości do programu:
Kod:
void checkIfPeriodAndScalaOK() {
/********************************************************************************
#define minPeriod1 0 // for register OCR2A defining max frequency 0 -> 8 MHz when scala1
#define maxPeriod1 127 // for register OCR2A defining minimum frequency 127 -> 62.50 kHz when scala1
#define minPeriod2 16 // EEPROM = 16 + 128, for register OCR2A defining minimum frequency 16 -> 58.82 kHz when scala2
#define maxPeriod2 127 // EEPROM = 127 + 128, for register OCR2A defining minimum frequency 127 -> 7.81 kHz when scala2
*********************************************************************************/
if(scala == scala1 && (period > maxPeriod1 || period < minPeriod1)) period = maxPeriod1;
if(scala == scala2 && (period < minPeriod2 || period > maxPeriod2)) period = minPeriod2;
if(scala != scala1 && scala != scala2) { // if scala wrong then scala2 and period=24 -> 40kHz
period = 24; // for register OCR2A=24(+128) defining frequency 40 kHz with prescaler 8x
scala = scala2; // prescaler 8x
}
}
Dobrze poczytaj opisy w programie - można z nich wyciągnąć wiele przydatnych informacji. (Częstotliwość można zapamiętać poprzez długie przytrzymanie w prawo lub w lewo).