| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PORT X и TRIS X http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=10351 |
Страница 1 от 2 |
| Автор: | jorexa [ Нед Юли 29, 2012 2:30 pm ] |
| Заглавие: | PORT X и TRIS X |
Здравейте, имам един въпрос отностно портовете в микроконтролерите TRIS X и PORT X. Нарочно означавам с "Х", защото въпросът ми е общ. В документацията е указано, че TRIS отговаря за посоката на данните, а чрез PORT се управляват чете/пише съответния порт. Примерно ако искам да управлявам светодиоди е необходимо да променят стойността на PORT X. Та, въпросът ми е какво точно променя физически промяната на PORT? и ако е възможно малко по-подробно обяснение за TRIS. |
|
| Автор: | ike [ Нед Юли 29, 2012 5:16 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Не всички микроконтролери са на Майкрочип. http://www.google.com/search?q=TRIS+pic |
|
| Автор: | jorexa [ Нед Юли 29, 2012 9:26 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
благодаря, но ще задам по-конкретен въпрос. Примерно когато дефинираме някой стандартен "TTL" порт, като вход и включим към него бутон, при натискане на бутона PORT X си променя стойността и програмно проверяваме дали е настъпила промяна в конкретният бит. Това може ли да се дефинира, като хардуерно прекъсване? т.е. всички пинове променят стойността си хардуерно / PORT X / когато са дефинирани, като вход при промяна на външното напрежение / ниско към високо или обратно /. |
|
| Автор: | Cekins [ Нед Юли 29, 2012 10:05 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Зависи. Тука вече не става въпрос за принципно а за конкретно - някой могат, други не. Пък някой могат при определен фронт, други от промяна. Някой генерират общо прекъсване, някой отделно. Ама както ike казва не всички са микрочип, а аз мога да допълня че и дори и при тях всичко зависи от конретния чип. |
|
| Автор: | ike [ Нед Юли 29, 2012 10:58 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Кажи ни кой контролер конкретно си харесал, са му прочетеме даташита и разгледай това: http://www.google.com/search?q=pic+debouncing |
|
| Автор: | jorexa [ Нед Юли 29, 2012 11:34 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Ще дам пример с добре познатият PIC16F84A. Според документацията той разполага с четири източника на прекъсване. Прекъсване от външен източник RB0 (INT), препълване на TMR0, прекъсване при промяна на PORTB (RB7:RB4) и при завършване на запис в EEPROM. В много примери съм виждал да слагат бутони примерно на (RA0 - RA4), които според документацията не подлежат на "прекъсване" т.е са стандартни изводи, а очевидно се ползват за такива цели. Възможно е аз да се бъркам и точно това действие да не се дефинира, като "прекъсвано", но какво е тогава? редакция: очевидно щом се ползват за бутони (RA0 - RA4), настъпва някаква променя в регистър PORTA която ние отразяваме, чрез четенето на порта. Един вид каква е физиката в конкретната ситуация, приемаме че регистъра е "кондензатор" и при натискане на бутона той се зарежда и така се установява с единица /без да минава през процесора операцията за промяна на стойността на конкретният бит/ и ние просто го четем? |
|
| Автор: | itso.t [ Нед Юли 29, 2012 11:49 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Приемаме, че портът е конфигуриран като вход. Ако битът който те интересува е в лог. 0, при прочитане на порта (регистъра на порта) на същия бит ще има 0. Същото е и при лог. 1. |
|
| Автор: | Cekins [ Пон Юли 30, 2012 9:58 am ] |
| Заглавие: | Re: PORT X и TRIS X |
Ами той бутона принципно не се приема като събитие нуждаещо се от незабавна обработка. Обикновенно има много по важни събития, които да ползват и без това ограничения брой външни източници на прекъсване. Затова на някакво време (10 милисекунди примерно) просто се проверяват в какво ниво са входовете. Освен това регистъра не е кондензатор |
|
| Автор: | jorexa [ Пон Юли 30, 2012 10:53 am ] |
| Заглавие: | Re: PORT X и TRIS X |
Благодаря много за отговорите, бихте ли дали някакъв линк за подробности отностно физика на това как и защо регистрите променят стойността си при дадено външно събитие, на теоретично ниво. |
|
| Автор: | velio [ Пон Юли 30, 2012 11:07 am ] |
| Заглавие: | Re: PORT X и TRIS X |
В документацията на така известния PIC16F84A има и схема на портовете - ако те интересува как точно се обработва сигнала - виж там. Иначе най-просто - ако имаш високо ниво на някой извод в момента на четене от PORT X регистъра, съответния бит в регистъра е 1. Ако нивото е ниско - имаш 0. Един вид - в момента в който прочетеш регистъра ще разбереш дали в същия момент съответния извод е в 0 или в 1. Ако пропуснеш момента - ами пропуснал си го.... Не знам защо ми се струва че задаваш въпроса много отдалеко. Задай съвсем контректно какво те интересува. |
|
| Автор: | dan [ Пон Юли 30, 2012 11:40 am ] | |||||||||
| Заглавие: | Re: PORT X и TRIS X | |||||||||
Нещо не разбирам: искаш обяснения как работят регистрите ли? |
||||||||||
| Автор: | jorexa [ Пон Юли 30, 2012 1:15 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Извинявам се, че разводних темата ще се постарая да бъда по-конкретен. Правя си разни примерни програмки с PIC и бутони. Просто исках да разбера на ниво "физика" как и защо при натискането на бутони регистъра промяна стойността си. Примерно той е кондензатор, който се пълни при натискането на бутона или каква по-точно му е магията? |
|
| Автор: | dan [ Пон Юли 30, 2012 2:05 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Ето тук е обяснено как работят регистрите. Особена разлика в ПРИНЦИПА на действие на регистрите няма- просто едни са вкарани в микроконтролер, а други са в отделна интегрална схема. http://www.allaboutcircuits.com/vol_4/chpt_12/5.html Допълнителната функционалност около краката на микроконтролера се получава, чрез включване на още карантия към тях- мултиплексори, "изтеглящи" (pull-up, pull-down) резистори, аналогови компаратори и т.н.. Особеността при тези контролери е, че понякога, за да използваш пина като цифров вход или изход, трябва предварително да изключиш някоя от аналоговата периферия, която по "дифолт" (след ресет) е включена. Това, например, дали пина ще се конфигурира като вход или като изход зависи дали към него ще се включи съответно вход или изход на някой вътрешен регистър. Т.е. има регистър за вход, има регистър за изход. Това е леко повърхностно обяснение. Ако искаш разяснение как точно се случват нещата в контролера- ами прочети частта IO ports на дейташита на контролера. |
|
| Автор: | Cekins [ Пон Юли 30, 2012 2:17 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Вече казах, че не е кондензатор. Регистъра е изграден от 8 (в повечето случаи) тригера които се установяват в 0 или 1 в зависимост от входа. Входа "физически" е съставен от някакъв логически ттл съвместим елемент след който е закачен тригера. Съответно ядрото "вижда" тези тригери като клетка (регистър) от паметта си. Ама както гледам, докато дойде времето в което наистина ще ти е от значение как е изграден физически порта, ще мине известно време. Засега по-добре се фокусирай върху това как аджеба да го хванеш тоя бутон че е натиснат и програмата ти да не реагира 200-300 пъти за едно натискане. И като добавка - кондензатора не се пълни - той не е чаша за вода. Зарежда се... @dan - мноо задълба в перифериите |
|
| Автор: | jorexa [ Пон Юли 30, 2012 2:32 pm ] |
| Заглавие: | Re: PORT X и TRIS X |
Благодаря много за разясненята! И се извинявам още веднъж за неточностите. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|