| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PIC12F509 - написах код ама работи само на симулация http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=16908 |
Страница 1 от 4 |
| Автор: | Ванко [ Вто Дек 17, 2019 10:33 pm ] | ||||||||||||||||||||||
| Заглавие: | PIC12F509 - написах код ама работи само на симулация | ||||||||||||||||||||||
Здравейте, написах код за PIC12F509 за 2 бутона към rotary encoder или двупосочен квадратурен генератор тоест да подменя rotary encoder с бутони Флашнах го на PIC16F648 и работи, работи и в симулация на Proteus (естествено с промяна на командата за порт) на PIC12C509 (C509 беше най-близо до F509 което в същност имам). Проблема идва от това, че когато го програмирам на реален PIC12F509 - чипа нищо не прави! Виждам, че е жив понеже като натисна Резет бутона двата светодиода премигват и толкова. Поставих 2 светодиода на изходите за да следя за реакция. Схемата е следната: GP0 = UP - Бутон с резистор 10к към маса GP1 = DN - бутон с резистор 10 към маса GP2 = не е свързан, зададен като изход GP3 = RESET през 10k към Vcc и бутон към GND GP4 = OUT B - Изход 2 - свързан през 220 ома резистор и светодиод към GND GP5 = OUT A - Изход 1 - свързан през 220 ома резистор и светодиод към GND Изходите си седят логически 1 без никаква реакция! Къде бркам? 3-4 дена се мъча с какви ли не конфигурации на регистрии не ще, имам 2 нови чипа PIC12F509! MPLAB IDE 8.30 с компилатор High-Tech C компилира без никакъв проблем за F509. Бушоните са извън кода и са следните - IntOSC, CP - OFF, RESET - ON, WDT - OFF програматора ми е PicKit3 и също флашва без никакви забележки! Просто не ще и не ще да тръгне на истински чип. Ей това е кода:
Това е функцията, която се опитвам да направя:
Прикачам и целия проект на Proteus 7.10 и MPLAB IDE 8.30, в архива има и снимки от симулацията - работи отлично. Вижда се как ТЕТРИС фигурката е огледална Моля, ако някой знае как и може да ми помогне!
|
|||||||||||||||||||||||
| Автор: | ToHu [ Сря Дек 18, 2019 4:18 am ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
Ами той C509 е еднократно програмируем, ако преди това си качвал и друго на него няма как да работи, освен ако не е развоен с прозорче. |
|
| Автор: | Cekins [ Сря Дек 18, 2019 10:20 am ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
Точка първа - PIC12F509 не е компютър. Пълно глупост на тая въшка да ползваш индексно адресиране - само там генерираш тон код. Не знам как точно се справя хайтек Ц с банкирането на програмната памет, щото тая плюнка и там има "банкиране". Ако програмата ти е по-голяма от 128 думи, почти сигурно е че там се осира. Протеуса това нещо не го симулира правилно. Като искаш нещо 8 пиново има къде къде по смислени алтернативи - примерно 12F1822 - линейна програмна памет, фср регистри и още куп хардуер, дето това което го искаш май може и без програма да стане - само с периферия. |
|
| Автор: | Ванко [ Сря Дек 18, 2019 3:01 pm ] | |||||||||
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация | |||||||||
Благодаря за отговорите! ToHu 12C509 ползвам само за симулацията, компилирам за F509 и флашвам на F509. Cekins Аз го имам направено и работещо с CMOS логика, но исках да е по-компактно, освен това тези "въшки" вече ги имам купени и исках да ги използвам. Пробвах и само мигалка за GP0 през 500mS но и това не тръгна (но всичко работи в симулацията), нещо не е наред с конфигурацията и немога да го изловя или даташиита има грешка, че там е и мешан с 16F505 което е 14 пиново подобие но с 11 IO мисля беше. Да, знам, че не е компютър ама то нищо не тръгва на яве! Сякаш някаква второстепенна функция е задействана или пък не е задействана и нямам достъп до изводите, Как ли не го ръчках. Нямам идея как да реша проблема, а информацията е оскъдна та реших да се допитам до по-знаещи и можещи. Тука окастрих кода и размених GP0, GP1 c GP5, GP4 ама се тя, пак същия ефект:
|
||||||||||
| Автор: | ig_ivanov [ Сря Дек 18, 2019 4:05 pm ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
От конфигурационната дума забрани WDT и виж пак там дали е избран вътрешния генератор. От OPTION register може да изключиш pull-up-a, и без това ползваш външни резистори. ПП: Всъщност, сега видях, че ако GP3 e конфигуриран за MCLR, pull-up са винаги включени. |
|
| Автор: | Ванко [ Сря Дек 18, 2019 5:08 pm ] | ||
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация | ||
Благодаря за отговора. ig_ivanov WDT е изключен, осцилатора е вътрешен (IntOSC), Резета (GP3) е включен да (в първия пост съм дал бушоните)... явно съм пропуснал момента където е описано, че резето автоматично включва вътрешните повдигащи резистори (макар, че не би трябвало да ми пречат ... май
|
|||
| Автор: | stefan63 [ Сря Дек 18, 2019 5:10 pm ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
Имаше някакъв екран в ИДЕ-то - оттам да зададеш конфиг.дума , не в сорса.... Ама кога кое беше валидно, не помня. |
|
| Автор: | ToHu [ Сря Дек 18, 2019 5:13 pm ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
ами то не остава много, конфигурационна дума трябва да е тоя е по прост от бобена чорба. Виж дали си на вътрешен, виждаш ли си конфигурационната дума ? Гледам при тях се пише нещо ткаова : __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & BOREN_ON & LVP_OFF & CPD_OFF & CP_OFF); Виждам че в твоят код е директно сетната конфигурационната дума, сега не ми се рови да видя дали е правилна, пробвай да изпозлваш тов апо-горе, по-разбираемо е. |
|
| Автор: | ig_ivanov [ Сря Дек 18, 2019 6:11 pm ] | |||||||||
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация | |||||||||
Конфигурационната дума за този чип е 12 бита, от които се ползват само 5. Твоята е 14. |
||||||||||
| Автор: | Stoimen [ Сря Дек 18, 2019 8:07 pm ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
Имам далечен спомен за проблем с HIGH-TECH и дефиницията на TRIS. При PIC12F509 TRIS регистъра не е мапнат на адрес. Достъпен е само с инструкцията TRIS. По спомен HIGH-TECH компилатора генерираше код за писане в SFR адреса на TRIS от .h файла, а не използваше инструкцията TRIS. Можеш да провериш в .lst файла. |
|
| Автор: | stefan63 [ Сря Дек 18, 2019 8:33 pm ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
В листинга има това: line 44 114 ;509quad.c: 44: TRIS = 0b001011; 115 14C C0B movlw (0Bh) 116 14D 006 tris 0x6 |
|
| Автор: | TheWizard [ Сря Дек 18, 2019 8:47 pm ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
Ванко, вземи си 12F1822 или 12F1840 и потренирай малко с MPLAB-а |
|
| Автор: | stefan63 [ Сря Дек 18, 2019 9:49 pm ] |
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация |
Що бре , 509 си е ок за задачата. Мотиката е малка, може да му помогне за в бъдеще. От друга страна - ST пуснаха 8 краков АРМ. |
|
| Автор: | Ванко [ Сря Дек 18, 2019 10:18 pm ] | |||||||||
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация | |||||||||
Благодаря за отговорите! ig_ivanov Мисля, че някъде в началото го сложих на 12 бита, но не виждам как да го наглася в момента. Принципно съм малко по-запознат с MikroC но там този чип го няма и се чудих с какъв компилатор да го подхвана, а и в програмирането не съм силен - дет се вика новак съм Пък асемблера е като тъмна Индия за мен! stefan63 TRIS=0b111000 т.е. 5,4,3 са входове а 2,1,0 са ми изходи сега махам резето и става TRIS=0b110000 тоест GP5, GP4 стават входове а всичко останало изходи, предполагам за този чип не вървят на обратно или? Като променям ТRIS и в симулацията се променят посоките на изводите и мисля, че е ок така. И да, сега и аз го виждам това в Program Memory Line 379 address 17A opcode 006 TRIS 0x6 там трябва да е 0x30 предполагам или? ToHu да беше настроено но го махнах от кода иначе трябваше да е adress FFF value 0x31FA с пуснато резе, сега е 0x31EA без резе, извън кода са настроени. stefan63 да задал съм ги от там - таба Configure -> Configuration Bits, но ако го няма в кода програматора мрънка, че не ги намира в HEX-a Stoimen къде да го търся тва? Порязах още кода, сега ми махна и резето (единственото живо нещо
|
||||||||||
| Автор: | stefan63 [ Сря Дек 18, 2019 10:38 pm ] | |||||||||
| Заглавие: | Re: PIC12F509 - написах код ама работи само на симулация | |||||||||
На мен това line 44 114 ;509quad.c: 44: TRIS = 0b001011; 115 14C C0B movlw (0Bh) 116 14D 006 tris 0x6 ми изглежда нормално за твоята схема. TRIS 0X6 означава , че ще запише W=0b001011 в регистъра за управление на посоката(GPIO има адрес 0x6). Поне така си мисля. =====
Това , че мрънка ...ок, ама отказва ли да програмира? Ако не отказва - пробвай без конфиг в сорса. |
||||||||||
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|