Страница 5 из 5

Re: Сопряжение дозиметра с МК.

Добавлено: Пт июл 13, 2012 17:40:21
просто КОТ
Я чёто из даташита не понял, как включить делилку на 8, на пин Т0. Т.к. пин Т0 подкючается цифрами 00000111, а делилка цифрами 00000010.

Re: Сопряжение дозиметра с МК.

Добавлено: Пт июл 13, 2012 17:52:16
Ser60
Ничего не выйдет. На вход прескайлера можно только подавать частоту от внутреннего генератора МК, а не сигналы с внешнего пина.

Re: Сопряжение дозиметра с МК.

Добавлено: Пт июл 13, 2012 19:49:42
просто КОТ
А ка быть?! Частоту тока снижать?!
Попробуем. . .

Re: Сопряжение дозиметра с МК.

Добавлено: Пт июл 13, 2012 20:25:57
Ser60
Можно, конечно, снижать частоту внешним делителем на 8 или 10, но я-бы подумал о другом МК. Например, тот-же 2313а. Иное решение - использовать прерывание по переполнению таймера и считать число переполнений, сохранив его во внешней переменной, скажем х. Тогда по-окончании счета число импульсов поступивших на вход таймера будет равно х*256+TCNT0. Счетчик таймера, таким образом, будет выступать в роли делителя на 256.

Re: Сопряжение дозиметра с МК.

Добавлено: Пт июл 13, 2012 20:49:42
просто КОТ
Да нет, просто кондёр в РЦ цепочке побольше взять!

Re: Сопряжение дозиметра с МК.

Добавлено: Чт авг 02, 2012 12:59:32
просто КОТ

Код: Выделить всё

#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")   // Потом сон
}
}
Ребят, можете это откомпилировать?! А то у мя снова глюки с программой -- не пашет, после установки Винды 7.

Коды чуть разные, во втором не будет работать при кол-ве импульсов 0т 100 до 200 -- знаю. Он тестовый, для другого немного!