Форум РадиоКот https://radiokot.ru/forum/ |
|
Pic12F675. не мигает светодиод:) https://radiokot.ru/forum/viewtopic.php?f=58&t=146857 |
Страница 1 из 2 |
Автор: | pilot327 [ Пн июл 17, 2017 15:56:33 ] |
Заголовок сообщения: | Pic12F675. не мигает светодиод:) |
Всем привет! нашел в инете такое: http://arduinokit.ru/electronics/mic...nking-led.html заливаю в свой pic12f675 прошивку с вышеприведённого ресурса -- всё мигает лучше чем надо. заливаю свою -- ничего. Тыкаюсь уже 2й день, Подскажите, в чём беда в моём коде? Код: LIST P=PIC12F675
__CONFIG 31F4h STATUS EQU 0003h GPIO EQU 0005h TRISIO EQU 0005h Reg_1 EQU 0020h Reg_2 equ 0021h Reg_3 equ 0022h org 0 ; begin ; preparatory work bsf STATUS,5 ; go to bank 1 clrf TRISIO bcf STATUS,5 ; go to bank 0 ; main m1 movlw 00000100b ; pins 0,1,2, movwf GPIO ; 3,4,5 high voltage call Pause ; 500000 machine cycles clrf GPIO ; pins 0,1,2,3,4,5 low call Pause ; 500000 machine cycles goto m1 ; ;delay = 500000 machine cycles Pause movlw .85 movwf Reg_1 movlw .138 movwf Reg_2 movlw .3 movwf Reg_3 wr decfsz Reg_1, F goto wr decfsz Reg_2, F goto wr decfsz Reg_3, F goto wr return end ; end |
Автор: | driver_gv [ Пн июл 17, 2017 16:38:50 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
1.Проверьте значение для регистра CONFIG. Мне кажется там неверное значение. 2. Код: m1 movlw 00000100b ; pins 0,1,2, movwf GPIO ; 3,4,5 high voltage Устанавливает только 1 PIN а не три. |
Автор: | uldemir [ Пн июл 17, 2017 16:54:48 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Почему, когда вы пытаетесь что-то програмировать, не читаете даташит на программируемый микроконтроллер? Там на 21 странице написано: Цитата: The ANSEL (9Fh) and CMCON (19h) И следом, пример 3-1, как это следует делать.registers (9Fh) must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read ‘0’. The ANSEL register is defined for the PIC12F675. а ссылка в вашем сообщении - битая... |
Автор: | pilot327 [ Пн июл 17, 2017 17:04:15 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
1.Проверьте значение для регистра CONFIG. Мне кажется там неверное значение. 2. Код: m1 movlw 00000100b ; pins 0,1,2, movwf GPIO ; 3,4,5 high voltage Устанавливает только 1 PIN а не три. да. это я знаю. коммент не поменял. там ниже дописано, что, к тому же, 4 и 5 устанавливает) |
Автор: | wws63 [ Пн июл 17, 2017 17:18:34 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
В инете огромное кол-во примеров с пикушками. За эти два дня можно было найти готовые примеры исходников ![]() Начните сначала с подключения инклюда, распишите строку конфигурации, инициализируйте МК, настройте линии порта и т.д. станет все понятно и в дальнейшем будет намного проще что-нибудь изобретать ![]() Код: list p=12f675 #include <p12f675.inc> __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT errorlevel-302 CBLOCK 20h Reg_1 Reg_2 Reg_3 ENDC bsf STATUS, RP0 ; команда установки 1-го банка CALL h'3FF' ; загрузить калибровочную константу movwf OSCCAL ; для внутреннего RC генератора movlw b'00000000' ; настроим линии порта movwf TRISIO clrf OPTION_REG clrf ANSEL ; цифровые входы bcf STATUS, RP0 ; команда установки 0-го банка movlw .7 ; отключить компаратор movwf CMCON movlw h'00' ; обнулить выходы movwf GPIO И так далее |
Автор: | pilot327 [ Пн июл 17, 2017 17:27:46 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
а ссылка в вашем сообщении - битая... http://arduinokit.ru/electronics/microc ... g-led.html Почему, когда вы пытаетесь что-то програмировать, не читаете даташит на программируемый микроконтроллер? Там на 21 странице написано: Цитата: The ANSEL (9Fh) and CMCON (19h) И следом, пример 3-1, как это следует делать.registers (9Fh) must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read ‘0’. The ANSEL register is defined for the PIC12F675. Спасибо, попробую переделать аналоговость в цифровость) Добавлено after 6 minutes 29 seconds: В инете огромное кол-во примеров с пикушками. За эти два дня можно было найти готовые примеры исходников ![]() Вы правы. с них я и писал свой суперкод. но, как видно [из моего собирательного суперкода], там ни слова об A/D конвертировании) Спасибо, попробую В мк я новичёк, так что нужное решение на просторах сетей заметить не всегда способен) |
Автор: | otest [ Пн июл 17, 2017 18:12:39 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
...CBLOCK 20h Reg_1 Reg_2 Reg_3 ENDC... А вот так ни когда не делай |
Автор: | pilot327 [ Пн июл 17, 2017 18:26:26 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Почему, когда вы пытаетесь что-то програмировать, не читаете даташит на программируемый микроконтроллер? Там на 21 странице написано: Цитата: The ANSEL (9Fh) and CMCON (19h) И следом, пример 3-1, как это следует делать.registers (9Fh) must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read ‘0’. The ANSEL register is defined for the PIC12F675. а ссылка в вашем сообщении - битая... Огромное спасибо, уважаемый, за быстрый и верный ответ!) Заработало) всего-то отключить компаратор, переделать аналог в цифры Вот рабочий код, м б поможет кому Код: LIST P=PIC12F675 __CONFIG 3F4h STATUS EQU H'0003' GPIO EQU H'0005' TRISIO EQU H'0005' CMCON equ H'0019' ANSEL equ H'001F' Reg_1 EQU H'0020' Reg_2 equ H'0021' Reg_3 equ H'0022' org 0 ; begin ; preparatory work BCF STATUS,5 ;Bank 0 CLRF GPIO ;Init GPIO MOVLW 07h ;Set GP<2:0> to MOVWF CMCON ;digital IO BSF STATUS,5 ;Bank 1 CLRF ANSEL ;Digital I/O bsf STATUS,5 ; go to bank 1 clrf TRISIO bcf STATUS,5 ; go to bank 0 ; main m1 movlw b'00000100' ; pin 2 high movwf GPIO ; voltage call Pause ; 500000 machine cycles clrf GPIO ; pin 2 low call Pause ; 500000 machine cycles goto m1 ; ;delay = 500000 machine cycles Pause movlw .85 movwf Reg_1 movlw .138 movwf Reg_2 movlw .3 movwf Reg_3 wr decfsz Reg_1, F goto wr decfsz Reg_2, F goto wr decfsz Reg_3, F goto wr return end ; end Всем спасибо за участие. Считаю тему закрытой |
Автор: | Zhuk72 [ Пн июл 17, 2017 18:49:47 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Рано еще считать тему закрытой. Не расписывайте адреса регистров специального назначения. Просто в начале исходника добавьте include p12f675.inc - этого достаточно, все адреса и биты расписаны в нем. Это, кстати, позволит писать не номера битов, а их имена, т.е. вместо STATUS,5 будет STATUS,RP0. Конфиг в таком виде не пишите. Выше вам дали пример, вы ему не последовали. В МПЛабе это делается просто: Window -> PIC Memory Views -> Configuration bits. Выбираете нужную конфигурацию, жмете Generate... и копируете полученное в исходник. Еще вы не сделали (правда здесь это роли особой не играет) считывание регистра калибровки генератора: Код: call 0x3FF
movwf OSCCAL |
Автор: | Serj66610 [ Вс дек 24, 2017 22:17:18 ] | ||
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) | ||
Дабы не плодить лишних тем,решил написать здесь....итак....все просто(как оказалось,только-вначале) ![]() вот "код"....это-второй код за всю мою жизнь,так-что будьте по-сдержаннее: LIST p=12f675 __CONFIG 0xF1F4-FOSC_INTRCIO,WDTE_OFF,PWRTE_OFF,MCLRE_ON,BOREN_ON,CP_OFF,CPD_OFF...эт то,что сконфигурированно STATUS equ 03h -указание адреса регистра GPIO equ 05h -указание адреса регистра TRISIO equ 05h -указание адреса регистра DATA1 equ 20h -указание адреса регистра(для декриментирования) DATA2 equ 21h -указание адреса регистра(для декриментирования) DATA3 equ 22h -указание адреса регистра(для декриментирования) org 0 -начало программы bsf STATUS,5 -переключаемся на 1 банк bcf TRISIO,0 -переводим GP0 в выход bcf TRISIO,1 -переводим GP1 в выход bcf TRISIO,2 -переводим GP2 в выход bcf STATUS,5 -переключаемся на 0 банк START bsf GPIO,0 -включаем GP0 bsf GPIO,1 -включаем GP1 bsf GPIO,2 -включаем GP2 movlw .13 ~задержка.... movwf DATA1 ... movlw .57 ... movwf DATA2 ... movlw .16 ... movwf DATA3 ... decfsz DATA1,F ... goto $-1 ... decfsz DATA2,F ... goto $-3 ... decfsz DATA3,F ... goto $-5 ...3 секунды bcf GPIO,0 -выключаем GP0 bcf GPIO,1 -выключаем GP1 bcf GPIO,2 -выключаем GP2 movlw .13 ~задержка.... movwf DATA1 ... movlw .57 ... movwf DATA2 ... movlw .16 ... movwf DATA3 ... decfsz DATA1,F ... goto $-1 ... decfsz DATA2,F ... goto $-3 ... decfsz DATA3,F ... goto $-5 ...3 секунды GOTO START -возвращаемся на метку START end комменты подписал только здесь...в МР лаб-"сухой текст"....про кавычки(перед комментами)-в курсе. код работает(по крайней мере в симуляторе-протеусе)...но! очень чудно работает ![]() смысл в чем...если "повесить" светодиод на один из выводов-то он исправно "моргает" делая "меандр" с 3-х секундными циклами...."гуд по Фрейду"....написал его и уже почти "прыгал от счастья"...но в голову влезла бредовая идея...у PIC12F675 выходов-то аж целых 6!(точнее я лукавлю....выходов-то пять....и один вход...который у меня-"висит на сбросе")....ну и подумал,а дай-ка я "заюзаю" еще один выход....и вот я "включил" вместе с GP0 и GP1 программно...но в противофазе....т.е. пока на GP0-1,на GP1-0....так три секунды,затем "товарищи" меняются местами и уже на GP0-0,а на GP1-1....ну типо мультивибратора.... каково-же было мое удивление,когда протеус скрутил мне фигуру из трех пальцев и сказал: "Моргай сам!" \начал проверять код...мот где глаз замылился и я не увидел косяка....вроде-бы все ОК. затем думаю...ладно,фиг с тобой,не хошь в разнобой,так моргай вместе... настраиваю два канала(GP0 и GP1)....и....о чудо! моргает второй....а первый-молчит.... дальше-больше.....настраиваю третий-GP2(конфигурирую по "фен-шую"....как мне кажется)....о чудестное явление! "глохнет" второй(GP1) но четко начинает работать третий(GP2)......блиин....что за приколы.....даташит дважды на МК перечитал за этот вечер....так и не понял....почему не хотят работать два,три,четыре....порта сразу(или по-очередно)? менял циферки после GP(номер порта)....вот какую поставишь последней-тот канал и фурычит....соответственно в "первом банке" они все сконфигурированы на выход,но сцука...."в нулевом банке"-отказываются работать вместе ....видимо,ввиду взаимной неприязни. ![]()
|
Автор: | Vovan555 [ Пн дек 25, 2017 08:34:55 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
На протеус внимания не обращайте.. Собирайте в "железе" на макетной плате и проверяйте.. У Вас инициализации контроллера, по моему, не показано. Выложите, её, тоже. Кстати.. MCLRE для какой цели включили? Если не задействован, отключайте его. |
Автор: | BOB51 [ Пн дек 25, 2017 09:40:29 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Отключение mclre - "использование вывода сброс для прикладных задач, не связанных со сбросом МК" приведет к "одноразовости" прошивки в случае применения простейших программаторов (вида JDM или EXTRA-PIC). ![]() |
Автор: | Vovan555 [ Пн дек 25, 2017 09:53:02 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Цитата: использование вывода сброс для прикладных задач, не связанных со сбросом МК" приведет к "одноразовости" прошивки Ну, не знаю.. Сколько прошивал, никогда не включал и всё перепрошивалось.. (EXTRA-PIC)
|
Автор: | Serj66610 [ Пн дек 25, 2017 12:25:25 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
ну не....я могу отключить MCLR(в конфигурации) и настроить его на "порт"....просто он мне не нужен и "правильнее" его все-же подтянуть на питание(я-ж пока учусь....изучение зависимости портов будет потом). У меня EXTRA-PIC,который я долго мучал и изучал его режим работы(так как изначально собранный он отказался работать)....пока не взял двухлучевой ослик и сразу понял в чем косяки.... и "допилил" его до того,что перемычкой по входу(разрешение подачи питания...3-й вывод...если память не изменяет) можно выставлять приоритет включения первым либо Vpp либо Vcc....разница(задержка) то-ли 70 то-ли 100 микросекунд....т.е. я могу переставить перемычку на приоритет Vpp(оно у меня регулируемое от 10 до 14,7в) и вначале подастся Vpp 13в на вывод MCLR,а через 100 микросекунд уже пойдет питание на сам проц и он "благополучно" перейдет в режим программирования....так-что с железом будет все ОК,все прошьется и сотрется....уже делал неоднократно(в смысле шил именно этот PIC). Vovan555-а что такое "инициализация контроллера"?....это его конфигурация....или я что-то упустил из виду? т.е. вы предлагаете просто прошить МК и посмотреть в железе? по поводу "задействования" MCLR-не уверен.....точно в конфигурации его нужно настроить как вывод(просто он мне не нужен....пока)....из-за него может быть такое поведение работы портов? как напишите-так и сделаю(проверю!)....просто нужна уверенность в том,что решение может быть действенным.....так как просто проверять все подряд варианты...это,конечно весело,но как-то нет желания(пока что их всего два-так что проверить,конечно,можно)....тогда зачем пользоваться симулятором (Протеусом)? в общем,надеюсь на вас,как единственных откликнувшихся.....сам-то я в программировании-нуб....я больше по "железу"....мне проще спаять(без проблем!) что-то(любой алгоритм до 4-5 ступени иерархии) на рассыпухе,чем сделать то-же самое программно.....хотя программно-наверное все-же проще....естественно для тех-кто "шурупит". ![]() |
Автор: | Vovan555 [ Пн дек 25, 2017 12:36:47 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Цитата: такое "инициализация контроллера"? В данном случае, это первоначальная подготовка регистров спецназначения и рабочих пользовательских регистров контроллера к работе. Это пример из мануала Цитата: Пример 3-1 Инициализация GPIO BCF STATUS, RP0 ; Выбрать банк 0 CLRF GPIO ; Инициализация защелок GPIO MOVLW 0X07 ; MOVWF CMCON ; Каналы GPIO – цифровые входы/выходы BSF STATUS, RP0 ; Выбрать банк 1 MOVLW 0x0C ; Значение для инициализации ; направления каналов GPIO MOVWF TRISA ; Настроить GP<3:2> как входы, нас; троить GP<5:4,1:0> как выходы BCF STATUS, RP0 ; Выбрать банк 0 Цитата: т.е. вы предлагаете просто прошить МК и посмотреть в железе? Совершенно верно.. Протеус, это протеус, а живое устройство, это живое устройство. |
Автор: | Serj66610 [ Пн дек 25, 2017 12:46:34 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
ага! я так понимаю,у меня не хватало только этого? CLRF GPIO ; Инициализация защелок GPIO ![]() остальное-вроде-бы имеется(из того,что нужно)... а обязательно нужно это: BCF STATUS, RP0 ; Выбрать банк 0 ...? разве по-умолчанию мы не находимся(при начале работы МК) в 0 банке?....его обязательно нужно(выбор) указывать? или я что-то не так прочел(и не там)? спасибо,этот текст видел у себя в даташите но не подумал,что он играет какую-то роль. счас проверю! |
Автор: | Vovan555 [ Пн дек 25, 2017 12:51:25 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
По моему, Вы компараторы не отключили.. Цитата: MOVLW 0X07 ; MOVWF CMCON ; Каналы GPIO – цифровые входы/выходы А банки памяти указывают явно на всякий случай.. Мало-ли какая "зараза" находится в ячейках регистра STATUS. |
Автор: | otest [ Пн дек 25, 2017 13:11:44 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Что же вы мусолите прописные истины ? Читать влом ? Делай всё по чертежу, будет меньше п-жу. |
Автор: | Serj66610 [ Пн дек 25, 2017 13:20:57 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
Вот что намутил.... STATUS equ 03h GPIO equ 05h CMCON equ 19h TRISIO equ 05h DATA1 equ 20h DATA2 equ 21h DATA3 equ 22h org 0 MOVLW b'111' MOVWF CMCON bsf STATUS,5 bcf TRISIO,0 bcf TRISIO,1 bcf TRISIO,2 bcf STATUS,5 START bsf GPIO,0 результат-как и прежде...."на кусок" BCF STATUS, RP0 ; Выбрать банк 0 CLRF GPIO ; Инициализация защелок GPIO протеус "верещит благим матом"....так и не понял почему ![]() ага,все...понял.....потому-что "гладиолус"....у меня всюду STATUS,5.... |
Автор: | BOB51 [ Пн дек 25, 2017 13:49:34 ] |
Заголовок сообщения: | Re: Pic12F675. не мигает светодиод:) |
И чего дальше? ![]() Выложите Вашу схемку с "хотелками" - мож чего и набросаю "для образца"... Только базовая заготовка у меня под PIC12F629 (8-лапку с АЦП - PIC12F675 не применяю - для АЦП и PIC16F676 подойдет - он за счет большей распространенности по цене удобнее) хоша... можно и под 675й шаблон поставить... ![]() Адрес документации с полным русским переводом именно для 629/675х http://www.microchip.ru/files/d-sheets- ... 29_675.pdf Страничка с документацией на русском по "среднемладшим" и МПЛАБу http://www.microchip.ru/lit/?mid=1x0 ![]() |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |