forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
PIC16F690: zahadne spravanie sa portu RA2

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Dybbuk
Přispěvatel
Přispěvatel


Založen: 18.3.2016
Příspěvky: 28

PříspěvekZaslal: 21 září 2016, 11:18    Předmět: PIC16F690: zahadne spravanie sa portu RA2 Citovat

Zdravim vas,
jedna sa o riadenie HD44780 pre jednoduchost v tomto priklade 8-bitove. Program prestal fungovat po cca roku (nahodne necakane). Po dlhom patrani som zistil ze problem je PORTA,2 na ktorom je pripojeny RS pin. Najprv uryvok programu, potom popis problemu.
Hned na zaciatku mam:
kód:
#DEFINE EN PORTA,0
#DEFINE RS PORTA,2

Zapis dat vyzera takto (data su vo W):
kód:

ZAPIS_DATA
    BSF RS ;RS = 1 -> posielam do displeja data
    BSF EN
    MOVWF PORTC
    BCF EN
    MOVLW D'255'
    CALL DELAY
    BSF EN
RETURN


A potom volanie v hlavnom programe:
kód:

        CALL LCD_INIT
        MOVLW A'a'
        CALL ZAPIS_DATA


No a problem je ze RS (PORTA,2) je pocas celeho vykonavania programu v log 0 (napriek instrukcii BSF RS v procedure ZAPIS_DATA // otestovane LED diodou i osciloskopom na vystupe. Aj bez pripojeneho LCD), takze namiesto dat sa do displeja posielaju stale len instrukcie. LCD_IINT zbehne bez problemov. Podozrenie na chybny RA2 som vylucil vlozenim instrukcie
kód:

BSF RS
CALL DELAY
BCF RS

priamo do hlavneho programu mimo proceduru ZAPIS_DATA kedy LED na vystupe blikla.
Uz len dodam ze:
1. program v simulatore funguje a v minulosti fungoval aj na LCD
2. ak hodim RS na iny port, napr #DEFINE RS PORTB,6 vsetko funguje ako ma
3. vymena LCD a ani vymena PIC nepomohla
4. OPTION_REG ma hodnotu 0xFF (nemenim nic) a vsetky piny su OUT.

Napada niekomu nejaka teoria tohto chovania pls?
Dakujem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 101

PříspěvekZaslal: 21 září 2016, 14:57    Předmět: Citovat

Musíš vložit vždycky celej program, ne jenom úryvky. Z tohohle se nedá poznat jak máš co zkonfigurovaný, RA2 je T0CKI a těch věcí ke kontrole je tak poměrně dost.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1449

PříspěvekZaslal: 21 září 2016, 21:29    Předmět: Citovat

"Program prestal fungovat po cca roku (nahodne necakane)"

tak asi nebude problém v zdrojáku, ale asi vplyvom EMI niečo na procáku odišlo. Načo analyzovať zdroják, ktorého preklad (HEX) bol dlho funkčný?
Čo si od analýzy zdrojáku sľubuješ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Dybbuk
Přispěvatel
Přispěvatel


Založen: 18.3.2016
Příspěvky: 28

PříspěvekZaslal: 21 září 2016, 22:36    Předmět: Citovat

Martin: V podstate suhlasim, takto som tiez uvazoval a preto som kupil novy PIC a problem pretrvaval, preto hladam chybu inde.
Mahoney: Nepriamo si ma naviedol k rieseniu, tentokrat pomohlo pridat
kód:

CLRF ANSEL
CLRF ANSELH

a problem sa vyriesil, no co ma rochu matie je, ze druhy zdrojak napisany v C stale nefunguje a tam mam nastavenie pre ANSEL. Zajtra sa na to este pozrem a ked tak sa ozvem a poslem aj zdrojak.

Zatim dik,

PS: vieme na zaklade akej logiky PIC rozhoduje ktory port bude digital a ktory analog v pripade ze to pouzivatel nenastavi?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 101

PříspěvekZaslal: 22 září 2016, 13:34    Předmět: Citovat

Nerozhoduje podle žádné logiky. V datasheetu je u všech SFR registrů uvedeno výchozí nastavení po startu či restartu, pokud na něj nesáhneš, zůstane ve stavu po initu. Některé registry nemusí procházet interním initem, stejně tak GPR registry mají zpravidla náhodné hodnoty (proto je vhodné při deklaraci proměnných tyto zároveň inicializovat).

Tak či tak, jednou za čas je vhodné v programu obnovit požadované hodnoty ve všech používaných registrech, obzvláště pokud se jedná o zařízení, která běží delší dobu a/nebo v zarušeném prostředí. O vhodnosti takového opatření jsi se právě sám přesvědčil a jsem si jist, že si toto bezpečně zapamatuješ - vlastní zkušenosti bývají nejcennější (a zdaleka nejsi sám koho vypekly ANSELx registry, taky patřím "k členům tohoto klubu" Very Happy )

Jinak samozřejmě není zač Wink Jsem rád že tě to navedlo k řešení.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můž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.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)