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

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Кхем, я тут решил продолжить эксперименты, теперь всё сделал немного лучше и проще. Я убрал прерывания и работает оно теперь так: включилось, подало плюс на РВ.3, запустив генератор, посчитало импульсы с него (поступают на РВ.2) и зажгло один из светиков на РВ.0/РВ.1/РВ.4. Затем уснуло и спит до следующего включения резетом. И кот код прилагаю соответственно. Вопрос -- правилен ли код?!

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

#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>

void maim(void)
{
DDRB=0b011011;
PORTB=0b10010;
MCUCR=0b00100010;
GTCCR=0b10000000;
asm("sei");
while (1)
{
PORTB=001000
TCCR0B=0b00000111;
_delay_ms(1000);
TCCR0B=0b00000000;
if (TCNT0>200)
{
PORTB=000001;
_delay_ms(2000)
PORTB=000000;
}
else if (TCNT0>300)
{
PORTB=000010;
_delay_ms(2000)
PORTB=000000;
}
else if (TCNT0>500)
{
PORTB=010000;
_delay_ms(5000)
PORTB=000000;
}
asm("sleep")
}
}
Изображение
И ты врёшь!!! © Vladisman
Изображение
Реклама
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

ЛЮДИ! Ай нид ё хелп! :beer:
Изображение
И ты врёшь!!! © Vladisman
Изображение
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

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

Сообщение Ser60 »

Так в чем проблема собрать на макетке и попробовать? Тогда и ждать никого не надо будет.
Навскидку:
1. Режим сна не разрешен (бит7 MCUCR).
2. Зачем разрешать прерывния, если они не используются (нет обработчиков)?
3. У регистра GTCCR нет бита 7.
ПИШИТЕ КОММЕНТАРИИ В КОДЕ
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 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")   // Потом сон
}
}
ТАК?!
Последний раз редактировалось просто КОТ Пт июл 13, 2012 16:58:58, всего редактировалось 2 раза.
Изображение
И ты врёшь!!! © Vladisman
Изображение
Реклама
Эиком - электронные компоненты и радиодетали
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

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

Сообщение a_skr »

while(1) - просто лишнее
и уберите все else, а то не видать Вам зеленого и красного ;)
Реклама
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Так?! А что с ГТЦЦРэ?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Реклама
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

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

Сообщение a_skr »

а вот это:
PORTB=000001;
что такое?
в восьмеричной системе пишем? ;)
PS. GTCCR - все в datasheet есть. просто открывать лень ;)
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Ну а как, если у Тинки13 только 6 пинов в порту Б?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

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

Сообщение Ser60 »

У 2313a в ГТЦЦР задействован всего 1 бит - нулевой, см. стр. 119 ДШ и служит он для обнуления счетчика таймера и прескайлера.

С else сейчас неправильно. Подумайте сами : если таймер насчитает 510 то в последней версии кода все 3 IF условия будут выполнены. Соответственно, выполняся все 3 IF блока, один за другим. Вам это надо?
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Три одновременно или три поочерёдно?!
У мя не 2313 а просто 13. . .
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

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

Сообщение Ser60 »

ОК, бит 7 ГТЦЦР позволяет держать прескайлер в ресете пока этот бит установлен. Без него если сделать ресет, то прескайлер обнулится и потом сразу начнет считать.

PORTB = 000001 - все нормально и правильно.

Одновременно процессор ничего не вычисляет. С ELSE, Вам надо переписать первую версию кода, начав с проверки большего значения, т.е. 500:

if (TCNT0 > 500)
{...}
else if (TCNT0 > 300)
{...}
else if (TCNT0 > 200)
{...}

А что делать если TCNT0 < 200? В данном коде ничего не будет делаться.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Если меньше, значит отрицательная радиация! Значит электроны из нас вылетают! Тогда дозик уже не надо. . .
И да, с 7мым битом в ГТЦЦР, можно запускать счётчик вообще, или обнулять надо?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

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

Сообщение Ser60 »

Зачем Вам вообще нужен прескайлер.? Я-бы подавал импульсы со счетчика прямо на таймер. Кстати. Timer0 8-битный и может считать только до 255. Для больших значений используйте Timer1. A обнулять счетчик таймера можно просто записав 0 в TCNT0 или TCNT1.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

А прескайлер это как?! Делитель?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

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

Сообщение Ser60 »

Да, делитель.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Хм, тогда можно делить на 10 и использовать 8-битный счётчик, т.к. в АТТини13 вроде всего 1 счётчик. . .
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

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

Сообщение Ser60 »

Точно, там только 1 таймер. А прескайлер может делить на 8/64/256/1024.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Так, тогда делим на 8! 255 * 8 = 2040. Мне хватит!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

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

Сообщение Ser60 »

Для дозиметра это грубовато. Прескайлер пропустит на счетчик 1 импульс из 8. Я-бы подумал о МК с 16-битным Timer1 и включил его напямую без прескэйлера.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

У мня планируется генератор с управлением от CdS резистора на приблизительно 2кГц. Цифры 200, 300 и 500 то пока о балды, я не калибровал. По идее будут цифры типа 2000, 1800 и, например, 1400. После деления на восемь будет 250, 225 и 175 соответственно. Так что, думаю, будет работать нормально.
Изображение
И ты врёшь!!! © Vladisman
Изображение
Ответить

Вернуться в «Умные мысли»