roboforum.ru

Технический форум по робототехнике.

 

Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Сообщение flyroman » 10 мар 2011, 16:42

Все! Не могу! Никак не могу присабачить к микроконтроллеру пульт... :cry: :cry: :cry:

Подскажите , пожлуйста, что я делаю не так...а то кондиционером (самопальным) придется управлять вручную, :shock: :cry: , а хочется с дивана....

Что имеем:
- Atmega8, внутренний RC генератор 8МГц;
- на RESET подтягивающий резистор + конденсатор (104) на массу;
- TFMS5360 - инфракрасный приемник 36 кГц;
- наряжение питание схемы 5 Вольт (стабилизатор 7805);
- схема приемника собрана по предлагаемой схеме в BascomAVR для RC5 и тютелька в тютельку такая же в даташите на приемник:
tsop.JPG
;

- выход приемника подключен на PD2 (INT0) микроконтролера;
- светодиоды на PC4, PB7...
----------------------------------------------------
Код номер 1
По этому коду срабатывает прерывание INT0. Нажимаю на кнопку пульта, светодиод горит, ну естественно на любую кнопку.
:
Код: Выделить всёРазвернуть
$regfile = "m8def.dat"
$crystal = 8000000

Config Portc = Output

Dim Kod As Bit

On Int0 Rc53
Enable Int0
Config Int0 = Falling
Enable Interrupts


Do
If Kod = 1 Then
  Disable Int0
  Portc.4 = 1
  Waitms 100
  Portc.4 = 0
  Kod = 0
Enable Int0
End If
Loop

Rc53:
Kod = 1
Return



Код номер 2
На этот код светодиод PB7 иногда загорается...очень-очень редко, и то когда одновременно двумя пультами сигнал подаешь(на обоих пультах кнопки жму...)
Код: Выделить всёРазвернуть
$regfile = "m8def.dat"
$crystal = 8000000

Config Rc5 = Portd.2
Config Portb = Output

Enable Interrupts

Dim Address As Byte , Command As Byte

Do

Getrc5(address , Command)

If Address <> 255 Then
    Portb.7 = 1
    Waitms 100
    Portb.7 = 0   
End If

Loop
End


Замерял напряжение (мультиметром) на выходе приемника....так вот:\
При нажатии на кнопку пульта напряжение падает с 4.98....до всего-то 4.45...при одном пульте, а при другом до 3.8....
Проверял и подключенный к МК и отключенный.....

Что не так? Что со мной не так? :sorry:
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…
Аватара пользователя
flyroman
 
Сообщения: 1266
Зарегистрирован: 12 янв 2009, 21:39
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич

Re: Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Сообщение dccharacter » 10 мар 2011, 17:08

У тебя нет осциллографа....

Купи за 100 долларов, не пожалеешь. Две недели в него пялиться будешь.

Заставь светодиод моргать 1 раз в секунду. И смотри как он моргает. Если чаще или реже - с прескейлерами начудил и соответственно ничего работать не будет.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4880
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Сообщение flyroman » 10 мар 2011, 17:31

а для INTа спад напряжение с 4.98 до 4.4 ...это факт прерывания? или ему ниже надо?
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…
Аватара пользователя
flyroman
 
Сообщения: 1266
Зарегистрирован: 12 янв 2009, 21:39
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич

Re: Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Сообщение dccharacter » 10 мар 2011, 17:35

flyroman писал(а):а для INTа спад напряжение с 4.98 до 4.4 ...это факт прерывания? или ему ниже надо?

Берешь даташит на атмегу8 и смотришь :-) потом нам рассказываешь :-)

Добавлено спустя 1 минуту 24 секунды:
И еще. Представь себе пачку импульсов. Какое напряжение тебе показывает вольтметр?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4880
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Сообщение flyroman » 10 мар 2011, 17:47

тогда еще вопрос: на внутреннем RC генераторе это работает?
или обязательно нужен внешний?
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…
Аватара пользователя
flyroman
 
Сообщения: 1266
Зарегистрирован: 12 янв 2009, 21:39
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич

Re: Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Сообщение dccharacter » 10 мар 2011, 17:48

flyroman писал(а):тогда еще вопрос: на внутреннем RC генераторе это работает?
или обязательно нужен внешний?

я думаю точности внутреннего осциллятора вполне хватит.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4880
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Снова RC5 - Bascom - Atmega8. Не могу запустить аппарат.

Сообщение flyroman » 11 мар 2011, 17:45

Вот, проблему решил, вот таким кодом. По ходу пульты у меня нисколько не RC-5... :no: .... :oops: Один 1990 года...там фиг знает протокол какой.....а на пульте от DVD шника китайского хз...тож какой протокол...но по этому коду, работает на ура...тьфу, тьфу, тьфу... :beer:

http://bascomavr.3bb.ru/viewtopic.php?id=93#p525
Спасибо, VladI+ и ссылке http://www.radiokot.ru/articles/14/.
Перевёл на БАСКОМ, всё работает.

Фрагмент кода для работы с пультом ДУ протокол NEC.


Код: Выделить всёРазвернуть
'*******************************************************************************
'* Filename    : IR NEC by http://www.sbprojects.com/knowledge/ir/ir.htm
'* Revision    : 1.0
'* Controller  : ATMEGA8
'* Compiler    : BASCOM-AVR 1.11.8.3 DEMO
'* Author      : Rubashka Vasiliy , Ukraine , 2007
'* WWW         : http://ledeffects.net
'* Mail        : info@ledeffects.net
'* Thank you   : Aheir, aheir@radiokot.ru
'*******************************************************************************
$regfile = "m8def.dat"
$crystal = 8000000                                          'внутренний генератор
$lib "lcd4.lbx"

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2
Config Pind.2 = Input
Config Portc.2 = Output
Config Timer0 = Timer , Prescale = 256                      '8000000/256=31250 Hz
Config Int0 = Falling                                       'Прерывание по спаду
Stop Timer0                                                 'останавливаем таймер
Enable Timer0                                               'разрешаем работу таймера0
Enable Int0                                                 'разрешаем работу прерывания0
Enable Interrupts                                           'Разрешаем прерывания

On Timer0 Tikers                                            'работа по таймеру
On Int0 Infrared                                            'работа по прерыванию

Dim Tik As Word                                             'счётчик тиков таймера
Dim Byt As Byte                                             'счётчик принятых бит
Dim Repeat_flag As Bit                                      'флаг повтора
Dim Start_flag As Bit                                       'флаг стартового условия
Dim Address As Byte                                         'байт адреса
Dim Command As Byte                                         'байт команды
Dim Address_1 As Byte                                       'прямой байт адреса
Dim Command_1 As Byte                                       'прямой байт команды
Dim Address_0 As Byte                                       'инверсный байт адреса
Dim Command_0 As Byte                                       'инверсный байт команды
Dim Summa As Word


'*******************************************************************************

Do                                                          'Основной цикл

Cls                                                         'Очистить ЖКИ
Cursor Off                                                  'Выключить курсор
Lcd Address ; " " ; Command                                 'Вывести на ЖКИ АДРЕС и КОММАНДУ
If Command = 8 Then Portc.2 = 1                             'Если нажата клавиша "P+" - включить светодиод
If Command = 240 Then Portc.2 = 0                           'Если нажата клавиша "P-" - выключить светодиод
Waitms 10                                                   'Задержка 10 мс
Loop
End                                                         'Конец основного цикла

'*******************************************************************************

Tikers:                                                     'работа по таймеру

Timer0 = 253                                               '31250/(256-253)=10416,66 Hz (96 мкс)
                                                             '254 - TV SAMSUNG, 253 - DVD SAMSUNG и другие NEC
Incr Tik
If Tik >= 1200 Then                                        'если насчитали 1200 тиков, сбросили всё в исходное состояние
Tik = 0
Repeat_flag = 0
Start_flag = 0
Address_1 = 0
Command_1 = 0
Address_0 = 0
Command_0 = 0
Command = 0
Address = 0
Stop Timer0                                                'останавливаем таймер
End If

  Return
'*******************************************************************************

Infrared:                                                  'работа по прерыванию

  Start Timer0                                              'запускаем таймер

  If Tik >= 139 And Tik < 150 Then                          'если случилось от 139 до 150 тиков - "СТАРТ"
  Address = 1
  Repeat_flag = 0
  Start_flag = 1
  Address_1 = 0
  Command_1 = 0
  Address_0 = 0
  Command_0 = 0
  End If

  If Tik >= 116 And Tik < 139 Then                          'если случилось от 116 до 138 тиков - "ПОВТОР"
  Address = 2
  Repeat_flag = 1
  Start_flag = 0
  End If

  If Tik >= 22 And Tik < 116 And Start_flag = 1 Then        'если случилось от 22 до 115 тиков - приняли "1"
   Incr Byt

    If Byt < 9 Then
     Shift Address_1 , Left
     Address_1 = Address_1 + 1
    End If

    If Byt >= 9 And Byt < 17 Then
     Shift Address_0 , Left
     Address_0 = Address_0 + 1
    End If

    If Byt >= 17 And Byt < 25 Then
     Shift Command_1 , Left
     Command_1 = Command_1 + 1
    End If

    If Byt >= 25 Then
     Shift Command_0 , Left
     Command_0 = Command_0 + 1
    End If
  End If

  If Tik >= 10 And Tik < 22 And Start_flag = 1 Then         'если случилось от 10 до 21 тика - приняли "0"
   Incr Byt

    If Byt < 9 Then
     Shift Address_1 , Left
    End If

    If Byt >= 9 And Byt < 17 Then
     Shift Address_0 , Left
    End If

    If Byt >= 17 And Byt < 25 Then
     Shift Command_1 , Left
    End If

    If Byt >= 25 Then
     Shift Command_0 , Left
    End If
  End If

Tik = 0

  If Byt = 32 Then                                          'если приняли 4 байта, проверяем правильность приёма команды
                                                             'если адрес или команда 16-ричные, проверка не проходит, поэтому закомментировано
    'Summa = Address_0 + Address_1
    'If Summa = 255 Then
    Address = Address_1
    'Else
    'Address = 0
    'End If

    'Summa = Command_0 + Command_1
    'If Summa = 255 Then
    Command = Command_1
    'Else
    'Command = 0
    'End If
  Byt = 0
  Repeat_flag = 0
  Start_flag = 0
  Stop Timer0                                               'останавливаем таймер
  End If

Return


Добавлено спустя 21 минуту 7 секунд:
Для тех кто думает, что что-то не работает с RC-5 вот этот сайт с кучей разных протоколов....

http://www.sbprojects.com/knowledge/ir/ir.htm

мне повезло, у меня пульт оказался с протоколом NEC .....и нашелся код на BASCOM....
А так если не найдете, смотрите протоколы на этом сайте....или покупайте пульт..RC-5 и не парьтесь...ИМХО
«Это невозможно» — сказала Причина. «Это безрассудно!» — заметил Опыт. «Это бесполезно!» — отрезала Гордость.
«Попробуй» — шепнула Мечта…
Аватара пользователя
flyroman
 
Сообщения: 1266
Зарегистрирован: 12 янв 2009, 21:39
Откуда: Чебоксары, Чувашская Республика
Skype: roman.buhalov
прог. языки: Basic, VisualBasic,Pascal, Delphi, ASM
ФИО: Роман Сергеевич


Вернуться в Микроконтроллеры

Кто сейчас на конференции

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

Mail.ru counter