Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] PIC GIPO functionality problem

Status
Not open for further replies.

ragi

Junior Member level 3
Joined
Nov 18, 2015
Messages
29
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
251
Hi all ,

I have written code for PIC18LF24K22 to work as slave. When I sent data from SPI master(CHEETAH Adaptor) it is not able to receive the data. So I checked input functionality of receiving pin by just forcing vdd to that pin and checked the port value in register , it was showing 0.

So same thing i tried on my pic18f45k20 evm board. I checked PORT A ,PORTB . PORTC. For PORTC i am able to check input in register , but not for PORTA and PORTB. Have attached the code below which i used for this.
Please Suggest if I need to do more on Coding/Hardware. Thanks in Advance


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "p18f45k20.h"
#pragma config PWRT = OFF, BOREN = SBORDIS, BORV = 30                       // CONFIG2L
void main (void)
{
  
unsigned char data ;
  TRISC = 0b11111111;
  TRISD = 0b00000000;
  TRISA = 0b11111111;
 
 LATDbits.LATD0 = 0; // for led bit
 data =  PORTAbits.RA5 ;
if ( PORTAbits.RA5 == 1 )
 LATDbits.LATD0 = 1;
  /* Light the LEDs */
 
  while (1)
    ;
}



program for spi as slave :


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#pragma config WDTEN = OFF, WDTPS = 32768 // CONFIG2H
#include <p18lf24k22.h>
#include "clock.h"
#include "Uart_1.h"
#include <spi.h>
 
#define DEBUG 1
 
#define HIGH 1
#define LOW 0
 
#define LED LATAbits.LATA1
#define TUNE_READY LATAbits.LATA0
 
#define D_POT_1 LATCbits.LATC2
#define D_POT_2 LATCbits.LATC1
#define D_POT_3 LATCbits.LATC0
 
#define RF_Sw_A1 LATAbits.LATA4
#define RF_Sw_A2 LATAbits.LATA5
#define RF_Sw_B1 LATAbits.LATA6
#define RF_Sw_B2 LATAbits.LATA7
 
 
unsigned char SPI_Recv[10];
 
void main(void) {
    
    unsigned char i,channel = 0, data = 0 ,w , temp;
    CloseSPI2();
for(w=0;w<25;w++)
SPI_Recv[w]=0;
 
    TRISAbits.TRISA1 = 0; //Makes 1st bit of PORTA Output for LED
 
    TRISBbits.TRISB0 = 1;
    TRISBbits.TRISB1 = 1;
    TRISBbits.TRISB2 = 1;
LED = HIGH ;
while(1)
{
temp = PORTBbits.RB0 ;
channel = PORTAbits.RA1 ;
data = PORTBbits.RB2 ;
}
 
    if(clock_configure(16))     //set the CPU CLOCK to 16Mhz
    {
        for(i=3; i>1; i--)
        {
            //Blinking Led twice to indicate clock config Done/
            LED = LOW; //Makes 1st bit of PORTA at Logic Low //RED_LED off
            delay();
            LED = HIGH; //Makes 1st bit of PORTA at Logic High //RED_LED on
            delay();        
    }
}
OpenSPI2(SLV_SSON,MODE_00,SMPEND);
for(i=0;i<100;i++);
temp = ReadSPI2();
 
while(1)
{
       /* while (!DataRdySPI2());
    LED = LOW;
       getsSPI2(SPI_Recv,10);
 
       while (!DataRdySPI());
       LATDbits.LATD1 = ~LATDbits.LATD1  ;
       temp = ReadSPI(); //End of program
*/
}
    CloseSPI2();
}//MAIN

 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top