Счетчик импульсов с UART(снятие показаний)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение urry »

ну, скажем, там будет не последнее значение
1 DDRB&=0xFE;
2 DDRB&=0xFD;
чистятся 2 младшие разряда.
Записывать нужно более информативно, например
#define CLOCK 0
#define ENBL 1
DDRB&=~((1 << CLOCK) | (1 << ENBL));
Реклама
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

urry писал(а):ну, скажем, там будет не последнее значение
1 DDRB&=0xFE;
2 DDRB&=0xFD;
чистятся 2 младшие разряда.
Записывать нужно более информативно, например
#define CLOCK 0
#define ENBL 1
DDRB&=~((1 << CLOCK) | (1 << ENBL));
Информативно, это да. Но я ж правильно понимаю, что и моя запись по части достижения цели - корректная?
Реклама
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Наконец-то программатор приехал и я собрал в железе то, что проектировал в протеусе.
С горечью обнаружил, что работает оно не так как в протеусе :-(
Посему подскажите, люди добрые, пару вопросов:
1)Внешние прерывания (INT0, INT1) при замыкании ножки МК на ноль срабатывает многократно. Чем дольше контакт замкнут, тем больше прерываний и тем больше накручен счетчик. Протеус по какой-то причине этого не моделировал. Как правильно считать такие прерывания?(Чтобы одно замыкание - одно прерывание)
2)Я почему-то был уверен, что стабилизатор(L78L33ABZ-AP) напряжения, при падении входящего напряжения будет до победного держать на выходе 3.3В, а потом резко отрубится, а на практике выходит, что на выходе напряжение падает тоже плавно, это так и должно быть?
3)Я читал в мануале, что у ATTiny2313 есть встроенный Brown-out detection, т.е. когда контроллер вырубается, если напряжение стало слишком низким. Я хочу ее заюзать, но только не могу понять, контроллер потом сам включится, когда напряжение питание снова станет нормальным?
4)И еще я не совсем понимаю работу компаратора ATTiny2313. Если AIN1 станет меньше, чем AIN0, то прерывание сработает однократно, или будет постоянно срабатывать?

Спасибо.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Gudd-Head »

andrey_ims писал(а):1)Внешние прерывания (INT0, INT1) при замыкании ножки МК на ноль срабатывает многократно.
Прерывание по фронтам или по уровню настроено?
andrey_ims писал(а):2)Я почему-то был уверен, что стабилизатор(L78L33ABZ-AP) напряжения, при падении входящего напряжения будет до победного держать на выходе 3.3В, а потом резко отрубится, а на практике выходит, что на выходе напряжение падает тоже плавно, это так и должно быть?
В общем, да.
andrey_ims писал(а):3)Я читал в мануале, что у ATTiny2313 есть встроенный Brown-out detection, т.е. когда контроллер вырубается, если напряжение стало слишком низким. Я хочу ее заюзать, но только не могу понять, контроллер потом сам включится, когда напряжение питание снова станет нормальным?
Это по сути, просто Reset, который нажимается когда напряжение ниже порога.
andrey_ims писал(а):4)И еще я не совсем понимаю работу компаратора ATTiny2313. Если AIN1 станет меньше, чем AIN0, то прерывание сработает однократно, или будет постоянно срабатывать?
У Тиньки только по фронтам прерывание.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Эиком - электронные компоненты и радиодетали
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Alexeyslav »

По большей части это все базовые знания по электронике и работе контроллера.

Прерывания будут работать так как настроены - если настроено прерывание по фронтам то будет одно прерывание на импульс, если настроено на уровень - будет постоянно вызываться пока активен уровень. И про дребезг контактов не стоит забывать, он часто возникает в аналоговых цепях подключенных к цифровому входу.

Стабилизатор линейный, представляет собой транзистор управляемый несложной аналоговой схемой - с чего бы ему отрубаться если в нем даже компараторов нет. Более того стабилизатор не способен поддерживать напряжение на выходе если разница напряжений вход-выход меньше определенной величины(обычно это 0.7-1.5В).

т.е. при напряжении на входе меньше 4В на выходе оно уже начнет падать.
Реклама
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Все прерывания настроены по фронту

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

//Set external interrupter settings
   PCMSK |= (1<<PIND2);   //What is it?
   MCUCR = (1<<ISC01) | (1<<ISC00);   // INT0 will be interrupt by rising side of impulse
   MCUCR = (1<<ISC11) | (1<<ISC10);   // INT1 will be interrupt by rising side of impulse
   GIMSK |= (1<<INT0);   // Enable int0 interrupt
   GIMSK |= (1<<INT1);   // Enable int1 interrupt

   //Set comparator settings
   ACSR  |=  (1<<ACI);    // clear Analog Comparator interrupt
   ACSR  |=
   (0<<ACD)   |           // Comparator ON
   //(0<<ACBG)  |           // Disconnect 1.23V reference from AIN0 (use AIN0 and AIN1 pins)
   (1<<ACIE)  |           // Comparator Interrupt enabled
   //(0<<ACIC)  |           // input capture disabled
   (1<<ACIS1) |           // set interrupt bit on positive edge
   (1<<ACIS0);            // (ACIS1 and ACIS0 == 11), so comparator do interrupt by rising side of impulse
Реклама
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Alexeyslav »

Если прерывания настроены на фронты и они все же возникают при постоянном уровне на входе - значит имеют место быть достаточно сильные помехи.
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Alexeyslav писал(а):Если прерывания настроены на фронты и они все же возникают при постоянном уровне на входе - значит имеют место быть достаточно сильные помехи.
Я вот сейчас еще заметил, что я в своем прерывании не отключаю обработку прерывания:

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

ISR(INT0_vect)
{
   waterCounter++;
}
А в некоторых примерах делают так:

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

SIGNAL(SIG_INTERRUPT1)//обработка прерываний INT1
{
   cli();//запрещение прерываний на время обработки прерывания
   s = s+5000;//увеличиваем переменную s на 5000
   sei();//разрешение прерываний
}
Может быть из-за этого?
А если помехи - то откуда им взяться?
Последний раз редактировалось andrey_ims Пн авг 05, 2013 10:50:38, всего редактировалось 1 раз.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Gudd-Head »

andrey_ims писал(а):Все прерывания настроены по фронту
Есть такая штука — дребезг контактов, которого в Шпротеусе нет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Gudd-Head писал(а):
andrey_ims писал(а):Все прерывания настроены по фронту
Есть такая штука — дребезг контактов, которого в Шпротеусе нет.
Не, ну я понимаю конечно дребезг, ну не до такой-же степени. Причем видна явная зависимость от времени замкнутого контакта, а ведь дребезг на замыкании/размыкании в основном.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Gudd-Head »

andrey_ims писал(а):Все прерывания настроены по фронту

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

   MCUCR = (1<<ISC01) | (1<<ISC00);   // INT0 will be interrupt by rising side of impulse
   MCUCR = (1<<ISC11) | (1<<ISC10);   // INT1 will be interrupt by rising side of impulse
ПЗДЦ :facepalm:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Кажется я понял суть проблемы:
Вот это тут явно лишнее, откуда я его вообще взял))

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

PCMSK |= (1<<PIND2);   //What is it?
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Gudd-Head писал(а):
andrey_ims писал(а):Все прерывания настроены по фронту

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

   MCUCR = (1<<ISC01) | (1<<ISC00);   // INT0 will be interrupt by rising side of impulse
   MCUCR = (1<<ISC11) | (1<<ISC10);   // INT1 will be interrupt by rising side of impulse
ПЗДЦ :facepalm:
Блин, тут наверное так нужно было:

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

   MCUCR |= (11<<ISC00);   // INT0 will be interrupt by rising side of impulse
   MCUCR |= (11<<ISC10);   // INT1 will be interrupt by rising side of impulse
А как тогда проотеус это схавал?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Gudd-Head »

Шпротеус — это просто симулятор, он мог ваше нажатие на кнопку отрабатывать как чёрт знает что.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Alexeyslav »

А если помехи - то откуда им взяться?
Откуда угодно. Цифровые схемы они очень чувствительны к разводке, особенно масса проблем возникает на макетках.

Вам бы почитать книжки "конструирование высокоскоростных цифровых устройств. начальный курс черной магии.". Недостаточно просто соединить все выводы дорожкой, важно сделать это правильно чтобы одна цепь не влияла на другую.
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Вот еще схему устройства выложил:
Изображение

Может кто покритиковать захочет :-)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Gudd-Head »

Если только отсутствие резисторов у светодиодов.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Gudd-Head писал(а):Если только отсутствие резисторов у светодиодов.
А для чего там резисторы? У диодов вполне приличное сопротивление
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение Gudd-Head »

andrey_ims писал(а):По специальности я программист, и имею только общее представление о схемотехнике.
Просто поверьте что так надо. Иначе светики сгорят, прихватив с собой порты Тиньки.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
andrey_ims
Открыл глаза
Сообщения: 73
Зарегистрирован: Пн июл 01, 2013 22:38:09

Re: Счетчик импульсов с UART(снятие показаний)

Сообщение andrey_ims »

Спасибо!
Ответить

Вернуться в «Разные вопросы по МК»