| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Прекъсване от USART http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=76 |
Страница 1 от 3 |
| Автор: | Predator_MF [ Чет Окт 28, 2004 11:09 am ] |
| Заглавие: | Прекъсване от USART |
Абе нещо не мога да си вкарам PIC16F877A в прекъсване с источник USART... Правя го със следните стъпки:
2. bsf PIE1, RCIE 3. bsf INTCON,GIE След това пикчето го затварям в някакъв цикъл, пращам му нещо по RS232 ама то не отговаря... Дали не съм изтървал някаква важна особеност? |
|
| Автор: | bateAz [ Чет Окт 28, 2004 11:18 am ] |
| Заглавие: | |
Ami като ти дойде ти какво правиш? Става дума, като ти дойде прекъсването. Щото там имаше някави битове, които трябва програмно да се нулират - маските за прекъсване в някакъв статус регистър. Не го ли нулираш "ръчно" постоянно ще си влизаш в прекъсването. За съжаление не ми е тук пищова за ПИЦ16, а не ми се тегли. Погледни го при тебе, и ако не стане пак се обади. Ша го изтегля, де ша ода. |
|
| Автор: | bateAz [ Чет Окт 28, 2004 11:24 am ] |
| Заглавие: | |
А може и въобще да не получаваш прекъсване. Заплюй си някой пин за индикатор, нулирай го и като влезаш в прекъсване го сетни. Повече не го пипай, за да знаеш дали изобщо те прекъсва. Виж с каква скорост работиш. Провери с мултицета дали пинчето RxD се смъква като му пращаш символи ( нормално трябва да е High при мълчание ) Ако пак не стане, значи днес не му е ден. |
|
| Автор: | Predator_MF [ Чет Окт 28, 2004 11:39 am ] |
| Заглавие: | |
В INT секцията (0х0004) съм си сложил нормалните "context save" и "context restore" процедури + BEEP процедурка (за писукане на пиезозумер) и нулиране на флага RCIF (той всъщност се нулира при четене на RCREG). Досега прекъсвал PIC от всякакви источници, ама не и от USART. Типа на комуникация ми е RS-485, 115200, тествах го без прекъсване - работи. Имам и два светодиода за TX и RX, очевадно е че PIC-а приема нещо, ама не получавам BEEP. Пробвах прекъсване с TMR0, да разбера дали нещо не съм оплескал по INTCON, ама всичко е OK (писука си когато трябва). |
|
| Автор: | Predator_MF [ Чет Окт 28, 2004 11:40 am ] |
| Заглавие: | |
За какъв пищов става дума? |
|
| Автор: | Mozfet [ Чет Окт 28, 2004 11:47 am ] |
| Заглавие: | |
Аз съм правил точно такова прекъсване. Целта ми беше да препрограмирам някои параметри на ПИЦ-а чрез Хипертерминала. Бях задал и ключова дума. Ако съвпадне се изпълнява цялото прекъсване, аке не - не. Но както казва батето, трябва да имаш: bcf PIE1, RCIE. Даже нулирам и приемния регистър. |
|
| Автор: | bateAz [ Чет Окт 28, 2004 11:54 am ] |
| Заглавие: | |
Ти на изпити не си ли ходил, та ме питаш за какъв пищов става дума - откъдето се преписва Става дума за .PDF-а. А сега сериозно - да не би beep() да ти е доста дълго, т.е пускаш го да пищи и чакаш да мине време. През това време може да ти дойдат една манифестация от символи при тази скорост. Какъв дебъгер ползваш? Сложи точка на прекъсване в процедурата на прекъсването и гледай какво става. |
|
| Автор: | Predator_MF [ Чет Окт 28, 2004 12:23 pm ] |
| Заглавие: | |
Аз помислих, че ще ме застреляш заради тъпите въпроси дето ги задавам... BEEP() ми е дългичко около 100ms, ама аз през това време нищо не пращам по USART, ей ся ще погледна какво ми става в интеръпта...Дебъгера ми е MPLAB-SIM |
|
| Автор: | Predator_MF [ Чет Окт 28, 2004 12:54 pm ] |
| Заглавие: | |
Абе нещо не ми е вред...В момента в който сетна PIE1,<RCIE> (разрешавам прекъсване от USART reciever-а) PIC-a ми влиза в прекъсване, и дори да нулирам флага за прекъсване, продължава да си стои там |
|
| Автор: | Цецо [ Чет Окт 28, 2004 2:06 pm ] |
| Заглавие: | |
Не помня точно, ама май симулатора не поддържа UART |
|
| Автор: | bateAz [ Чет Окт 28, 2004 2:08 pm ] |
| Заглавие: | |
Пич, може да е малко дърводелско, ама защо не постнеш текста на прекъсването? |
|
| Автор: | Predator_MF [ Чет Окт 28, 2004 2:30 pm ] |
| Заглавие: | |
Baudrate-а ми е абсолютно точен (PIC@20MHz; BRG=1; SPBRG=10 - това ми е за 115200bps, тествах го без прекъсвания). Работя върху желязото ORG 0x0004 INT push .. BEEP bcf PIR1,RCIF pop retfie INIT_USART .. bsf PIE1,RCIE ; ей тука разрешавам прекъсвания от USART .. .. main дрън_дрън goto main |
|
| Автор: | Цецо [ Чет Окт 28, 2004 3:40 pm ] |
| Заглавие: | |
ами изглежда като структура вярно. Ама що не ползвате хардуерни дебъгери бе хора? Щеше отдавна да си рабрал какъв е проблема. Сега така единственото което предложи батето - набеждаваш един пин за индикатор и го блъскаш насам, натам из кода да видиш докъде си стигнал. Ама така е ебати сляпата история. Един ICD1 се прави за 20 лева сумарно, що се мъчите. |
|
| Автор: | Predator_MF [ Чет Окт 28, 2004 3:53 pm ] |
| Заглавие: | |
Ами просто не съм опирал до чак такива проблеми, че да ми трябва ICD... А за ICD2 колко пари да си приготвя? |
|
| Автор: | bateAz [ Чет Окт 28, 2004 4:46 pm ] |
| Заглавие: | |
По-подробно, момче, по-подробно. Интересувам се кои регистри запазваш, как, в какъв ред, кои ползваш в тялото на процедурата, кои в бипкането, с кои банки работиш и т.н. То е ясно, че като идея е вярно, но фактът, че гърми, показва, че нещо си пропуснал. Айде като се прибереш, copy + paste |
|
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|