| Автор |
Съобщение |
|
forscience
Ранг: Минаващ
Регистриран на: Чет Фев 19, 2015 7:47 pm Мнения: 14
|
 Проблем с входовете на PIC16F627A
Здравейте. На кратко опитвам се да направя нещо като клавиатура която контролира 7 сегментен дисплей. Използвам PIC16F627A, MPLAB X, и езикът C. Съответно в кода съм декларирал кои битове да са входове и кои изходи. Искам, чрез натискане на Бутон 1 (подаване на 1-ца към пин на микроконтролера) да светнат няколко диода. Проблема е, че те светват директно с включването на чипа. Предполагам, че всичко идва от IF-a, но Вие преценете. Ето целия код:
|
| Съб Ное 19, 2016 9:11 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Проблем с входовете на PIC16F627A
тоя пък for странно решение while(true) Но остави това, от дефиницията идва, не изпозлвам mplab но не знам защо си мисля че така дефинирано ще трябва да изпозлваш някоя от вградените функции за тест на бит а не директно да го проверяваш. Мисля че беше нещо като portbits.RA5 ... ама да не те излъжа, както казах MPAB не изпозлвам.
|
| Съб Ное 19, 2016 9:16 pm |
|
 |
|
forscience
Ранг: Минаващ
Регистриран на: Чет Фев 19, 2015 7:47 pm Мнения: 14
|
 Re: Проблем с входовете на PIC16F627A
Ето код от друг мой проект който е със чип 16F628 и входа работи. Но тук е деклариран като вход целия PORTB....
|
| Съб Ное 19, 2016 9:39 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Проблем с входовете на PIC16F627A
Не ми се рови по документацията на mplab но все си мисля че така дефинираш байт но .... прочети дефинициите. По прицнип това което си направил никога не се прави така, трябва д аимаш дебонсинг най-малкото но това е друг въпрос ... погледни дефинициите, според мен не е така но може и да греша, възможно е RB3 някъде да е ддефинирано като 0x06.3 a MPLAB да е по умен от CSS и като види такова да знае че това е битова променлива.
|
| Съб Ное 19, 2016 9:49 pm |
|
 |
|
veryoldman
Ранг: Минаващ
Регистриран на: Нед Ное 06, 2016 6:49 pm Мнения: 41
|
 Re: Проблем с входовете на PIC16F627A
Не виждам никъде да конфигурираш CMCON. След Reset входовете от RA0 до RA3 са аналогови компаратори. Трябва ти CM<2:0>=111.
|
| Съб Ное 19, 2016 10:05 pm |
|
 |
|
forscience
Ранг: Минаващ
Регистриран на: Чет Фев 19, 2015 7:47 pm Мнения: 14
|
 Re: Проблем с входовете на PIC16F627A
Продължава да работи по същия начин дори след корекцията на CMCON. От скоро се занимавам с PIC, студент съм специалност КСТ, и още не са ми ясни доста неща. CMCON = 0b111; (Така трябва да изглежда командата нали?)
|
| Съб Ное 19, 2016 10:17 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Проблем с входовете на PIC16F627A
Така, сега като чета явно някъде е дефинирано че RB0 .. RBx sa bitowe, т.е. не е дефиницията в случая, по скоро не чета а гледам пример техен. Като ти гледам кода .. как си го вързл схемно, защото стандартната схема за връзване на бутон е пълъп към + и бутон към маса, в смисъл това е по -изпозлвамото, и в този случай входа ти винаги е 1-ца и става 0 като натиснеш. Другото как са ти свързани диодите, защото пък много често те са с резистор към + о през порта се светват като го правиш 0 .....
п.с. не може да е CMCON защото ако си оставил компаратора включен ще четеш бита внаги 0-ла
|
| Съб Ное 19, 2016 10:38 pm |
|
 |
|
veryoldman
Ранг: Минаващ
Регистриран на: Нед Ное 06, 2016 6:49 pm Мнения: 41
|
 Re: Проблем с входовете на PIC16F627A
Как ти изглежда хардуера. Ако с натискане на бутона подаваш "1", това означава, че бутона е включен между входа и "+". Тогава би трябвало да имаш резистор към маса, за да определя нивото при ненатиснат бутон. Обикновено се прави обратното, за да се ползват Pullup резистори, но няма значение. Важното е при ненатиснат бутон да имаш едно устойчиво ниво (в твоя случай може би "0") и при натиснат бутон да имаш друго устойчиво ниво. Покажи по някакъв начин схема. Когато се включи устройството, точно избраните диоди ли светват или всички - т.е. проблемът софтуерен ли е или хардуерен. Промени комбинацията, която искаш да свети, за да си сигурен, че ги пали софтуера, а не грешка по платката/схемата.
|
| Съб Ное 19, 2016 10:46 pm |
|
 |
|
forscience
Ранг: Минаващ
Регистриран на: Чет Фев 19, 2015 7:47 pm Мнения: 14
|
 Re: Проблем с входовете на PIC16F627A
Дисплея е с общ катод, а 1-ците ги подавам директно от +VDD през пуш бутон. При смяна на диодите в софтуера се получава желаната комбинация, но отново IF-a се изпълнява все едно бутона е натиснат, а реално не е. Както казах в по-горния си пост, предния примерен код работи върху друга платка, там реално е един бутон и един диод, а тук са 9 бутона и 7 диода.
|
| Съб Ное 19, 2016 10:54 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Проблем с входовете на PIC16F627A
А на тия входове имаш ли нещо което да ги държи в ниско ниво, т.е. резистор към маса, оставени висящи ... вече не помня какво връщаха, но на силабс примерно могат да ти върнат и 0 и 1.
|
| Съб Ное 19, 2016 11:00 pm |
|
 |
|
forscience
Ранг: Минаващ
Регистриран на: Чет Фев 19, 2015 7:47 pm Мнения: 14
|
 Re: Проблем с входовете на PIC16F627A
Нищо не ги държи в ниско ниво, свързани са единствено през бутона. Но дори и да трябва да сложа резистори, пак не си обяснявам как при 1 вход и 1 изход работи, а с 9 входа и 7 изхода не.
|
| Съб Ное 19, 2016 11:02 pm |
|
 |
|
veryoldman
Ранг: Минаващ
Регистриран на: Нед Ное 06, 2016 6:49 pm Мнения: 41
|
 Re: Проблем с входовете на PIC16F627A
сложи им резистори, не е коректно да са висящи
|
| Съб Ное 19, 2016 11:12 pm |
|
 |
|
forscience
Ранг: Минаващ
Регистриран на: Чет Фев 19, 2015 7:47 pm Мнения: 14
|
 Re: Проблем с входовете на PIC16F627A
Хардуерно е практически невъзможно. Има ли начин софтуерно да им окажа логическа 0 при липса на 1ца?
|
| Съб Ное 19, 2016 11:15 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Проблем с входовете на PIC16F627A
Не, няма, какво значи хардуерно е невъзможно ? Дали ще разботи е въпрос който зависи от много неща, може да се чете винаги 0, може винаги 1-ца и което е най-лошото може да е произволно, или донякъде свързано с предходно състояние. Нямам спомен как се държаха входовете на PIC когато са висящи, но ри в идеалния случай да са 0, всяко смущение ще ги направи 1-ца. Пробвай да сложиш някакъв резистор за пробата към маса, ако изгасне значи това ти е проблема.
|
| Съб Ное 19, 2016 11:29 pm |
|
 |
|
forscience
Ранг: Минаващ
Регистриран на: Чет Фев 19, 2015 7:47 pm Мнения: 14
|
 Re: Проблем с входовете на PIC16F627A
Да, точно там е проблема. Кода работи както трябва, просто хардуерно трябва да се добавят pullup резистори. Благодаря Ви за помощта.
|
| Съб Ное 19, 2016 11:44 pm |
|
|