fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Problema con pingui...
 
Avisos
Vaciar todo

Problema con pinguino/SDCC

2 Respuestas
1 Usuarios
0 Reactions
4,221 Visitas
fj_sanchez
Respuestas: 1083
Topic starter
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Muy buenas, hoy en un rato me ha dado por probar unas cosillas con mi placa pinguino y la verdad... llevo ya 3 horas y aún no he conseguido hacer lo que quería. Básicamente no soy capaz de acceder a los bits de los registros que están definidos en el fichero pic18f2550.h, por ejemplo
void spi_hw_init(char mode0, char mode1, char role){
SSPCON1Bits.SSPEN=0;

SSPCON1Bits.CKP = mode0&0x01;
SSPSTATBits.CKE = (~mode1)&0x01;
SSPCON1 = SSPCON1&(role&0x07);

if(role <= MASTER_FOSC_T2)
pinmode(SCK, OUTPUT);
else
pinmode(SCK, INPUT);
pinmode(SDI, INPUT);
pinmode(SDO, OUTPUT);
if(role == SLAVE_SS)
pinmode(SS, OUTPUT);

SSPCON1Bits.SSPEN = 1;
}

Me da estos errores:
C:/pinguino/tools/bin/../include/pic16/spihwlib.c:34: error 25: Structure/Union expected left of '.->'
C:/pinguino/tools/bin/../include/pic16/spihwlib.c:36: error 20: Undefined identifier 'SSPCON1Bits'
C:/pinguino/tools/bin/../include/pic16/spihwlib.c:36: error 25: Structure/Union expected left of '.->'
C:/pinguino/tools/bin/../include/pic16/spihwlib.c:37: error 20: Undefined identifier 'SSPSTATBits'
C:/pinguino/tools/bin/../include/pic16/spihwlib.c:37: error 25: Structure/Union expected left of '.->'
C:/pinguino/tools/bin/../include/pic16/spihwlib.c:49: error 20: Undefined identifier 'SSPCON1Bits'
C:/pinguino/tools/bin/../include/pic16/spihwlib.c:49: error 25: Structure/Union expected left of '.->'
Error mientras compila archivoC:pinguinomyLibsSPIv1

Estoy haciéndolo todo como si fuese una librería, es decir, tengo mi .c y mi .h en el directorio tools/include/pic16/. El fichero .h es así:
/**
* SPI Hardware library for pinguino project
*
* Author: Francisco J. Sánchez Rivas (FJ_Sanchez)
* fran [at] mipixel [dot] com
*
*/

#ifndef __SPIHWLIB_H__
#define __SPIHWLIB_H__

/* link the I/O library */
#pragma library io

#include <pic18fregs.h>
#include <digitalw.c>

#define SDI 0
#define SDO 9
#define SCK 1
#define SS 17

#define MASTER 0x00
#define MASTER_FOSC_4 0x00
#define MASTER_FOSC_16 0x01
#define MASTER_FOSC_64 0x02
#define MASTER_FOSC_T2 0x03
#define SLAVE 0x04
#define SLAVE_SS 0x05

#define FALLING 0x01
#define RISING 0x00

#endif /* __SPIHWLIB_H__ */

Y el fichero .c así:
/**
* SPI Hardware library for pinguino project
*
* Author: Francisco J. Sánchez Rivas (FJ_Sanchez)
* fran [at] mipixel [dot] com
*
*/

#ifndef __SPIHWLIB_H__
#include <spihwlib.h>
#endif

/**
* This function initializes the SPI hardware configuring polarity and edge
* of transition using Standard SPI Mode Terminology
*
* Mode0,Mode1 CKP CKE
* 0,0 0 1
* 0,1 0 0
* 1,0 1 1
* 1,1 1 0
*
* Also is possible to use LOW or HIGH for mode0 to indicate the idle state
* clock level, and RISING or FALLING to indicate when the transmit should
* take place.
*
* The role param could be any of MASTER, MASTER_FOSC_4, MASTER_FOSC_16,
* MASTER_FOSC_64, SLAVE or SLAVE_SS, where MASTER_FOSC_X indicates the SPI
* clock speed used. If you want to use the /SS pin in slave mode you should
* initialize the SPI using SLAVE_SS.
*/

void spi_hw_init(char mode0, char mode1, char role){
SSPCON1Bits.SSPEN=0;

SSPCON1Bits.CKP = mode0&0x01;
SSPSTATBits.CKE = (~mode1)&0x01;
SSPCON1 = SSPCON1&(role&0x07);

if(role <= MASTER_FOSC_T2)
pinmode(SCK, OUTPUT);
else
pinmode(SCK, INPUT);
pinmode(SDI, INPUT);
pinmode(SDO, OUTPUT);
if(role == SLAVE_SS)
pinmode(SS, OUTPUT);

SSPCON1Bits.SSPEN = 1;
}

char spi_hw_write(char c) {
char aux;
//PIR1Bits.SSPIF = 0;
aux = SSPBUF;
SSPBUF = c;
//while(PIR1.Bits.SSPIF == 0);
c = SSPBUF;
return c;
}

char spi_hw_read(void) {
return spi_hw_write(0x00);
}

Las cosas que hay comentadas en el .c es para que no haya tantos errores a la salida. La verdad empiezo a desesperarme, pretendía hacer una librería SPI hardware para pinguino, pero por momentos se me van quitando las ganas...

Responder
1 respuesta
fj_sanchez
Respuestas: 1083
Topic starter
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Vale, estoy echo un animal... el problema está en que es "XXXXbits" con minúsculas... siempre me pasan cosas así, jeje.

Responder
Compartir: