/Modules/Sensors/ALTIMET01A/SW/PIC/PIC16F887/main.c
0,0 → 1,66
#include <16f887.h>
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 20000000)
#use rs232(baud=57600, xmit=PIN_C6, rcv=PIN_C7)
 
#define CSN_SPI PIN_C2
int8 address, uiTadc, data ;
 
 
// SPI mode definitions.
#define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
#define SPI_MODE_1 (SPI_L_TO_H)
#define SPI_MODE_2 (SPI_H_TO_L)
#define SPI_MODE_3 (SPI_H_TO_L | SPI_XMIT_L_TO_H)
 
 
void main()
{
printf("Start\n\r");
 
setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_64);
 
output_high(CSN_SPI);
 
delay_ms(100);
 
while(true)
{
data = 5; //just to be sure that the value is updated
 
//Start temperature and pressure conversion
address = 0x24;
address &= 0x7F;
output_low(CSN_SPI);
delay_ms(1);
spi_write(address);
delay_ms(1);
spi_write(0x00);
delay_ms(1);
output_high(CSN_SPI);
delay_ms(2);
// get MSB for Pressure
address = 0x00;
address |= 0x80;
output_low(CSN_SPI);
delay_ms(1);
spi_write(address);
delay_ms(1);
data = spi_read(0x00);
delay_ms(1);
output_high(CSN_SPI);
 
printf("%u\n\r", data);
 
//uiTadc = (unsigned int) data << 8;
//printf("%u\n\r", uiTadc);
delay_ms(100);
}
 
}