Easyelectronics.ru

Электроника для всех
Текущее время: 15 дек 2019, 08:42

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 01 дек 2010, 22:25 
Заглядывает иногда

Зарегистрирован: 25 окт 2010, 23:12
Сообщения: 72
Откуда: Магнитогорск
Решил всё же создать новую тему именно по написанию программ и подпрограмм. У меня такой вопрос к знатокам: это, я уверен, почти все проходили, у кого заложен вывод инфы на монитор: если плата разводится как удобно ( т.е. номера битов регистра не соответствуют и не по проядку подключены к монитору), то как закладывать символы в программу в раздел "таблица"? в соответствии с разводкой и потом программно расставлять биты символа по битам регистра? задача усложнена 4-битным режимом вывода, т.е. нужна еще и сдвижка. Просто расскажите, кто как решал этот момент. ( я уверен не самый трудный, я еще буду раскуривать энкодер, I2C и обработку IR-сигнала с пульта, итого 6-канальный усилок домой).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 02 дек 2010, 00:19 
Старожил

Зарегистрирован: 01 июл 2010, 15:30
Сообщения: 473
Откуда: Энгельс
Я так понял речь о ЖК индикаторе совместимом с HD44780? Типичное решение для этой задачи вируальные порты. Попросту говоря функция или несколько функций, если еще и направлением линий управлять нужно, принимающая входное значение, в котором биты упорядочены нужным образом и раскидывающая эти биты по портам ввода вывода определённым образом.
Я писал статью с подробным описанием этой задачи и вариантами ее решения.
http://easyelectronics.ru/rabota-s-portami-vvoda-vyvoda-mikrokontrollerov-na-si.html
Примеры разобраны как раз на дисплее HD44780.
Пусть не смущает, что примеры написаны для АВР, для ПИКов эти подходы также 100% применимы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 09 янв 2011, 02:10 
Заглядывает иногда

Зарегистрирован: 25 окт 2010, 23:12
Сообщения: 72
Откуда: Магнитогорск
Всем привет! Кто подскажет принципы, как подключенный ИК-приемник заставить понимать пульт. Пишу в паскале для PIC-ов. Как это решается? прерыванием или просто в основной программе как-то? и не могу понять суть процедур обработки сигнала. Растолкуйте, пожалуйста... Осцила нет пока, но точно знаю, что пульт на 33 кГц. понятно, что протокол пульта тоже неизвестен...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 09 янв 2011, 02:27 
Старожил
Аватара пользователя

Зарегистрирован: 10 апр 2010, 18:47
Сообщения: 2492
Откуда: Харьков
Prompt_ писал(а):
. понятно, что протокол пульта тоже неизвестен...

Можно ли раскодировать принятый сигнал, если не известен протокол???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 09 янв 2011, 02:45 
Заглядывает иногда

Зарегистрирован: 25 окт 2010, 23:12
Сообщения: 72
Откуда: Магнитогорск
Малость поправлю себя. Суть не в протоколе, а в том, как из принятой последовательности слепить байт, чтоб потом (я так думаю) сравнить его с таблицей понятных байтов и принять решение ( например вызать подпрограмму громкости). Подключил TSOP к звуковой -корявенько, но биты вижу, вроде как есть надежда описать их. А вот что с ними в проге делать? Алгоритм не пойму. Кстати может кто и знает - примерно 16 бит длительностью 0,044 сек. пауза меж посылок 0,035 сек.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 14 янв 2011, 09:25 
Заглядывает иногда

Зарегистрирован: 06 окт 2010, 14:57
Сообщения: 62
Откуда: ORSK
Чтобы из принятой последовательности импульсов слепить байты надо знать протокол. В каждом протоколе есть стартовый бит. Пляшешь от него. Затем через сдвиг записываешь каждый бит последовательно в 2 регистра или переменную (как там в паскале можно я не знаю). Сравниваешь с табличным значением, выполняешь команду. Всё.
Кое-что по протоколам: http://www.radiokot.ru/articles/14/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 24 янв 2011, 23:06 
Заглядывает иногда

Зарегистрирован: 25 окт 2010, 23:12
Сообщения: 72
Откуда: Магнитогорск
если пойти с другой стороны? есть осцилограмма (примерная),до1/1000 доли сек. Если зацепить TSOP на прерывание и смотреть, сколько натикал счетчик? 12 бит в посылке (13 провалов). Шифруется длительностью паузы. Стартового ничего нет. Первые 4 бита-определяют TV/DVD/VCR/ Остальные 8-нажатие кнопки. Повторов никаких. Строго повторный сигнал. Я уже понял что надо длительность паузы мерить и складывать 12-ти битный байт. Подтвердите, если я на правильном пути...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 28 янв 2011, 00:32 
Заглядывает иногда

Зарегистрирован: 25 окт 2010, 23:12
Сообщения: 72
Откуда: Магнитогорск
Ребят, кто знает, в МК 16ф874а чтобы перевести все порты в режим цифрового в/в , достаточно записи adcon1:= 0; CMCON:=0x07; или есть еще какие-то регистры , которые надо переключить? Мне нужна только цифровая коммуттация (I2C, кнопки, светодиоды, монитор)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 28 янв 2011, 23:16 
Старожил

Зарегистрирован: 17 апр 2010, 14:30
Сообщения: 444
Откуда: УКРАИНА
R_ura писал(а):
Prompt_ писал(а):
. понятно, что протокол пульта тоже неизвестен...

Можно ли раскодировать принятый сигнал, если не известен протокол???

Ловите! Вещь- http://arv.radioliga.com/content/view/219/43/ Использование пультов ДУ от бытовой техники
Запустил у себя почти сразу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 10 фев 2011, 01:47 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2011, 23:22
Сообщения: 2364
Откуда: Украина, Запорожье
вот решил попробовать написать программу для ПИКа, начал с самоучителя, установил MicroCode Studio Plus, PicBasic PRO, MPLAB, в самоучителе была схема "мигающий светодиод", я решил немного подправить, чтобы вышел "светофор"... но вот у меня под вин 7 х64 оно не хочет компилить проект... пишет, что приложение для компиляции только под вин32=( кто подскажет как решить эту проблему не переустанавливая ОС...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 10 фев 2011, 02:03 
Старожил

Зарегистрирован: 29 янв 2010, 00:34
Сообщения: 818
Откуда: Санкт-Петербург
@ DEm__2006
Все 32-разрядные приложения обычно нормально под 7-кой работают, ставятся просто в отдельный каталог. Но я не работал с "MicroCode Studio Plus, PicBasic PRO", может там есть какие-то проблемы (версия старая к примеру).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 10 фев 2011, 02:12 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2011, 23:22
Сообщения: 2364
Откуда: Украина, Запорожье
вот что мне пишет при нажатии на кнопку "компилировать"


Вложения:
Снимок.JPG
Снимок.JPG [ 117.25 Кб | Просмотров: 17510 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 02 мар 2011, 15:16 
Здравствуйте!

Зарегистрирован: 02 мар 2011, 14:46
Сообщения: 4
Kramer, а чем не устроил родной MPLAB?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 04 мар 2011, 12:55 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 09 фев 2011, 22:27
Сообщения: 63
Откуда: Киев
Kramer писал(а):
кто подскажет как решить эту проблему не переустанавливая ОС...

Попробуй поставить виртуальную машину с Windows XP x86 на свою ОС, заново установить MicroCode Studio Plus уже на виртуальную машину и скомпилировать... насколько я помню в Windows 7 по умолчанию встроена виртуальная машина Windows XP единственное, что надо уточнить что там за XP: x86 или x64...

_________________
Все, что нас не убивает, делает нас сильнее!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 15 мар 2011, 23:47 
Заглядывает иногда

Зарегистрирован: 25 окт 2010, 23:12
Сообщения: 72
Откуда: Магнитогорск
Всем привет, вот "сфотал" свою осцилу с TSOP'а, ни под один из найденных протоколов подогнать не смог, мож кто поможет?, Да , кстати, пульт от телика Томсон


Вложения:
butt1.JPG
butt1.JPG [ 28.41 Кб | Просмотров: 17105 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 27 мар 2011, 00:43 
Здравствуйте!
Аватара пользователя

Зарегистрирован: 27 мар 2011, 00:19
Сообщения: 3
Откуда: Рига
Prompt_ писал(а):
Всем привет, вот "сфотал" свою осцилу с TSOP'а, ни под один из найденных протоколов подогнать не смог, мож кто поможет?, Да , кстати, пульт от телика Томсон


Если хочется считывать кодировку на картинке то:
- определяем максимальную длительность посылки между фронтами (для задания коэфициента предделителя таймера);
- заводим сигнал с приемника на вход внешнего прерывания (например RB0);
- определяем по какому условию будет прерывание - фронт/спад;
- запускаем таймер с соответсвующим предделителем;
- пишим обработчик прерывания - по пришедшему фронту/спаду обнуляем таймер, инитим память для пакета. Следующий фронт/спад считываем таймер, обнуляем таймер, сравниваем полученный результат с заранее измеренной длительностью между двумя фронтами/спадами (на картинке видны две длительности) записываем соответствующий бит в отведенной памяти. Далее все повторяется. Для определения старт/стоп состояния надо видимо принять во внимание паузы между пакетами.
Правда для того, чтобы таймером могли пользоваться и другие процессы, я бы сделал вечно бегущий таймер, а интерваля вычислял бы вычитанием предыдущих результатов от полученных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 11 апр 2011, 17:27 
Старожил

Зарегистрирован: 08 янв 2011, 21:54
Сообщения: 231
Откуда: Ставрополь
Prompt_ писал(а):
Всем привет, вот "сфотал" свою осцилу с TSOP'а, ни под один из найденных протоколов подогнать не смог, мож кто поможет?, Да , кстати, пульт от телика Томсон

У многих пультов подобная кодировка. Вернее способ передачи данных посредством изменения длительности импульса.
1. Старт легко определить если происходит переполнение счетчика/таймера ,а на вход прерывания не поступают импульсы. Это же условие служит признаком окончания кодовой посылки. (трудности возникнут с кодами с преамбулой)
2. Измеряем длительности импульсов между двумя прерываниями и определяем , что пришло 0 или 1.
3. если произошло переполнения счетчика, значит код полностью принят - это пауза между импульсами.
Далее в проге используем коды кнопок для управления.
Для управления я бы посоветовал взять пульт системы RC5, на эту систему много примеров декодирования. А пульт в магазине стоит 100р.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 12 апр 2011, 19:02 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 25 ноя 2010, 12:21
Сообщения: 82
Откуда: СПб
Всем привет, мелкий вопрос: сколько тактов тратится на вход в прерывание PIC16 14бит? 2? 4?

_________________
Путь в электронику, обычно, начинается с удара током.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 12 апр 2011, 19:37 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
mik писал(а):
Всем привет, мелкий вопрос: сколько тактов тратится на вход в прерывание PIC16 14бит? 2? 4?
В даташите есть. Обычно 3-4 машинных цикла (цикл = 4 такта тактовой частоты), независимо от типа прерываемой команды.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 12 апр 2011, 19:54 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 25 ноя 2010, 12:21
Сообщения: 82
Откуда: СПб
Спасибо!

_________________
Путь в электронику, обычно, начинается с удара током.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 26 апр 2011, 12:49 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 25 ноя 2010, 12:21
Сообщения: 82
Откуда: СПб
Наткнулся на хороший текстовичок по командам и встреонным в MPASM макросам.

http://yusoft.kulichki.com/picfiles/opcodes.txt

_________________
Путь в электронику, обычно, начинается с удара током.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 29 апр 2011, 03:05 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 25 ноя 2010, 12:21
Сообщения: 82
Откуда: СПб
Полный спсок аппнот от MICROCHIP:

http://www.microchip.com/forums/m22601-print.aspx

_________________
Путь в электронику, обычно, начинается с удара током.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 02 май 2011, 00:47 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2011, 23:22
Сообщения: 2364
Откуда: Украина, Запорожье
вот решил продвинуть небольшое дельце дальше и не могу вкурить, что не так... прерывание по таймеру.. не пойму что в каком порядке делать надо.... написал вот что... для 16ф628а
Код:
...
unsigned short temper;
...
OPTION_REG = 0b00000101;
INTCON = 0b10100100;
...
void interrupt(tmr)
{
  if ((T0IE)&&(T0IF))
  {
    if (PORTB.B6 = 0)
    {
      temper = EEPROM_Read(0x00);
      temper = temper++;
      EEPROM_Write(0x00, temper);
      }

  }
}

протеус ругается(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 02 май 2011, 00:59 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Kramer писал(а):
вот решил продвинуть небольшое дельце дальше и не могу вкурить, что не так... прерывание по таймеру.. протеус ругается(

Ну, во-первых, в конце обработчика прерывания, до выхода из него, флаг TOIF надо сбросить, иначе прерывание после выхода опять сработает, и так без конца. В остальном разбираться в лом, да и не пользую я С, хоть и знаю немножко...
Насчет Протеуса - тоже не пользуюсь, там тоже вроде глюков хватает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Типовые решения, подпрограммы, вопросы.
СообщениеДобавлено: 02 май 2011, 03:21 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 25 ноя 2010, 12:21
Сообщения: 82
Откуда: СПб
всю правду боярин тебе написал.
(а я T0IF сбрасываю после if ((T0IE)&&(T0IF)) - чтобы в конце проверить флаг критичного ко времени прерывания и сэкономить время на восстановлении контекста, выходе из прерывания, попадания в прерывание, сохранения контекста)

_________________
Путь в электронику, обычно, начинается с удара током.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2  След.

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


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

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB