Сопряжение дозиметра с МК.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Сопряжение дозиметра с МК.
Я чёто из даташита не понял, как включить делилку на 8, на пин Т0. Т.к. пин Т0 подкючается цифрами 00000111, а делилка цифрами 00000010.
- Реклама
Re: Сопряжение дозиметра с МК.
Ничего не выйдет. На вход прескайлера можно только подавать частоту от внутреннего генератора МК, а не сигналы с внешнего пина.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Сопряжение дозиметра с МК.
А ка быть?! Частоту тока снижать?!
Попробуем. . .
Попробуем. . .
Re: Сопряжение дозиметра с МК.
Можно, конечно, снижать частоту внешним делителем на 8 или 10, но я-бы подумал о другом МК. Например, тот-же 2313а. Иное решение - использовать прерывание по переполнению таймера и считать число переполнений, сохранив его во внешней переменной, скажем х. Тогда по-окончании счета число импульсов поступивших на вход таймера будет равно х*256+TCNT0. Счетчик таймера, таким образом, будет выступать в роли делителя на 256.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Сопряжение дозиметра с МК.
Да нет, просто кондёр в РЦ цепочке побольше взять!
- Реклама
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Сопряжение дозиметра с МК.
Код: Выделить всё
#define F_CPU 8000000 // Инициализация
#include <avr/io.h>
#include <util/delay.h>
void maim(void)
{
DDRB=0b011011;
PORTB=0b10010;
MCUCR=0b01000000;
GTCCR=0b10000000;
asm("sei");
{
PORTB=001000 // Запускаю генератор
TCCR0B=0b00000111; // Запускаю счётчик
_delay_ms(1000);
TCCR0B=0b00000000; // Счётчик выключается
if (TCNT0>500) // Если насчитал больше 500, зажечь синий светик
{
PORTB=000001;
_delay_ms(5000)
PORTB=000000;
}
else if (TCNT0>300) // Если более 300, то ещё и зелёный
{
PORTB=000010;
_delay_ms(2000)
PORTB=000000;
}
else if (TCNT0>200) // А если более 200, то ещё и красный
{
PORTB=010000;
_delay_ms(2000)
PORTB=000000;
}
asm("sleep") // Потом сон
}
}Код: Выделить всё
#define F_CPU 8000000 // Инициализация
#include <avr/io.h>
#include <util/delay.h>
void maim(void)
{
DDRB=0b011011;
PORTB=0b10010;
MCUCR=0b01000000;
GTCCR=0b10000000;
asm("sei");
{
PORTB=001000 // Запускаю генератор
TCCR0B=0b00000111; // Запускаю счётчик
_delay_ms(1000);
TCCR0B=0b00000000; // Счётчик выключается
if (TCNT0>300) // Если насчитал больше 300, зажечь синий светик
{
PORTB=000001;
_delay_ms(5000)
PORTB=000000;
}
else if (TCNT0>200) // Если хотя бы более 200, то ещё и зелёный
{
PORTB=000010;
_delay_ms(2000)
PORTB=000000;
}
else if (TCNT0<100) // А если менее 100, то ещё и красный
{
PORTB=010000;
_delay_ms(2000)
PORTB=000000;
}
asm("sleep") // Потом сон
}
}Коды чуть разные, во втором не будет работать при кол-ве импульсов 0т 100 до 200 -- знаю. Он тестовый, для другого немного!




