Регулировка временных задержек подстроечным резистором???

Обсуждаем контроллеры компании Atmel.
Ответить
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Скомпилировал. Всё так же работает, но первое реле совсем не включается, а цикл как и раньше - один раз только работает(((

Может там нужно "else" или "return" добавить?
Реклама
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

sanyo.95 писал(а): Так если я её уберу реле же мгновенно переключиться и всё?
я думал зацикливается что то где то, не работает (работает 1 раз) только тумблер ? другой сигнал нормально формируется в цикле ?
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Morroc писал(а):не работает (работает 1 раз) только тумблер ? другой сигнал нормально формируется в цикле ?
нет, вся программа работает 1 раз, и при включенном тумблере, и при выключенном.
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Я дико извиняюсь, затупил. Проблема была в резисторе который регулирует простой 2го реле. Я накрутил его не в ту сторону и задержка получилась огромная))
Извините еще раз.
Morroc, тебе ОГРОМНЕЙШЕЕ спасибо)))
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

это которое с тумблером ? ну примерно так и подумал :) желательно цеплять com-порт какой нибудь к мк (и библиотечку какую нибудь готовую чтобы мозг не ломать) для вывода значений переменных на время отладки - очень все упрощает

8)
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Morroc писал(а):это которое с тумблером ?
Нет, то что без тумблера.
Morroc писал(а):желательно цеплять com-порт какой нибудь к мк (и библиотечку какую нибудь готовую чтобы мозг не ломать) для вывода значений переменных на время отладки - очень все упрощает
Можно поподробней об этом? Зачем com-порт, какую библиотечку???
Реклама
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

ну чтобы глянуть реальные значения w r t, например, к компу подключается мк через переходник, запускается терминал, а в программе пишем вывод в него и смотрим

есть переходники usb-uart с ttl уровнями - можно такой прям на ноги мк повесить, достаточно даже одной ноги (+ общий)
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Morroc писал(а):запускается терминал
Что за терминал, это софт какой-то? :oops:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

терминальная программа для ПК. рекомендую BrayTerminal
http://blindage.org/?p=3035
http://microsin.net/programming/AVR/avr-uart-debug.html
http://avr-start.ru/?p=550
Ставим плюсы: )
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Понял. Спасибо, буду пока изучать информацию, потом попробую.
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Вот еще такой вопрос: для данного устройства как лучше поступить с выводами AVcc, AGND, AREF?
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

avcc +, agnd земля, aref можно оставить висеть наверное
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Здравствуйте еще раз. Поработала данная программа на железе некоторое время и пришлось её значительно исправить, вот тут и возникли у меня проблемы.

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

#include <mega8.h>
#include <delay.h>

void main(void)
{
int w;
int r;
unsigned char a=0;

PORTB=0x04;
DDRB=0x03; 
PORTC=0x04;
DDRC=0x00;
while (1)
      {       
       ADMUX=0;//замер по ноге РС0 
       delay_us(10); 
       ADCSR |=0x40; 
       while((ADCSRA & 0x10)==0);  
       ADCSRA|=0x10;
       w=ADCW;
                             
       ADMUX=1; // замер по ноге РС1
       delay_us(10); 
       ADCSR |=0x40; 
       while((ADCSRA & 0x10)==0);  
       ADCSRA|=0x10; 
       r=ADCW;
       
       if(PINB.2==0)// если контакты замкнуты(постоянно)
         {
         PORTB.1=1;      // "1" на порт В1
         delay_ms(10*w); // регулируемая задержка
         PORTB.1=0;      // "0" на порт В1               
         }       
                      
         PORTB.0=1;       // "1" на порт Б1
        if(PINC.2==0)     //если кнопка нажата
        {
         delay_ms(50);    // ждем 50мс
         while(PINC.2==0) // ждем отпускания кнопки
         {}     
         if(++a>=2)          // если "а" равно 2(кнопка нажата 2 раза)
          {
          PORTB.0=0;       // "0" на порт Б
          a=0;             // обнуляем "а"
          delay_ms(20*r);
          }         
         }
      }  
        
}
По идее PINB.2 это тумблер, когда он включен должен однократно выполниться этот код

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

PORTB.1=1;      // "1" на порт В1
         delay_ms(10*w); // регулируемая задержка
         PORTB.1=0;      // "0" на порт В1 
потом, за ним всё остальное и так по кругу.
Если же тумблер выключен, то сразу должно выполняться "всё остальное" и так по кругу.
Но по приведенному выше коду происходит что-то не понятное: код, который должен выполняться, когда тумблер включен, выполняется как бы вместе со "всем остальным", при этом программа перестает реагировать на нажатие кнопки (которая после 2ух нажатий выключает PORTB.0
Вот такая беда. Подскажите пожалуйста как решить данную проблему? Спасибо.
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

на сколько велики вообще задержки ? скорее всего оно в принципе работает, но из за такого использования задержек реакция на нажатие кнопки плохо предсказуема (при включенном тумблере и большом w можно давить кнопку до 10 сек без какого то эффекта вообще), надо менять подход - применять прерывания или без них дробить время выполнения, например сделать цикл 0.1 сек, а длительные задержки формировать счетчиками кол-во циклов или используя глобальный счетчик времени (который ++ в прерывании), точность при этом будет определяться длительностью одного цикла (мб точнее и не надо ?) зато глюков с опросом таких не будет, еще лучше формировать вкл/выкл в прерывании с большой частотой регулируя длительности опять же счетчиками для каждого сигнала (в основном цикле опрос кнопки/тумблеров и формирование начальных значений для счетчиков)
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Нашел транзистор. Понюхал.
Сообщения: 170
Зарегистрирован: Вс мар 30, 2014 21:41:24
Откуда: Украина

Сообщение sanyo.95 »

Morroc писал(а):на сколько велики вообще задержки ?
Ну примерно от 1 до 10с каждая (они ведь "регулируются")
Morroc писал(а):применять прерывания
то есть в функцию обработки прерываний поместить опрос кнопки? или тумблера? Прерывания я так понимаю от таймера?
И еще, обработчик прерываний работает "отдельно" от процессора т.е. процессор делает свои дела, а обработчик в это время с заданной частотой опрашивает кнопку/тумблер?
Morroc писал(а):регулируя длительности опять же счетчиками для каждого сигнала
длительности где применяются переменные r и w? Чего-то я вообще не понимаю, как это сделать?
Вот еще блок-схему нарисовал, думал поможет разобраться...
блок схема.jpg
Блок-схема
(28.39 КБ) 223 скачивания
Ответить

Вернуться в «AVR»