problém s přerušením PIC 16f1934

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
cervenyxp
Příspěvky: 15
Registrován: 26 čer 2012, 00:00

problém s přerušením PIC 16f1934

#1 Příspěvek od cervenyxp »

Ahoj,

mám problém s přerušním u pic16f1934

Přerušení TM0 používám pro obsluhu 7segmentového displaye.

Celý program je napsán ve smyčce 100ms a přerušení ovládá jen display.

Náhodně se stane že přerušení se nevrátí do hlavní smyčky a dále funguje jen přerušení. Co může způsobit tento problém ?

Jinak programuji v mikroBasic PRO
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#2 Příspěvek od forbidden »

Je správně napsaná obsluha přerušení? Ukládáš do zálohy důležitý registry před obsluhou?
Uživatelský avatar
cervenyxp
Příspěvky: 15
Registrován: 26 čer 2012, 00:00

#3 Příspěvek od cervenyxp »

Přerušení je přesně podle návodů k mikrobasic a zálohu registru ? Prosím poraď
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#4 Příspěvek od forbidden »

Já ihned při skoku na přerušení ukládám zálohu W a STATUS, případně i jiný, je li to třeba.
Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

#5 Příspěvek od Chenzee »

... a není to tak, že obsluha přerušení je tak dlouhá, že se nestihne provést před vygenerováním dalšího požadavku přerušení. tzn. ukončí se přerušení a ihned se volá nové. Tobě se může zdát, že se ani neukončilo.
Žádnej učenej z nebe nespadl ...
Uživatelský avatar
cervenyxp
Příspěvky: 15
Registrován: 26 čer 2012, 00:00

#6 Příspěvek od cervenyxp »

Obsluha dlouhá by asi neměla být, zařízení x hodin jede a pak najednou se zacyklí v přerušení protože obsluha segmentovek maká, ostatní stojí
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#7 Příspěvek od forbidden »

A máš určitě vymaskovaný přerušení, který nepotřebuješ? Je možný, že třeba nastane přerušení kvůli změně stavu portu, který zrovna nemáš vymaskovaný a vzhledem k tomu, jeho obsluha ani nikdy neskončí. Taková změna na portu může nastat i rušením na nezapojeným/neošetřeným pinu.
Uživatelský avatar
cervenyxp
Příspěvky: 15
Registrován: 26 čer 2012, 00:00

#8 Příspěvek od cervenyxp »

T1CON a T2CON mám vynulovaný, tak by to snad mělo být
Uživatelský avatar
cervenyxp
Příspěvky: 15
Registrován: 26 čer 2012, 00:00

#9 Příspěvek od cervenyxp »

Napadlo mě to taky, ale divný je že pokud nastavím vnitřní oscilátor na 16MHz udělá to velmi rychle, pokud nastavím oscilátor na 8MHz udělá to náhodně,a přerušení volám prakticky u obou stejně protože upravuji kvuli blikání segmentovek děličku a registr
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#10 Příspěvek od forbidden »

Hmm, pokud to udělá "velmi rychle", tak to spusť v simulátoru, tam by to mělo, když to bude chyba v programu, taky skončit zacyklením, případně přetečením nějakýho registru.
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#11 Příspěvek od mikollar »

je mozne ze to aj blbo preklada, mam podobnu skusenost ale s mikroC, program krasne bezal no pocase sa seklo prerusenie.

Nakoniec som zistil ze je chyba v prekladaci. Presne ten isty kod v inom prekladaci fungoval nonstop.
Uživatelský avatar
cervenyxp
Příspěvky: 15
Registrován: 26 čer 2012, 00:00

#12 Příspěvek od cervenyxp »

Začínám se přiklánět taky k chybě překladače protože :

1. mám nastaven oscilátor na 16MHz a mikroBasicu řeknu 8MHz
- kousne se podelší době
2. mám nastaven oscilátor na 16MHz a mikroBasicu řeknu 16MHz
- kousne se rychle
3. mám nastaven oscilátor na 8MHz a mikroBasicu řeknu 16MHz
- kousne se rychle
4. mám nastaven oscilátor na 8MHz a mikroBasicu řeknu 8MHz
- kousne se po delší době

Proto asi další otázka, zkusit přeložit zvlášť ASM vygenerované mikroBasicem nebo holt napsat v jiném SW ?
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“