Проблема с подсчетом импульсов ATmega8
Проблема с подсчетом импульсов ATmega8
Здравствуйте. Значит купил себе МК ATmega8 поставил внешний кварц на 16 Mhz, прошил фьюзы для его активации, организовал обмен с Com-портом и сел в лужу на самом простом - на подсчете импульсов с ноги МК.
Изначально хотел читать с ноги PC4 ее состояние и от этого рулить:
Код на CVAVR:
while (1) {
if(PINC.4==1) PORTC.5=1; //(LED)
else PORTC.5=0;
};
Но вот тут вся загвоздка: подаю я на PC4-ножку 4.5 вольта и мгновенно срабатывает условие, т.е. в моем случае загорается лампочка, но когда убрать питание от ноги, то происходит непонятная штука - лампочка горит еще несколько секунд, а потом гаснет...
Погрыз я гранит науки, покопался в интернете и пришел к выводу, что нужно счетчик реализовывать с помощью таймера МК. Теории в интернете полно, а вот практики практически нет.
Я думаю задача всем знакомая, может кто-нибудь помочь с этой проблемой? Желательно на CVAVR, т.к. другими компиляторами не я пользовался, да и новичек я в этой области знаний.
Изначальная же задача звучит так: Задано число импульсов - N. Импульсы имеют разную скважность. Требуется посчитать время за которое происходят эти N импульсов и послать значение на com-порт.
Изначально хотел читать с ноги PC4 ее состояние и от этого рулить:
Код на CVAVR:
while (1) {
if(PINC.4==1) PORTC.5=1; //(LED)
else PORTC.5=0;
};
Но вот тут вся загвоздка: подаю я на PC4-ножку 4.5 вольта и мгновенно срабатывает условие, т.е. в моем случае загорается лампочка, но когда убрать питание от ноги, то происходит непонятная штука - лампочка горит еще несколько секунд, а потом гаснет...
Погрыз я гранит науки, покопался в интернете и пришел к выводу, что нужно счетчик реализовывать с помощью таймера МК. Теории в интернете полно, а вот практики практически нет.
Я думаю задача всем знакомая, может кто-нибудь помочь с этой проблемой? Желательно на CVAVR, т.к. другими компиляторами не я пользовался, да и новичек я в этой области знаний.
Изначальная же задача звучит так: Задано число импульсов - N. Импульсы имеют разную скважность. Требуется посчитать время за которое происходят эти N импульсов и послать значение на com-порт.
- Реклама
Re: Проблема с подсчетом импульсов ATmega8
Insase писал(а): подаю я на PC4-ножку 4.5 вольта и мгновенно срабатывает условие, т.е. в моем случае загорается лампочка, но когда убрать питание от ноги, то происходит непонятная штука - лампочка горит еще несколько секунд, а потом гаснет...
Подтяжку на ножку включите или резистором определите на ней четко "0" или "1".
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
вы забыли сказать, что при этом подавать на ножку надо 0, а не 4,5В, как было раньше... и условие в программе, соответственно, изменить на обратное... а еще надо подавлять дребезг, если "подавание" делается каким-то контактом... не все так просто, как кажетсяVov123 писал(а):сделайте
void main (void)
{
DDRC.4=0;//направление вход
PORTC.4=1//подтяжка на вход
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
тогда дребезга скорее всего не будетInsase писал(а):"подавание" делается с помощью оптоэлектронного реле "5П7".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
есть два пути:Insase писал(а):Спасибо всем все заработало, осталось понять как с помощью реле подавать не 5V, а теперь уже землю..
1. включить реле между выводом и общим проводом
2. плюнуть на "подтяжку" и прилепить резистор 1К с вывода на общий, оставив реле, как было (т.е. продолжая подавать 5В)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


