Например TDA7294

Форум РадиоКот • Просмотр темы - Динамическая индикация и пара кнопок: нужна помощь
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср июл 02, 2025 13:32:13

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Динамическая индикация и пара кнопок: нужна помощь
СообщениеДобавлено: Вт ноя 20, 2012 23:18:55 
Первый раз сказал Мяу!

Зарегистрирован: Вт янв 31, 2012 21:09:21
Сообщений: 28
Откуда: Украина
Рейтинг сообщения: 0
Приветствую, уважаемые коты!
Нужна помощь консультативного характера. Делаю типа термостата, который будет следить за температурой воды в системе отопления, и в зависимости от нее включать-выключать нагрузки. Попутно температура будет выводиться на двухразрядный семисегментник. Также в схеме присутстсвуют 2 кнопки: "+" и "-" для установления верхнего порога срабатывания.
И вот теперь вопрос: динамическую индикацию температуры на индикаторе я с горем пополам одолел (говорю сразу - с МК на "ВЫ", только-только начинаю). А вот с опросом кнопок получается затык.... Протеус мои кнопки полностью игнорит. Знаю, многие скажут, что все симуляторы - это от лукавого... Но если вдруг найдется желающий взглянуть и ткнуть носом в ошибку - буду признателен. Моих мозгов пока не хватает понять где косяк.
Проект протеуса с исходниками во вложении.


Вложения:
_KOTEL_new.rar [96.4 KiB]
Скачиваний: 318
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация и пара кнопок: нужна помощь
СообщениеДобавлено: Ср ноя 21, 2012 04:24:02 
Нашел транзистор. Понюхал.

Зарегистрирован: Чт сен 16, 2010 19:47:01
Сообщений: 192
Откуда: Украина
Рейтинг сообщения: 0
Конечно, программа написана неправильно, но даже в таком состоянии работоспособна.
В первую очередь увеличте частоту обновления индикатора, сейчас меньше 4Гц при 1Мгц тактовой. Получается
10^6/TCCR0(1024)/256 = 3,8Гц. В главном цикле, там где опрос кнопок, бессмысленный код, а именно: антидребез не закончен, т.е. это не антидребезг, нет повторной проверки после задержки в 200мс (обычно единичное нажатие 30-50мс и повторная проверка). Ну и в конце главного цикла стоит считывание температуры с датчика, что буквально "затирает" только что инкрементированное или декрементирвоанное значение в переменной indication.
Отлаживайте программу поочерёдно, например закомментируйте всё, что касается температуры, отработайте только инкремент.
А сам по себе код опроса кнопок рабочий. Я извинюсь, что переписал в терминах GCC, просто с CodeVisione не работаю.

Спойлер
Код:
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <inttypes.h>

int set_temp=50;

char digits[] =
{
   0b11000000,                   //0
   0b11111001,                   //1
   0b10100100,                   //2
   0b10110000,                   //3
   0b10011001,                   //4
   0b10010010,                   //5
   0b10000010,                   //6
   0b11111000,                   //7
   0b10000000,                   //8
   0b10010000,                   //9
   0b10001001,                   //Буква Н
   0b11111111                    //пустота
 };

char digit_out[2];
char cur_dig;                 //Переменные для работы с LED
unsigned int indication;      //Переменная для хранения чисел

void recoding(void)
{
   if (indication < 100)
   {
       digit_out[0]=indication/10;
       digit_out[1]=indication%10;
    }
}

int main(void)
{
   PORTB = 0x03;
   DDRB = 0x0C;

   PORTC = 0x00;
   DDRC = 0x06;

   PORTD = 0x00;
   DDRD = 0x7F;

   TCCR0 = 0x02;

   TIMSK = 0x01;

   ACSR = 0x80;

   sei();

   while (1)
   {   
      if (!(PINB & _BV(0)))
      {
         set_temp++;
         _delay_ms(200);
         indication = set_temp;
         recoding();
         //_delay_ms(1000);
      };
     
      if (!(PINB & _BV(1)))
      {
         set_temp--;
         _delay_ms(200);
         indication = set_temp;
         recoding();
         //_delay_ms(1000);
       };

      recoding();

      }
}

ISR(TIMER0_OVF_vect)
{
   PORTD = 0xFF;
   switch(cur_dig)
   {
      case(0):
      {
         PORTC |= _BV(1);
         PORTC &= ~_BV(2);
         break;
      };
      case(1):
      {
         PORTC |= _BV(2);
         PORTC &= ~_BV(1);
         break;
      };
      default: break;
   }

   PORTD = digits[digit_out[cur_dig]];
   cur_dig++;

   if(cur_dig == 2)
   cur_dig = 0;
}


Вложения:
Mega8.hex [1.15 KiB]
Скачиваний: 569
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация и пара кнопок: нужна помощь
СообщениеДобавлено: Ср ноя 21, 2012 07:49:06 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 11
Зарегистрирован: Вт фев 21, 2012 20:42:26
Сообщений: 135
Откуда: Санкт-Петербург, Россия, Земля
Рейтинг сообщения: 0
Про кнопки есть замечательная тема Помогите опросить кнопку.
От себя добавлю - делайте проверку границ переменной set_temp.
Код:
// Сейчас так
set_temp++;

//Так лучше
if (set_temp < 100) set_temp++;

Для кнопки "-" аналогично.

_________________
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация и пара кнопок: нужна помощь
СообщениеДобавлено: Ср ноя 21, 2012 08:52:38 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1341
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4561
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
viewtopic.php?f=20&t=79801


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y