Например TDA7294

Форум РадиоКот • Просмотр темы - Странная работа с кнопками на mega8
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн авг 04, 2025 08:37:01

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


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



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 12:44:24 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
Доброго времени суток.Собираю устройство на меге8 и столкнулся с странной работой своей прошивки.Я подключаю две кнопки на PB1 и PB2,которые в свое время при нажатом состоянии замкнуты на землю.Вообщем,одна кнопка на PB1 работает нормально,а вторая нет.Учитывая ,что код совершенно одинаков,попросту продублирован.Кнопка на PB2 начинает срабатывать не при подаче отрицательного напряжение ,а наоборот положительного.Ломаю голову и не могу понять в чем может быть причина.Ниже показываю свой код.ОГРОМНАЯ просьба к знающим людям помочь помочь мне разобраться с данной проблемой.Заранее благодарен,Дмитрий.
Код:
int main(void)
{   
   bool StatusBtn1 = true;
   bool StatusBtn2 = true;

              int  balance = 0 ;
   int  price   = 3 ;     
   
   DDRB  = 0b00001000;
   PORTB = 0b00001110;
   
    while(1)
    {

        // Bill Acceptor
      if((PINB&0b00000010)==0)
      {
         if(StatusBtn1)
         {
             balance++;
           StatusBtn1 = false ;
         }
      }
      else StatusBtn1 = true;   


      // Button Start
        if((PINB&0b00000100)==0)     
        {
         if(StatusBtn2)
         {
              if(balance>=price)balance=-price;
           StatusBtn2 = false ;
         }
        }
      else StatusBtn2 = true;

    }
   return 0;

}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 13:43:33 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Вс янв 15, 2012 19:58:40
Сообщений: 454
Рейтинг сообщения: 0
Инициализацию портов смотрите внимательней.

DDRB = 0b00001000;
PORTB = 0b00001111;

_________________
Ни один домашний кот незнает что он домашний.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 15:47:13 
Встал на лапы

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пн мар 26, 2012 05:25:06
Сообщений: 106
Рейтинг сообщения: 0
Эм-м-м, а как это связано с проблемой выше? Много-много раз пересмотрел код, думал в чем-то подвох, но работы с 0-ым портом не нашел.
Вроде код вполне логичный, подводных камней тут нет. Где был получен такой неожиданный вариант? Если симулятор, то какой + выложите файл прошивки, а еще лучше озвучьте среду и выложите исходники. Если железо, то как вы определяете результат срабатывания?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 15:59:26 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
Совесть писал(а):
Эм-м-м, а как это связано с проблемой выше? Много-много раз пересмотрел код, думал в чем-то подвох, но работы с 0-ым портом не нашел.
Вроде код вполне логичный, подводных камней тут нет. Где был получен такой неожиданный вариант? Если симулятор, то какой + выложите файл прошивки, а еще лучше озвучьте среду и выложите исходники. Если железо, то как вы определяете результат срабатывания?


Огромное спасибо,что ответили.Действительно я не работаю с портом PB0,и собственно тоже не вижу смысла повышать уровень на нем.Я не использую симулятор,это происходит на физическом устройстве.Сам не могу понять как такое может быть....Код простейший,но не работает должным образом,причем только PB2.Первый порт отрабатывает на ура.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 16:30:55 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Как вариант попробовать считывать весь регистр в переменную, и уже после работать с этой переменной накладывая маски.
еще можно посмотреть промежуточные файлы компилятора на ассемблере.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 16:43:06 
Встал на лапы

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пн мар 26, 2012 05:25:06
Сообщений: 106
Рейтинг сообщения: 0
Работаете с железом, уже хоть что-то. Как вы определяете срабатывание кнопки? Пользуетесь отладчиком?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 16:46:56 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
Совесть писал(а):
Работаете с железом, уже хоть что-то. Как вы определяете срабатывание кнопки? Пользуетесь отладчиком?

Вывод на ЖКИ + меряю тестером или просто замыкаю проводком на землю


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 16:54:18 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
phanis писал(а):
Как вариант попробовать считывать весь регистр в переменную, и уже после работать с этой переменной накладывая маски.
еще можно посмотреть промежуточные файлы компилятора на ассемблере.


Это как,в байт скопировать состояния всех пинов(битов) порта В,а потом сравнивать? Вы думаете ошибка может быть в условии (PINB&0b00000010)==0),так как некоторые биты могут иметь единицы.Я правильно понимаю?Можно хоть малейший пример,а то башка совсем не варит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 16:56:39 
Собутыльник Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 47
Зарегистрирован: Пн апр 06, 2009 19:33:29
Сообщений: 2512
Откуда: Молдова, Кишинев
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
На мой взгляд с кодом все ок
Я бы на вашем месте убрал все из функций обработки нажатия и поставил бы туда, скажем, функцию зажигания светодиодов, которые вы повесите на порты
Так вы увидите не работают ли ваши условия, или с функциями обработки что-то не так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 16:59:54 
Собутыльник Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 47
Зарегистрирован: Пн апр 06, 2009 19:33:29
Сообщений: 2512
Откуда: Молдова, Кишинев
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Babulesnik писал(а):
phanis писал(а):
Это как,в байт скопировать состояния всех пинов(битов) порта В,а потом сравнивать? Вы думаете ошибка может быть в условии (PINB&0b00000010)==0),так как некоторые биты могут иметь единицы.Я правильно понимаю?Можно хоть малейший пример,а то башка совсем не варит.


Ну если даже некоторые биты и будут в единицах это никак не должно повлиять на результат. Смысла копировать в переменную особого и нет, разве что для того чтоб в пределах одной итерации не менялось состояние... Но хз
У вас кнопки настоящие или проводки?) Внутренние подтягивающие резисторы включены?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 17:26:43 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
BCluster писал(а):
Babulesnik писал(а):


Ну если даже некоторые биты и будут в единицах это никак не должно повлиять на результат. Смысла копировать в переменную особого и нет, разве что для того чтоб в пределах одной итерации не менялось состояние... Но хз
У вас кнопки настоящие или проводки?) Внутренние подтягивающие резисторы включены?


Кнопки настоящие:)) Подтягивающие,только внутренние PORTB = 0b00001111; Внешние не использую.Мне очень кажется,что проблема в железе.Но что может быть не так,если тупо замыкаю пины на землю?(( Может есть смысл подключить внешние подтягивающие резисторы?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 17:40:17 
Собутыльник Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 47
Зарегистрирован: Пн апр 06, 2009 19:33:29
Сообщений: 2512
Откуда: Молдова, Кишинев
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
обычно смысла во внешних подтяжках нет
А вот тут у вас ошибки нет?
Babulesnik писал(а):
if(balance>=price)balance=-price;


Не так должно быть случайно?)
Код:
 if(balance>=price)balance-=price;


Вы хотите от balance отнять price или присвоить balance значение price с минусом?) подозреваю что первое. Возможно поэтому вам кажется что неправильно работает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 18:07:17 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
Спасибо,здесь ошибка,но к сожалению воз и ныне там.Эта опечатка из-за того,что я перелопачивал тесятки раз свой код.Вообщим я поправил на код ниже:
Код:
      // Button Start
        if((PINB&0b00000100)==0)     
        {
         if(StatusBtn2)
         {
              balance--;
           StatusBtn2 = false ;
         }
        }
      else StatusBtn2 = true;

Ситуация интересная.Если зажимаю кнопку ничего не декрементируется,но самое интересное,если ставлю перемычку на "+" идет уменьшение баланса.Что за черти?(((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 18:09:17 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
Забыл сказать при старте вместо нуля сразу высвечивает -1


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 18:53:42 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
Что-бы избежать путаниц и непоняток привожу весть код:
Код:

#include <stdlib.h>
#include <avr/io.h>
#include <avr/delay.h>
#include <stdbool.h>
#include "hd44780.h"


int main(void)
{
   char first_line [16] = {0xA0,0x61,0xBB,0x61,0xBD,0x63,0x3A,' ',' ',' ',' ',' ',0xB4,0x70,0xBD,'.'}; // first string
   char second_line[16] = {0xA8,0x61,0x70,0xBF,0xB8,0xC7,0x3A,' ',' ',' ',' ',' ',0xB4,0x70,0xBD,'.'}; // second string   
   
   bool StatusBtn1 = true;
   bool StatusBtn2 = true;

    int  balance = 0 ;
   int  price   = 3 ;     
   char buffer   [3];
   
    lcd_init();
   lcd_clrscr();

   lcd_puts(first_line);
   lcd_gotoXY(0,1);
   lcd_puts(second_line);

   DDRB  = 0b00001000;
   PORTB = 0b00001111;
   
    while(1)
    {
        // Show balance on LCD
      itoa(balance, buffer, 10);
      lcd_gotoXY(8,0);
      lcd_puts(buffer);
      
        // Show price on LCD
        itoa(price, buffer, 10);
      lcd_gotoXY(8,1);
      lcd_puts(buffer);
       
        // Bill Acceptor
      if((PINB&0b00000010)==0)
      {
         if(StatusBtn1)
         {
             balance++;
           StatusBtn1 = false ;
         }
      }
      else StatusBtn1 = true;   


      // Button Start
        if((PINB&0b00000100)==0)     
        {
         if(StatusBtn2)
         {
              balance--;
           StatusBtn2 = false ;
         }
        }
      else StatusBtn2 = true;

    }
   return 0;

}


P.S Перед этим я сократил(работа с ЖКИ) свой код,дабы легко читалось и понималось.В итоге стараешься как лучше,выходит как всегда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 21:13:19 
Собутыльник Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 47
Зарегистрирован: Пн апр 06, 2009 19:33:29
Сообщений: 2512
Откуда: Молдова, Кишинев
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А ты тестером померяй что на входах творится то, там куда кнопки подключены, при нажатых и при не нажатых.
Плюс к тому, судя по твоему коду, если меня пьяный разум не подводит, при ЗАЖАТИИ кнопки баланс должн 1 раз уменьшится до следующего нажатия.

А от таких конструкций я вообще не сильно в восторге:
Код:
if((PINB&0b00000010)==0)


По уму сделать дефайны
Код:
#define Button1         0x02
#define Button2         0x04

if (!(PINB&Button))
{
///
}




Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Пт июл 13, 2012 22:53:29 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
На входах все четко,земля присутствует) Кнопки срабатывают только в одном положении - при нажатии идет замыкание контактов на землю.НЗ на землю,вроде так.В том то вся и путаница,не важно что в моем устройстве подключено на вход.Важно,что идет обычное соеденение с землей,н при этом,порт 1(PB1)работает нормально(подключен купюрник в протоколе "пульс"),а гребаная кнопка(PB2),при тех же условиях и одинаковом коде не работает,вернеее работает только не на минусе"-",а на "+".Как такое может быть,при одинаковом подключении и при одинаковом коде????????? Меня уже просто начинает клинить!!!Хоть и знаю,что смердячий пес зарыт недалеко,но с МК я поздоровался недавно и тонкостей работы видеть не могу.Ребята,помогите найти ответ...Очень прошу...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Сб июл 14, 2012 09:19:05 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 38
Рейтинг сообщений: 305
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2255
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Будьте добры весь проект. Ну или хотя бы hex c указанием ног для дисплея.

P.S. Вы на дребезг-то совсем внимание не обращаете?

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Сб июл 14, 2012 12:01:42 
Первый раз сказал Мяу!

Зарегистрирован: Вт мар 06, 2012 19:59:00
Сообщений: 37
Рейтинг сообщения: 0
edm2007 писал(а):
Будьте добры весь проект. Ну или хотя бы hex c указанием ног для дисплея.

P.S. Вы на дребезг-то совсем внимание не обращаете?


Дисплей подключен на порт PD2-PD7.На дисплей все четко выводится,он работает нормально.Также,работает PB1(купюрник) и PB3 выход на будущее реле,пока там просто горит светодиод.А долбаный PB2,кнопка,которая просто при нажатии замыкает на землю,не пашет.Причем я уже все перепробовал,отключал кнопку,переносил на другой порт все одно и тоже.Дребезг контактов,на данном этапе,меня совсем не интересует.Сейчас мозгопарка совсем в другом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Странная работа с кнопками на mega8
СообщениеДобавлено: Сб июл 14, 2012 12:51:30 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 38
Рейтинг сообщений: 305
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2255
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Потому и просил проект, чтобы нормально в железе посмотреть что к чему. Пусть это будет элементарный счетчик (если проект секретный), но именно такой, какой у Вас не работает. Ну не писать же мне с нуля (при чем я уверен, что в таком случае все нормально работать будет).

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


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

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


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

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


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

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


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