Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Soft reset PIC

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
ferdo1
Neregistrovaný





PříspěvekZaslal: ne listopad 23 2008, 21:24    Předmět: Soft reset PIC Citovat

Je možné spraviť softwarový reset PIC - jedná sa o to, aby som počas prerušenia dokázal spraviť reset PICčka - aby mi po návrate z prerušenia nepokračoval odkiaľ tam skočil, ale išiel od adr. 00. Ďakujem
Návrat nahoru
Hula



Založen: Apr 01, 2008
Příspěvky: 47

PříspěvekZaslal: ne listopad 23 2008, 21:34    Předmět: Citovat

Zdravim, ja bych to viděl tak, že po skončení obsluhy přerušení nedáš return,retfie apod...ale goto nula.Asi takhle

org0
nula call init
.......program
....program

org4 ;preruseni
;obsluha preruseni
goto nula ;skok na adresu nula


Akorat ti asi ve stacku zustane adresa intrukce pred kterou prislo preruseni, ale to by nemelo vadit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Jenda_KL



Založen: Sep 10, 2008
Příspěvky: 1173
Bydliště: Kadaň

PříspěvekZaslal: po listopad 24 2008, 3:25    Předmět: Citovat

možná ještě nastavit StackPointer na začátek a vyklidit RAM.
Ale to by mělo v INIT být vždy.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: po listopad 24 2008, 8:50    Předmět: Citovat

PIC řady 16FXX a nižší nemají přístupný StackPointer, tutíž ho nejde nulovat a ani to není třeba. Zásobník je totiž cyklický. Stačí opravdu skok na inicializační adresu - obvykle 0x00. Ovšem je vhodné ještě před tímto skokem smazat příznak aktivního přerušení.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
ferdo1
Neregistrovaný





PříspěvekZaslal: po listopad 24 2008, 10:10    Předmět: Citovat

Vďaka, príznak prerušenia je zmazaný po aktivácii rutiny prerušenia. Len sa bojím, ak nepoužijem return, retfie aby pretečenie Stack nerobilo haluze, nakoľko prerušenie buď prepína dva výstupy (krátke stlačenie tlačítka) alebo spôsobí "vypnutie" činnosti PICčka (dlhé stlačenie tlačítka). V tomto prípade program beží v prerušovacej rutine, na krátke stlačenie nereaguje, pri dlhom by mal program bežať od začiatku. Procík je trvalo napájaný, takže k pretečeniu Stack časom určite príde - simulátor pri pretečení vyhadzoval chybu.
Návrat nahoru
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: po listopad 24 2008, 10:27    Předmět: Citovat

Nenapsal jsi, o jaký PIC se jedná. Jak jsem ale řekl, u řady 16FXX a nižší je osmiúrovňový cyklický stack, který po přetečení začíná od začátku. Přetečení není nijak kontrolováno ani signalizováno. Nemusíš to tedy hlídat jinak, než že za standardního běhu programu nesmí být vnoření větší než 8x. Ty nemůžeš ovlivnit na jakou pozici zásobníku tvůj call uloží návratovou adresu a nezajímá tě to. Pokud simulátor hlásí přetečení stacku, tak to nejspíš není chyba, ale pouze varování. Reálný procesor se o této nastalé situaci ani nedozví a to přetečení znamená, že se ukazatel zásobníku nastaví zase na počátek.

Naposledy upravil jankop dne po listopad 24 2008, 11:18, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
Atlan



Založen: May 10, 2004
Příspěvky: 4513
Bydliště: Košice

PříspěvekZaslal: po listopad 24 2008, 10:39    Předmět: Citovat

Inak musi to ist urobiť aj inako Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
meereck



Založen: Mar 09, 2008
Příspěvky: 55

PříspěvekZaslal: po listopad 24 2008, 13:23    Předmět: Citovat

a co treba nejaky output pin privest na tranzistor, kterym se bude davat na log0 MCLR pin (na kterem bude samozrejme pullup z Vcc)? Nebo pouzit Watchdog (ale to v tvem pripade okamziteho resetu nelze pouzit)?
Kazdopadne u PIC18 se da pouzit RESET instrukce.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ferdo1
Neregistrovaný





PříspěvekZaslal: po listopad 24 2008, 21:28    Předmět: Citovat

jankop> Ide o 16F627. Práve o to vnorenie 8x ide - vždy po resete skokom na 00 by ostala jedna úroveň visieť, preto chcem robiť ten reset.
Ako som písal, program bude bežať stále a je reálny predpoklad, že k tomu 8násobnému vnoreniu príde.
Skúsim to prepísať a otestovať na reál procíku.
Nad Watchdog som rozmýšľal, nakoniec to možno spravím tak, len sa mi nechcelo zbytočne komplikovať program.
Návrat nahoru
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: po listopad 24 2008, 21:46    Předmět: Citovat

Kolikrát ještě potřebuješ zopakovat, že nic nezůstane viset. Ukazatel zásobníku se ani při resetu nenuluje. Jeho stav může být po resetu naprosto náhodný. S ohledem na cykličnost je naprosto jedno, v jaké počáteční hodnotě se nachází. Opravdu nerozumíš tomu, že zásobník prostě ošetřovat nemusíš? Co pořád vymýšlíš nesmysly? Když chceš skočit ven z přerušení, tak to prostě udělej. Stack ti v tom naprosto nebrání.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.19 sekund