Dybbuk Přispěvatel

Založen: 18.3.2016 Příspěvky: 28
|
Zaslal: 21 září 2016, 11:18 Předmět: PIC16F690: zahadne spravanie sa portu RA2 |
|
|
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. |
|