Сб апр 18, 2015 19:13:37
Сб апр 18, 2015 20:11:35
Сб апр 18, 2015 21:06:17
Сб апр 18, 2015 21:15:49
DrLivsy писал(а):показывает свою собственную тактовую частоту 4МГц как 4.000660.
Вс апр 19, 2015 07:18:38
botchin писал(а):Мне кажется, что гдето в Microchip-е я читал про етот способ. Давно бъло. Но и идея с внешним въводом тоже будеть работат. Но, здесь у меня проблемъ. Не люблю тратить ног МК на пустяки.DrLivsy писал(а):показывает свою собственную тактовую частоту 4МГц как 4.000660.
Здесь скорее время измерения не является въдержаннъм. Я так думаю.
Вс апр 19, 2015 07:30:06
Не занимался, но прокомментирую. Там достаточно одной ноги, так как когда она работает как шлюз - она находится в высокоимпендансном состоянии - сконфигурирована как вход и на входной сигнал не влияет, а когда "досчитывает" то как выход и потому "давит" входной сигнал. Это решение было придумано 20 лет назад, когда ничего лучше чем pic16c84 у радиолюбителей не было. Сейчас такое решение не актуально - есть кристаллы с несколькими таймерами и функциями Gate.DrLivsy писал(а):То есть, одна нога перекрывает шлюз для входного сигнала, а вторая генерирует импульсы досчета. Кто занимался, прокомментируйте, плз.
Вс апр 19, 2015 07:45:43
uldemir писал(а):Не занимался, но прокомментирую. Там достаточно одной ноги, так как когда она работает как шлюз - она находится в высокоимпендансном состоянии - сконфигурирована как вход и на входной сигнал не влияет, а когда "досчитывает" то как выход и потому "давит" входной сигнал. Это решение было придумано 20 лет назад, когда ничего лучше чем pic16c84 у радиолюбителей не было. Сейчас такое решение не актуально - есть кристаллы с несколькими таймерами и функциями Gate.DrLivsy писал(а):То есть, одна нога перекрывает шлюз для входного сигнала, а вторая генерирует импульсы досчета. Кто занимался, прокомментируйте, плз.
Чт авг 18, 2022 09:55:32
Чт авг 18, 2022 10:32:33
Чт авг 18, 2022 12:59:09
Чт авг 18, 2022 13:15:19
Чт авг 18, 2022 14:03:52
#bit LC1POL = 0xF11.7 // CLC1POL, bit 7
void main() {
setup_clc1(CLC_ENABLED | CLC_OUTPUT_INVERTED);
while(TRUE) {
LC1POL = 0;
output_bit(PIN_C3, LC1OUT);
delay_ms(1000);
LC1POL = 1;
output_bit(PIN_C3, LC1OUT);
delay_ms(1000);
}
}
Чт авг 18, 2022 15:16:02
Чт авг 18, 2022 15:55:21
t0_pre = 256;
T0CON1 |= 0b11100000; // T0CS = 0b111 -> CLC1
uint8_t tmp = get_timer0();
while (tmp == get_timer0()) {
LC1POL = 0;
LC1POL = 1;
t0_pre--;
}
T0CON1 &= 0b00011111; // T0CS = 0b000 -> T0CKIPPS (True)
freq = ((uint32_t)t0_hi * 256 + (uint32_t)t0_lo) * 256 + (uint32_t)t0_pre; // prescaler = 256
Сб авг 20, 2022 14:11:14
PIC16F18326, 26.3 Programmable Prescaler
... The prescaler is not directly readable or writable. Clearing the prescaler register can be done by writing to the TMR0L register, the T0CON0 register, or the T0CON1 register.
Сб авг 20, 2022 15:28:34
Сб авг 20, 2022 15:54:49
Сб авг 20, 2022 16:39:33
Сб авг 20, 2022 17:55:12
#bit LC1POL = 0xF11.7
void main() {
LC1POL = 1;
setup_clc1(CLC_ENABLED | CLC_OUTPUT_INVERTED | CLC_MODE_AND);
clc1_setup_input(1, CLC_INPUT_CLCIN0); // PIN_C3
clc1_setup_gate(1, CLC_GATE_SET | CLC_GATE_NON_INVERTED_INPUT_1);
clc1_setup_gate(2, CLC_GATE_SET);
clc1_setup_gate(3, CLC_GATE_SET);
clc1_setup_gate(4, CLC_GATE_SET);
while(TRUE) {
output_bit(PIN_C4, LC1OUT);
delay_ms(100);
}
}
... маршрутизацию cигнала через PPS изменить ...
t0_pre = 256;
uint8_t tmp = get_timer0();
clc1_setup_gate(1, CLC_GATE_SET | CLC_GATE_CLEAR);
while (tmp == get_timer0()) {
LC1POL = 0;
LC1POL = 1;
t0_pre--;
}
clc1_setup_gate(1, CLC_GATE_SET | CLC_GATE_NON_INVERTED_INPUT_1);
freq = ((uint32_t)t0_hi * 256 + (uint32_t)t0_lo) * 256 + (uint32_t)t0_pre; // prescaler = 256
Сб авг 20, 2022 18:19:39