| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Софтуерен UART http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4878 |
Страница 1 от 1 |
| Автор: | dan [ Пет Сеп 28, 2007 11:57 am ] | |||||||||
| Заглавие: | Софтуерен UART | |||||||||
Здравейте! Търсих из форума и из нета информация за софтуерна емулация на УАРТ,попрочетох и седнах да пиша код. Понеже не съм много сигурен дали съм пресметал времената правилно, реших да напиша програмата така, че самостоятелно да си сменя настройките, определящи времето м/у импулсите. Идеята ми беше да включа контролера към компютъра, да дам едни настройки на терминала и той да чака данните, който съобщават брой на циклите на таймер0. Да, ама не стана. Някой може ли да даде акъл по въпроса?
|
||||||||||
| Автор: | sthx [ Пет Сеп 28, 2007 12:56 pm ] |
| Заглавие: | Re: Софтуерен UART |
Не можеш да очакваш всичко да става от първия път. Необходим ти е цифров или аналогов запомнящ осцилоскоп и проблемчето ще го регистрираш лесно. Може и с обикновен осцилоскоп да пробваш, като софтуерно пуснеш непрекъснат поток от данни по интерфейса. |
|
| Автор: | Ки4о [ Пет Сеп 28, 2007 2:17 pm ] |
| Заглавие: | |
Пусни си една симулация и ще видиш че въпросния ПИН 1 изобщо не реагира - стои си в 0. Пробвай това : START B1 bcf STATUS,RP0 ;Bank 0 clrf GPIO ;Init GPIO movlw 07h ;Set GP<2:0> to movwf CMCON ;digital IO bsf STATUS,RP0 ;Bank 1 MOVLW B'10001000' ;PULL-UPS ENABLED,PRESCALER ASSIGNED TO WDT MOVWF OPTION_REG movlw 0x2D ;0B00111101 banksel TRISIO andwf TRISIO,1 B0 GOTO MAIN |
|
| Автор: | dan [ Пет Окт 05, 2007 10:08 am ] | |||||||||||||||||||||||||||
| Заглавие: | ||||||||||||||||||||||||||||
това е от версията на симулатора(преполагам използваш mplab7.6?). реагира си пинчето. Реших да пусна просто един диод да мига и забелязах нещо много странно: каквато и стойност да запиша в OPTION_REG за делителя, диода не променя честотата си на мигане. На какво може да се дължи това? Изтествах с крайни стойности:
|
||||||||||||||||||||||||||||
| Автор: | plameniv [ Пет Окт 05, 2007 10:55 am ] | ||||||||||||||||||||||||||||||||||||
| Заглавие: | Мда | ||||||||||||||||||||||||||||||||||||
А прочете ли в документацията за какво се ползва бит 3 в option_reg ? PSA: Prescaler Assignment bit 1 = Prescaler assigned to the WDT 0 = Prescaler assigned to Timer0 Ползваш ли WDT, гледам че си го изключил , ами превключи ли делителя към TMR0 MOVLW B'10000111' MOVWF OPTION_REG |
|||||||||||||||||||||||||||||||||||||
| Автор: | dan [ Пет Окт 05, 2007 2:39 pm ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
мерси за корекцията. Оправих го, обаче сега без делител мига по-бавно, отколкото с делител?!?!?!
въобще не знам дали мисля правилно: честота на кварца-4MHz => входна честота на "таймер-блока"-1MHz => при PS2-PS0=000 (делител на 2), честотата на входа на брояча трябва да е 0.5MHz(период 2us)=> времето за препълване от 00 през FF до 00 трябва да е 257цикъла х 2us = 564us .т.е. би трябвало диода да мига с честота около 1kHz,а в момента е някъде около 4-5Hz. Верни ли са ми сметките по-горе? |
|||||||||||||||||||
| Автор: | dan [ Пет Окт 05, 2007 3:17 pm ] |
| Заглавие: | |
не знам какво направих, но то тръгна |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|