petrd, Что все равно не так при нажатие на кнопку несколько раз счетчик увеличивается и в какой то момент в шапке появляються ироглифы и зависает.Пробывал сразных пультов Philips,Samsung,LG более менее себя показал.
[Ответ]
Юрий20 19:06 02.10.2010
petrd приветик! я ту-та новенький. можно вопросик?
[Ответ]
Юрий20 19:18 02.10.2010
petrd, я возможно ухожу от темы ссори подскажешь может по пик 16ф628а я немного делетант. надо сделать так чтобы при нажатии на кнопочку на одном из портов появился высокий уровень и при нажатии на этуже кнопочку переходил в низкий уровень. вопррос глупый но может поможете.
[Ответ]
Здравствуйте, Петр.
Вот и я на старости лет решил Си для ПИКов заняться. В asm'е потихоньку пишу, раньше для связи МК с ПК использовал RS-232, но в последнее время вижу что пора переходить на USB. Решил заняться MikroC, так что принимайте в состав учеников.
[Ответ]
Electrik84 22:40 02.10.2010
Сообщение от Юрий20:
пик 16ф628а. надо сделать так чтобы при нажатии на кнопочку на одном из портов появился высокий уровень и при нажатии на этуже кнопочку переходил в низкий уровень.
Вы бы потрудились почитать первые две-три страницы, там это всё есть, расписано и разжевано, приложите хоть капельку своего труда.
[Ответ]
petrd 09:18 03.10.2010
Сообщение от Азат:
Что все равно не так при нажатие на кнопку несколько раз счетчик увеличивается и в какой то момент в шапке появляються ироглифы и зависает.Пробывал сразных пультов Philips,Samsung,LG более менее себя показал.
Не знаю, почему у Вас так, сейчас проверить не могу, железа под рукой нет. А у Вас ПДУ точно с RC5?
to Юрий20
Смотрите посты №42 и №45 в них есть то, что Вы хотите.
to Electrik84
Сообщение от :
Вот и я на старости лет решил Си для ПИКов заняться. В asm'е потихоньку пишу, раньше для связи МК с ПК использовал RS-232, но в последнее время вижу что пора переходить на USB. Решил заняться MikroC, так что принимайте в состав учеников.
Всегда рады. Относительно USB - в MikroC реализована библиотека только HID устройств, позиция разработчиков такова - HID не требует дополнительных драйверов, а сделать можно тоже, что и с CDC. К тому же под HID они сделали терминал.
А зачем покупать, Вам 2К кода на первое время мало?
[Ответ]
petrd 15:25 04.10.2010
Сообщение от Азат: petrd, Что все равно не так при нажатие на кнопку несколько раз счетчик увеличивается и в какой то момент в шапке появляються ироглифы и зависает.Пробывал сразных пультов Philips,Samsung,LG более менее себя показал.
В архиве hex файл, который у меня работает на PIC16F628A (код также проверял на PIC16F887). Прошейте этим файлом.
Изображения
Сообщение от VRTP:
Собственно вот,мега 8.Хочеться понять как происходит контроль напряжения.
Да вроде ничего особенного не видно.
ADC2 - измерение напряжения ОС через развязку, этот же сигнал идет на компаратор AIN1;
AIN0 - опорное напряжение для компаратора.
AIN1 - вход компаратора, видимо какая-то пороговая защита.
[Ответ]
VRTP 18:09 12.10.2010
Вот не могу понять как это работает.Можно как то приблизиться к этому на 18ой серии?
[Ответ]
petrd 18:42 12.10.2010
Сообщение от VRTP:
Вот не могу понять как это работает.Можно как то приблизиться к этому на 18ой серии?
А почему нет? Только как это работает по одной схеме, тем более по ее куску, тяжело сказать. Оно же все увязано, вон и ШИМ-контроллер виден, а внутри меги видимо что-то типа ПИД алгоритма лежит.
[Ответ]
VRTP 19:20 12.10.2010
Куда скинуть всю схему?Просто оная в ДИП Трассе.Могу откоментить.
[Ответ]
Butik 22:05 19.10.2010
Доброго времени суток Господа! Я тут новичок пока.. Но смотрю что тут собрались истинные любители и знатоки микроконтроллеров..
Я с микроконтроллерами знаком уже давненько- но в основном работал на ассемблере..
А тут вот возникла необходимость перевести на микроси некоторые программы...
И вот столкнулся с трудностями..
Есть некоторая схема в которой простой PIC12F629 работает в роли как бы датчика- при изменении уровня на одном из входов он должен на других формировать импульсы(или последовательность импульсов) но не сразу а с некоторой задержкой определяемой временем переполнения и прерывания от таймера TMR0- при чем это время может меняться.При этом изменение уровня на входе происходит через время меньшее чем врнемя переполнения таймера и предделителя(ну скажем это импульсный сигнал..). И вот столкнулся с проблемой- mikroC не хочет принимать обработку двух прерываний- короче.. вот фрагмент программы- может кто подскажет в чем тут криминал???
При этом при компиляции ошибки нет.. а вот в симуляторе и протеусе ничего не работает...
Сообщение от Butik:
Я с микроконтроллерами знаком уже давненько- но в основном работал на ассемблере..
А тут вот возникла необходимость перевести на микроси некоторые программы...
И вот столкнулся с трудностями..
Есть некоторая схема в которой простой PIC12F629 работает в роли как бы датчика- при изменении уровня на одном из входов он должен на других формировать импульсы(или последовательность импульсов) но не сразу а с некоторой задержкой определяемой временем переполнения и прерывания от таймера TMR0- при чем это время может меняться.При этом изменение уровня на входе происходит через время меньшее чем врнемя переполнения таймера и предделителя(ну скажем это импульсный сигнал..). И вот столкнулся с проблемой- mikroC не хочет принимать обработку двух прерываний- короче.. вот фрагмент программы- может кто подскажет в чем тут криминал???
При этом при компиляции ошибки нет.. а вот в симуляторе и протеусе ничего не работает...
Давно? А ошибки детские.
1. Чтобы работало прерывание по изменению уровня на выводах надо в прерывании сначала прочитать порт, чтобы убрать несоответствие, а потом сбросить флаг GPIF, об этом в каждом DS написано. К тому же это прерывание Microchip не рекомендует использовать для всяких опросов, лучшее применение ему - выход из SLEEP.
2. В прерывании используете задержку 500 мкс, от этого теряется весь смысл прерываний, в контроллере для этого таймеры есть.
3. Зачем включать PEIE, если прерывание от периферийных модулей не используется? Это так для информации, в Вашем случае это просто лишнее.
4. Зачем в главном цикле постоянно производить инициализацию? Сделайте ее один раз перед циклом, а цикл пусть пустой крутится.
5. В битах конфигурации MCLR отключен?
[Ответ]
Butik 21:58 20.10.2010
Уважаемый коллега!На счет детских ошибок- всякое в жизни может быть.. и если Вы с контроллерами имеете дело скажем каждый день по 24 часа на протяжении там скажем 2-3 месяцев.. то у Вас могут быть свои ошибки.. А если кто либо имеет необходимость с конроллерами раз в месяц или в два на протяжении 10 лет то там могут быть свои ошибки..и не надо придираться к словам типа давненько и т.д. На то мы тут и собрались чтоб помогать друг другу исправлять ошибки... Ну да ладно дело не в этом...проехали...
Теперь конкретно по другим пунктам обвинения-
ПУНКТ 1.-Я как раз и спрашиваю.. как мне написать чтоб прерывание работало...
На счет рекомендации Microchip -Вот фрагмент программы на асемблере- работает без всяких sleep- при чем работает железобетонно!!!! проверено и в симуляторе и в железе вопреки всем рекомендациям!
list p=12f629 ; list directive to define processor
#include <p12f629.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
;***** VARIABLE DEFINITIONS
w_temp EQU 0x20 ; variable used for context saving
status_temp EQU 0x21 ; variable used for context saving
C1 EQU 0x22
C2 EQU 0x23
;************************************************* *********************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program
;************************************************* *********************
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
clrwdt
call IMP
bcf INTCON,GPIF
clrwdt
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
;************************************************* **********************
main
;начальная инициализация
movf GPIO,f
clrwdt
movlw 0x07
movwf CMCON ;выводы GPIO - цифровые
bsf STATUS,RP0 ;выбрать банк1
movlw b'00000001';настройка вывода GPIO на ввод,остальные - на вывод
movwf TRISIO
movlw b'10000110'
movwf OPTION_REG
clrf INTCON
clrf WPU
movlw b'00000001'
movwf IOCB ;Разрешение прерываний по изменению уровня на GPIO0
bcf STATUS,RP0 ;выбрать банк0
movlw b'00000000'
movwf GPIO
movlw b'00001000'
movwf INTCON
bsf INTCON,GIE ;глобальное разрешение прерываний
clrwdt
clrf TMR0
nop
L1 nop
clrwdt
nop
goto L1
;------------------------------------------------------------