Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
PIC контроллеры. Программаторы и первый проект на PIC |
Программирование микроконтролеров,ремонт аудио/видео/бытовой техники,полезные устройства для дома,телефония, обсуждение статей журнала Радио |
|
Опции темы |
25.11.2010, 06:51 | #691 |
Форумец
|
|
28.11.2010, 19:57 | #695 |
Форумец
Сообщений: 36
Регистрация: 19.10.2010
Возраст: 57
Не в сети |
И вот все таки с работой компаратора (вернее с программированием компаратора в си) непонятно
вот фрагмент кода который работает... Код:
unsigned short old_GPIO; void init() { CMCON = 0x07; TRISIO = 0x28; OPTION_REG = 0b11000101; INTCON.GIE = 0; } void main() { init() ; do { old_GPIO = GPIO; if(old_GPIO.F5 == 1) {TRISIO =0x28; old_GPIO.F1 = 1; old_GPIO.F4 = 0; GPIO = old_GPIO;} if(old_GPIO.F5 == 0) { CMCON = 0x04; VRCON = 0xA3; TRISIO = 0x2A; Delay_us(10); if(CMCON.F6==1){ old_GPIO.F4 =1; GPIO = old_GPIO;} } } while(1); } Код:
unsigned short old_GPIO; void init() { CMCON = 0x07; TRISIO = 0x28; OPTION_REG = 0b11000101; INTCON.GIE = 0; } void main() { init() ; do { old_GPIO = GPIO; if(old_GPIO.F5 == 1) {TRISIO =0x28; old_GPIO.F1 = 1; old_GPIO.F4 = 0; GPIO = old_GPIO;} if(old_GPIO.F5 == 0) { CMCON = 0x04; VRCON = 0xA3; TRISIO = 0x2A; Delay_us(10); while(CMCON.F6==1){ old_GPIO.F4 =1; GPIO = old_GPIO;} } } while(1); } Последний раз редактировалось Butik; 28.11.2010 в 20:47. |
01.12.2010, 08:57 | #700 |
Форумец
|
Да не пропал я. Железо и исходники от этого hex временно недоступны (отпуск), поэтому точного ответа дать не могу, только виртуально. А что значит сбоит?
|
01.12.2010, 10:36 | #701 | |
Форумец
|
Цитата:
Код:
.... if(old_GPIO.F5 == 0) { CMCON = 0x04; VRCON = 0xA3; TRISIO = 0x2A; Delay_us(10); while(CMCON.F6==1) { CMCON.F4 = 1; old_GPIO.F4 =1; GPIO = old_GPIO; } } .... |
|
01.12.2010, 12:00 | #702 |
Форумец
Сообщений: 82
Регистрация: 13.09.2010
Не в сети |
я же писал помните, то что через пять раз нажатия на пульте начинают на экране разные символы выводить, а потом зависает.А ваша прошивка работает идеально.Хорошего отпуска)).
Последний раз редактировалось Азат; 01.12.2010 в 17:05. |
01.12.2010, 23:02 | #703 | ||
Форумец
Сообщений: 36
Регистрация: 19.10.2010
Возраст: 57
Не в сети |
Цитата:
Но тогда непонятно почему работает так Код:
CMCON = 0x04; VRCON = 0xA3; TRISIO = 0x2A; Delay_us(10); if(CMCON.F6==1){ ....................... } Цитата:
|
||
02.12.2010, 20:54 | #705 | |
Форумец
|
Цитата:
|
|
03.12.2010, 08:32 | #706 |
Форумец
Сообщений: 82
Регистрация: 13.09.2010
Не в сети |
Спасибо.
Программная последовательность: 1) Конфигурируем RA4 как выход с уровнем лог. "0" для разрядки конденсатора. PORTA=16 2) Конфигурируем RA4 как один из входов компаратора, другой вывод компаратора подключается к внутреннему источнику опорного напряжения. 3) Запускаем таймер и измеряем время до срабатывания компаратора. Давайте попробуем разобрать код сам не справлюсь? Каким номеналом поставить резисторы и конденсатор(нужен ли он)? И по схеме получается если при одновременном нажатие будет срабатывать первая кнопка? Последний раз редактировалось Азат; 03.12.2010 в 10:01. |
03.12.2010, 11:35 | #707 |
Форумец
|
Когда написано:
Код:
.... CMCON = 0x04; ...... while(CMCON.F6 == 1) { old_GPIO.F4 =1; GPIO = old_GPIO; } А когда используется if, то никакого вечного цикла быть не может. Как-то так. |
04.12.2010, 11:12 | #708 |
Форумец
|
А зачем вообще такое надо? Что ног у контроллера мало? Такой вариант вообще от безысходности, ибо он нестабилен по температуре, надо подбирать резисторы и конденсаторы, подбирать значения таймера. Сделать-то можно, но оно того не стоит.
|
04.12.2010, 11:18 | #709 |
бывший dr.ON
Сообщений: 205
Регистрация: 16.06.2010
Возраст: 41
Не в сети |
Ктонибудь знает решение данной проблемы?
ANSI C. Препроцессор? Заполнить const массив элементами другого const массива... |
04.12.2010, 13:31 | #710 | |
Форумец
Сообщений: 82
Регистрация: 13.09.2010
Не в сети |
Петр хочу попробывать сделать радиоуправление.Данный пример манчестера должен передать слово Микроэлектроника.(Т.е задумка в итоге сделать радиоуправление двумя кноками (При чем чтоб поддерживалось одновременное нажатие)).Правильно ли я делаю.
Цитата:
Последний раз редактировалось Азат; 04.12.2010 в 14:39. |
|
04.12.2010, 21:21 | #711 | |
Форумец
|
Цитата:
2. На схеме передатчик RT4, а приемник RR4 у Вас есть? Эта сладкая парочка работает с АМ, что не есть хорошо. Пробовал эту парочку, работает, но лучше с ЧМ. 3. В Вашей схеме светодиод на RA4 работать не будет - там открытый коллектор. |
|
05.12.2010, 07:22 | #712 |
Форумец
Сообщений: 82
Регистрация: 13.09.2010
Не в сети |
petrd, А rc5 у меня не совсем правильно работает выше есть проект пост #695.TB045 Там примеры все на ассеблере.Если бы я это понимал.Прочитал куча литературы про манчестер голова пухнет.Приемник и передатчик заказал но еще не пришли rt5 и rr10.Пообещал ребенку на новый год управляемую машину сообрать.Вот пытаюсь.Такое исполнение схем правильное?Если не затруднит давайте разберем этот проект вместе досканально от теории до кода думаю многих это заинтересует.
Последний раз редактировалось Азат; 06.12.2010 в 15:32. |
06.12.2010, 16:58 | #713 |
Форумец
Сообщений: 82
Регистрация: 13.09.2010
Не в сети |
petrd, Петр т.е к примеру если я повешу на передатчик RB0 ик приемник?щелкну на пульт.И через шим отправлю на приемник.Где на приемники прошита Philips RC5 он должен выдать что эта за команда.Правильно?
Чтоб передать шим нужно выставить pwm_init(37000) ? pwm_change_duty(64)? Последний раз редактировалось Азат; 07.12.2010 в 16:41. |
08.12.2010, 10:16 | #714 | |
Форумец
|
Цитата:
|
|
11.12.2010, 08:00 | #718 |
Форумец
Сообщений: 82
Регистрация: 13.09.2010
Не в сети |
petrd, Спасибо.
1. По проекту RC5.Вопрос такой что не так с Toggle т.е при нажатие на кнопку "1" он ставит "T" (т.е включен),еще раз при нажатие "1" убирает "T" (т.е выключен).При таком раскладе все правильно. При нажатие на кнопку "1" он ставит "T" (т.е включен), при нажатие "2" убирает "T" (т.е выключен),при нажатие на кнопку "1" он ставит "T" (т.е включен),а по идеи должен выключить. |
11.12.2010, 08:21 | #719 | |
Форумец
|
Цитата:
|
|
11.12.2010, 12:30 | #720 |
Форумец
Сообщений: 82
Регистрация: 13.09.2010
Не в сети |
petrd,
1.А тогда как отследить если я хочу включить и выключить светодиод т.е при поступление команды 1 вкл еще раз выключить. Если просто без toggle то при удерживание кнопки он будет моргать.А если условие что toggle 1 вкл и 0 выкл(то проблема при нажатие других кнопок приходиться несколь раз нажимать на кнопку 1). 2.После компилирование прошивки на MikroC Pro 3.8 ошибка осталась. Последний раз редактировалось Азат; 15.12.2010 в 11:56. |