/Modules/Sensors/ALTIMET01A/SW/PIC/PIC16F887/main.c
11,9 → 11,7
*/
 
#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)
20,54 → 18,96
#define SPI_MODE_2 (SPI_H_TO_L)
#define SPI_MODE_3 (SPI_H_TO_L | SPI_XMIT_L_TO_H)
 
unsigned int16 a0;
unsigned int16 b1;
unsigned int16 b2;
unsigned int16 c12;
 
void main()
{
printf("Start \r\n");
 
setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_64);
int MPL_init()
{
unsigned int8 a0_MSB, a0_LSB;
unsigned int8 b1_MSB, b1_LSB;
unsigned int8 b2_MSB, b2_LSB;
unsigned int8 c12_MSB, c12_LSB;
 
output_high(CSN_SPI);
output_low(CSN_SPI);
 
delay_ms(100);
spi_write(0x88); // get MSB for a0
a0_MSB = spi_read(0x00);
spi_write(0x8A); // get LSB for a0
a0_LSB = spi_read(0x00);
 
while(true)
{
data = 5; //just to be sure that the value is updated
spi_write(0x8C); // get MSB for a0
b1_MSB = spi_read(0x00);
spi_write(0x8E); // get LSB for a0
b1_LSB = spi_read(0x00);
 
//Start temperature and pressure conversion
address = 0x24;
address &= 0x7F;
spi_write(0x90); // get MSB for a0
b2_MSB = spi_read(0x00);
spi_write(0x92); // get LSB for a0
b2_LSB = spi_read(0x00);
 
spi_write(0x94); // get MSB for a0
c12_MSB = spi_read(0x00);
spi_write(0x96); // get LSB for a0
c12_LSB = spi_read(0x00);
 
spi_read(0x00);
output_high(CSN_SPI);
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);
a0 = ((int16) a0_MSB << 8) + a0_LSB;
b1 = ((int16) b1_MSB << 8) + b1_LSB;
b2 = ((int16) b2_MSB << 8) + b2_LSB;
c12 = ((int16) c12_MSB << 8) + c12_LSB;
}
 
float MPL_get_pressure()
{
int8 LSB_data, MSB_data;
int16 ADC_pressure, ADC_temperature;
 
output_low(CSN_SPI); //Start temperature and pressure conversion
spi_write(0x24);
spi_write(0x00);
output_high(CSN_SPI);
 
printf("%u \r\n", data);
delay_ms(3);
output_low(CSN_SPI); // get MSB for Pressure
spi_write(0x80);
LSB_data = spi_read(0x00);
spi_write(0x82); // get LSB for Pressure
MSB_data = spi_read(0x00);
 
//uiTadc = (unsigned int) data << 8;
//printf("%u\n\r", uiTadc);
delay_ms(100);
}
ADC_pressure = ((int16) MSB_data << 8) + LSB_data; // conversion of 8bit registers to 16bit variable
 
spi_write(0x84);
LSB_data = spi_read(0x00);
spi_write(0x86); // get LSB for Temperature
MSB_data = spi_read(0x00);
spi_read(0x00);
output_high(CSN_SPI);
 
ADC_temperature = ((int16) MSB_data << 8) + LSB_data; // conversion of 8bit registers to 16bit variable
 
// printf("%lX %lX\r\n", ADC_pressure, ADC_temperature);
 
return (a0 + (b1 + c12 * ADC_temperature) * ADC_pressure + b2 * ADC_temperature );
}
 
void main()
{
printf("Start \r\n");
setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_64);
output_high(CSN_SPI);
delay_ms(100);
 
MPL_init();
 
while(true)
{
printf("%f \r\n", MPL_get_pressure());
delay_ms(100);
}
}
/Modules/Sensors/ALTIMET01A/SW/PIC/PIC16F887/main.hex
1,52 → 1,144
:1000000000308A00D3280000533A613974100D057E
:1000000003308A00F22B0000533A613974100D0559
:10001000000083168613831286130830F800102818
:100020000000F8172128F813A70C03188617031CE3
:100020000000F8172128F813BA0C03188617031CD0
:100030008613781721287813F80B14281F2800003E
:1000400086173F308400840B23280000F81B1328F8
:10005000781B1B280800831603178C170C1400004C
:10006000000083120C087F3903196F280313A400C2
:1000700003170D080313A50003170F080313A600A9
:100080002408A7000920250803178D00031326085C
:10006000000083120C087F3903196F280313A900BD
:1000700003170D080313AA0003170F080313AB009F
:100080002908BA0009202A0803178D0003132B083A
:1000900003178F0083168C170C14000000008312C6
:1000A0000C0D0E0D7F3903196F280313A4000317DD
:1000B0000D080313A50003170F080313A600240857
:1000C000A7000920250803178D000313260803172E
:1000A0000C0D0E0D7F3903196F280313A9000317D8
:1000B0000D080313AA0003170F080313AB00290848
:1000C000BA0009202A0803178D0003132B08031711
:1000D0008F008D0A03198F0A03132B2803170313AC
:1000E0008A110A12F72824308400831300080319A8
:1000E0008A110A12162C2F3084008313000803197A
:1000F00086280230F800F701F70B7C28F80B7B28E4
:100100009730F700F70B8228800B79280800270822
:10011000F801260203188F282608F7009B28F7010C
:100120000830A800A60DF70D270877020318F7007E
:10013000F80DA80B9228080078082408A60064305F
:10014000A70087207708A40078083030031DAF2867
:10015000A51CB628A519B628251A2030B228A51145
:1001600025122514F8077808A70009202408A600FE
:100170000A30A70087207708A40078083030031DD4
:10018000C728A519CB28251CCB28251A2030F8070D
:100190007808A70009203030A4072408A700092008
:1001A0008A110A126D29840183131F30830571306F
:1001B00083168F000F088613831286178316031782
:1001C0000908C039890003131F129F12003003175A
:1001D00088008312870188018901FF300313A3007F
:1001E000043003178D0000308F0003132B28941266
:1001F000A31223088316870083122316230883166D
:1002000087008312A31123088316870022308312EC
:100210009400403083169400831223112308831620
:100220008700831207156430A40073200530A200F4
:100230002430A000A0132311230883168700831203
:1002400007110130A4007320200893008316140CBA
:10025000031C272901308312A40073201308930183
:100260008316140C031C312901308312A40073205F
:100270002311230883168700831207150230A40078
:100280007320A001A017231123088316870083126F
:1002900007110130A4007320200893008316140C6A
:1002A000031C4F2901308312A4007320130893010B
:1002B0008316140C031C592983121308A200013061
:1002C000A4007320231123088316870083120715C7
:1002D0002208A4001B30A5009C282030A70009207C
:1002E0000D30A70009200A30A70009206430A400BF
:0602F000732016296300D3
:100100009730F700F70B8228800B79280800281118
:10011000280883168700831207111308883093007C
:100120008316140C031C9128831213089301831661
:10013000140C031C982883121308A90013088A3092
:1001400093008316140C031CA22883121308930136
:100150008316140C031CA92883121308AA00130881
:100160008C3093008316140C031CB32883121308DD
:1001700093018316140C031CBA2883121308AB00D6
:1001800013088E3093008316140C031CC4288312AA
:10019000130893018316140C031CCB288312130835
:1001A000AC001308903093008316140C031CD52860
:1001B0008312130893018316140C031CDC2883128A
:1001C0001308AD001308923093008316140C031C1F
:1001D000E6288312130893018316140C031CED28E0
:1001E00083121308AE001308943093008316140C86
:1001F000031CF7288312130893018316140C031CA5
:10020000FE2883121308AF0013089630930083165C
:10021000140C031C08298312130893018316140C71
:10022000031C0F2983121308B000130893018316CF
:10023000140C031C18298312281128088316870020
:1002400083120715B2012908B100B200B1012A08D2
:100250003107A0003208A1000318A10AB2012B083F
:10026000B100B200B1012C083107A2003208A3008E
:100270000318A30AB2012D08B100B200B1012E0883
:100280003107A4003208A5000318A50AB2012F08FF
:10029000B100B200B10130083107A6003208A70052
:1002A0000318A70A8A110A12362C1030B500F7017C
:1002B000FA01B20CB10C031C63293308F7070318C9
:1002C000FA0A3408FA07FA0CF70CF90CF80CB50B1B
:1002D000592908002811280883168700831207115E
:1002E0001308243093008316140C031C7429831202
:1002F000130893018316140C031C7B298312281105
:10030000280883168700831207150330AF00732077
:1003100028112808831687008312071113088030DC
:1003200093008316140C031C922983121308930163
:100330008316140C031C992983121308A9001308AF
:10034000823093008316140C031CA3298312130814
:1003500093018316140C031CAA2983121308AA0004
:10036000B0012A08AF00B000AF0129082F07AB0089
:100370003008AC000318AC0A1308843093008316CD
:10038000140C031CC0298312130893018316140C48
:10039000031CC72983121308A90013088630930091
:1003A0008316140C031CD12983121308930183169E
:1003B000140C031CD82983121308AA0013089301F4
:1003C0008316140C031CE1298312281128088316B4
:1003D000870083120715B0012A08AF00B000AF01F3
:1003E00029082F07AD003008AE000318AE0A270811
:1003F000B2002608B1002E08B4002D08B300552124
:100400007908FA0078082207AF002308B0007A08BC
:1004100003187A0FB0073008B2002F08B1002C087B
:10042000B4002B08B30055217908FA00780820079A
:10043000AF002108B0007A0803187A0FB00725082A
:10044000B2002408B1002E08B4002D08B3005521D5
:100450007908FA0078082F07F80030080318300FE1
:10046000FA077808AF007A08B0008E30F70030083D
:10047000F8002F08F900FA01F808031D492A790845
:10048000F800F9010830F702F808031D492AF701BE
:10049000512A0310F81B502AF90DF80DF703492AC9
:1004A000F8138A110A12372CF701F801F901FA0141
:1004B000C201C301C401C501410840043F043E0418
:1004C0000319922A2030C6000310BA0DBB0DBC0DD3
:1004D000BD0DC20DC30DC40DC50D41084502031D60
:1004E0007B2A40084402031D7B2A3F084302031D68
:1004F0007B2A3E084202031C8C2A3E08C2023F08A7
:10050000031C3F0FC3024008031C400FC4024108F4
:10051000031C410FC5020314F70DF80DF90DFA0D78
:10052000C60B642A42308400831308000408B2001A
:100530003108B4000319282B3008BD002F08BC0077
:100540002E08BB002D08BA00C101C0012030BF0039
:100550008230BE003A0803191A2BC2003E08031964
:100560001A2BC2070318BB2A7F30C202031C1A2BA6
:1005700003191A2BBF2A8130C20703181A2B42080D
:10058000F700F801F901FA013B08C600C6173C085C
:10059000C5003D08C4001830C200C301441CE82A4D
:1005A0004108FA07031CDA2AF90A031DDA2AF80AB5
:1005B0000319C3174008F907031CE12AF80A0319B5
:1005C000C3173F08BC00BC173C08F8070318C31743
:1005D000C30DF80CF90CFA0CC60CC50CC40C0310B6
:1005E000C20BCD2A0130F70703181A2BF81BFF2A7C
:1005F000C60DFA0DF90DF80DF70303191A2BC61FD6
:10060000102BFA0A031D102BF90A031D102BF80AF0
:10061000031D102BF80CF90CFA0CF70A03191A2B0E
:100620003B08C3003F08C306C31F182BF8171E2B37
:10063000F8131E2BF701F801F901FA017A08B0004E
:100640007908AF007808AE007708AD00B40B9C2A9B
:100650003008BD002F08BC002E08BB002D08BA00D2
:100660003A08B63CBA00FA013B08BE00BB170310BB
:10067000BB0CBC0CBD0CFA0CF90CF80CF70CBA0B4B
:10068000372BBE1F4E2BF709F809F909FA09F70AAB
:100690000319F80A0319F90A0319FA0A7A08B000CB
:1006A0007908AF007808AE007708AD00B01F652B61
:1006B000B203B216AD09AE09AF09B009AD0A03190C
:1006C000AE0A0319AF0A0319B00A3B30B9009A30D9
:1006D000B800CA30B700B6010A30B40031080319B7
:1006E000B20A3008BD002F08BC002E08BB002D0840
:1006F000BA003908C1003808C0003708BF00360802
:10070000BE0054220008AD00840A0008AE00840A2E
:100710000008AF00840A0008B000FD308407F70825
:10072000031DA52B310A34020319A52B3208031926
:10073000A72B0F39340203199F2B0318D72BB21B99
:10074000D72B321BA72B2030D32B2030B205B21E63
:10075000B52BB2123108031DB2037708B2002D3059
:10076000BA0009203208F700B20131083402031D33
:10077000C32B7708B2002E30BA0009203208F700E8
:100780002030B20500303030B21ED32BB212310807
:10079000031DB2037708B2002D30BA0009203208D9
:1007A000F700B2013030F7077708BA00092039089E
:1007B000BD003808BC003708BB003608BA00C101CC
:1007C000C001BF010A30BE0054227A08B90079087E
:1007D000B8007808B7007708B600B40B712B8A11FF
:1007E0000A124C2C840183131F3083057130831649
:1007F0008F000F08861383128617831603170908C4
:10080000C039890003131F129F120030031788009C
:100810008312870188018901FF300313A800043087
:1008200003178D0000308F0003132B289412A81299
:100830002808831687008312281628088316870045
:100840008312A8112808831687002230831294008F
:1008500040308316940083122811280883168700DD
:10086000831207156430AF00732087286A29770840
:10087000A9007808AA007908AB007A08AC00893092
:1008800084007A08B0007908AF007808AE007708D5
:10089000AD000230B100962A2030BA0009200D3098
:1008A000BA0009200A30BA0009206430AF00732072
:0408B000362C63007F
:04400E00F52CFF3F4F
:00000001FF
;PIC16F887
;CRC=E2BF CREATED="23-II-13 11:10"
;CRC=EED4 CREATED="24-II-13 00:54"
/Modules/Sensors/ALTIMET01A/SW/PIC/PIC16F887/main.pjt
17,8 → 17,8
0=0000 %S 0 0 796 451 3 0
[Opened Files]
1=main.c
2=
3=C:\Program Files\PICC\devices\16F887.h
2=..\..\AVR\ATmega328\main.c
3=
4=
5=..\ds1820.c
6=..\1wire.c
25,7 → 25,7
7=
[Target Data]
OptionString=-p +FM
FileList=d:\mlab\modules\sensors\altimet01a\sw\pic\pic16f887\main.c
FileList=D:\MLAB\Modules\Sensors\ALTIMET01A\SW\PIC\PIC16F887\main.c
[Units]
Count=1
1=main (main)