Микроконтролери и електроника
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 милисекунди примерно) просто се проверяват в какво ниво са входовете. Освен това регистъра не е кондензатор :) Входа може да се разглежда като такъв (CMOS вход) но след него има и други черва. А процесора не се занимава с промяната - на входа си има тригери, които се явяват като регистър на един точно определен адрес на цпу-то. Реално всичко на което се вика "периферия" няма нужда от цпу-то за да работи (включително и портовете). Връзката и контрола им се осъществява посредством регистри които си се адресират от цпу-то (всичките) и от съответната периферия (само нейните си).

Автор:  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 написа:
...подробности отностно физика на това как и защо регистрите променят стойността си при дадено външно събитие, на теоретично ниво.

Нещо не разбирам: искаш обяснения как работят регистрите ли?

Автор:  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/