PDA

View Full Version : PIC18F25k22 configuration - I/O problem



DaTiNs
- 29th November 2012, 13:19
Hello all,

I started to use the PIC18F25k22 SSOP package. From the very beginning, I have a problem with using this microcontroller. I wrote a test program to try out all the peripherals that are on the PCB. The problem with reading switches that are connected to PORTA.6 I PORTA.7 and also is a problem at PORTC.7. I do not know what to do. This PIC18F25K22 is driving me crazy. The complete test program I attach to the message. Any help is welcome.

Thank a lot in advance!


define OSC 16
include "HPWM10_L.pbp"

#CONFIG
CONFIG FOSC = INTIO67
CONFIG PLLCFG = OFF
CONFIG PRICLKEN = ON
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRTEN = ON
CONFIG BOREN = OFF
CONFIG BORV = 285
CONFIG WDTEN = OFF
CONFIG WDTPS = 32768
CONFIG CCP2MX = PORTB3
CONFIG PBADEN = OFF
CONFIG CCP3MX = PORTB5
CONFIG HFOFST = ON
CONFIG T3CMX = PORTB5
CONFIG P2BMX = PORTB5
CONFIG MCLRE = INTMCLR
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG CP0 = ON
CONFIG CP1 = ON
CONFIG CP2 = ON
CONFIG CP3 = ON
CONFIG CPB = ON
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
#ENDCONFIG

DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 4
DEFINE LCD_BITS 4
DEFINE LCD_LINE 2

DEFINE I2C_SCLOUT 1
OSCCON = %01110000

OSCCON2 = %0000000
OSCTUNE = %10000000
T1CON = %00000111
ANSELA = 0
ANSELB = 0
ANSELC = 0

ADCON0 = 0
pause 200

RTC con %10100010
EPROM CON %10100000
LM75 CON %10010000
Strelica con 126


OUTPUT PORTC.2
OUTPUT PORTB.0
OUTPUT PORTB.5
OUTPUT PORTB.3

symbol BCKLIGHT = PORTC.3
symbol SDA = PORTC.0
symbol SCL = PORTC.1
symbol RELEJ1 = PORTB.7
symbol RELEJ2 = PORTC.4

symbol TASTLEVO = PORTC.5
symbol TASTOK = PORTC.6
symbol TASTDESNO = PORTC.7

symbol TASTGORE = PORTA.7
symbol TASTDOLE = PORTE.3

symbol TASTODRZAVANJE = PORTA.6

low bcklight
low relej1
low relej2

input tastlevo
input tastdesno
input tastdole
input tastgore
input tastodrzavanje
input tastok
'PROMENJIVE
X VAR BYTE
Seconds var byte
Minutes var byte
Hours var byte
Days var byte
Years var byte
Month var byte
Temp var byte
Temperatura var byte
Potenciometar VAR word
Frequency VAR WORD
DutyCycleL VAR WORD
LMcnt var byte
Frequency = 30000

low relej1
low relej2
gosub UpisiVreme

DutyCycleL=100

@ HPWM10 4, _DutyCycleL, _Frequency
@ HPWM10 3, _DutyCycleL, _Frequency
@ HPWM10 2, _DutyCycleL, _Frequency
@ HPWM10 1, _DutyCycleL, _Frequency
BCKLIGHT = 1
'relej1 = 1
'relej2 = 1
Main:
'Lcdout $fe, 1,hex2 hours,":",hex2 minutes,":",hex2 seconds, " ", dec3 Temperatura
lcdout $fe,$c0, dec TASTLEVO,dec TASTOK,dec TASTDESNO, dec TASTGORE ,dec TASTDOLE, dec TASTODRZAVANJE

pause 100
gosub UzmiVreme
gosub OcitajTemperaturu
Goto Main

UpisiVreme:
Seconds = $00
Minutes = $15
Hours = $23
Days = $01
Years = $01
Month = $01
I2cwrite sda,scl,rtc,$02,[seconds,minutes,hours,days,$02,month,years]
PAUSE 10
return

UzmiVreme:
i2cread sda,scl,rtc,$02,[seconds,minutes,hours,days,temp,month,years]
minutes.7=0:hours.7=0:hours.6=0:days.7=0:days.6=0: month.7=0:month.6=0:month.5=0
return

OcitajTemperaturu:
LMcnt = LMcnt + 1
if LMcnt = 4 then
I2CREAD sda, scl, lm75, 0,[Temperatura]
lmcnt = 0
endif
return
END