Pouze tuším, o co ti jde. Stav portu je možné číst bezprostředně následující instrukcí. Ale... Pokud jsou na portech parazitní kapacity, pak obecně musíš čekat, až se stav ustálí. To je ovšem obvykle problém nevhodně navržené konstrukce. A pokud máš třeba pullupem neošetřené vstupy, tak se stav portu nemusí ustálit nikdy. Pro objektivnější posouzení by bylo třeba schéma a více podrobností.
pouzivam vystupy RB0, RB1, RB2. Na nich jsou napojeny anody cislicovek a zaroven jsou zde tlacitka pres odpory 1k proti zemi. Katody jsou napojene na pos. registr 4094 a ovladany pres RB3 a RB4. Ostatni vystupy jsou odpojene.
Nastaveni OPTION_REG je:
MOVLW 0x05 ;00000101
MOVWF OPTION_REG ;předdělič /64 pro T0
takze pull-up odpory by mely byt pripojeny. Pri prvnim az cca tretim vyctenim portu je stav RB0-RB2 log0, az pri ctvrtem a dalsim je stav log1.
Toto se prodluzuje s delkou programu.
Nápad je jednoduchej. Nemáš správně definované logické úrovně na PB0- PB2. Žádný PullUp nepomůže, když ke vstupu připojíš diodu, která ti limituje vstupní logickou úroveň. A to je tvůj případ s displejem. Rozhodovací úroveň vstupů PIC je cca 1/2 Udd, tj běžně asi 2,5V. Jenže ty máš vstupní napětí sotva této úrovně dosahující. Pak se nesmíš divit, že jsou problémy.
Nemyslím, že je problém v jiném IO. Problém je podle mě v chybně navržené konstrukci. Můžeš zkusit to ošetřit programově. Tj. do posuvného registru před čtením tlačítek nahrnout '11111111'B
Ale optimální to asi není. Mimochodem, proč se neobrátíš na autora?
Zdravim,
neviem ci sa vyjadrim celkom presne a spravne ale:
ta 4094ka ti to LEDkovy displej "neutiahne"... a s tymi 330R odpormi v serii uz vobec nie... S tymto obvodom som robil pokusy ovladat nim LEDky - ako tak to da prud cca 1mA pre LEDky bez odporov. Pouzil som 0603 SMD /cervene/ LEDky. Ako tak svietili ale displej s tym asi moc nerozbehas...
diky za rady. Po naplneni pos. registru jednickami cteni klaves bezi. Funguje to jak s 74HCT164, tak s 4094 naprosto stejne. Ovsem problemy se presunuly na cteni snimacu. Autora jsem kontaktoval, ale nevi, kdy by mohl byt problem. Mohl bych poprosit o radu co zmenit v konstrukci, aby bylo vse spravne navrzeno a PIC se nechoval nevyzpytatelne?
Vůbec se nezmiňuješ, jakého charakteru jsou tvoje problémy se snímači. Dokonce tajíš o jaké snímače jde! Jakým programem je čteš?
Ostatně ta konstrukce je celkově velmi přitažená za vlasy, dík použitému softwarovému A/D převodníku. Každá druhá PIC má integrovaný 10bitový A/D a autor převodník pozoruhodně vlastnoručně "vyrábí". Důvod této skutečnosti mi zatím zůstal utajen.
Tuhle vstupni cast nepouzivam, Port A mam cely odpojen, v budoucnu by tam mela byt jen 4 rele. Pouzivam snimace SMT 160-30 pripojene na RB5 a RB6. Cteni snimacu fungovalo v poradku do te doby, nez jsem zacal davat do posuvneho registru same jednicky. A funguje tak zahadne, ze volam 2x stejnou rutinu a prvni probehne a druha ne. Pokud prvni preskocim a oremuju ji, funguje druha. Pokud preskoceni necham a odremuju kod, prestane to behat. Prijde mi to, ze to je zavisle na delce programu. Zrejme se asi ta druha rutina nestaci vykonat. Ovsem kdyz vynecham cteni tlacitek, cteni snimacu funguje. Vypada to, ze jsou opravdu nejak spatne definovane urovne na portu B a tim se nejak zpozduje cteni celeho tohoto portu. Ale nevim co s tim udelat. Snad jsem to popsal dostatecne. Moc dekuji za jakoukoliv radu.
Prostě je něco špatně. Nejspíš v programu, nebo stačí nižší napájecí napětí pro ten teplotní senzor. Pro rozbor je nezbytné skutečné schéma zapojení a skutečně použitý software. Jinak je to zbytečná ztráta času.
Zaslal: ne prosinec 16 2007, 6:02 Předmět: délka programu
Zmiňuješ se o různém chování programu při jeho rozdílné délce.
Neobsahuje program náhodou manipulaci s pozicí akt.instrukce pomocí PCL?
Pokud ano, jednoduchej fígl aniž by ses to snažil blíž pochopit je odpočítat si řádky s instrukcemi tak, aby funkční část tohoto kódu nebyla v blízkosti celých násobků 256-ti, tedy uložit tuto část tam, kde registr PCL nepřetéká.
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
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.