Jak jsem si nabehnul aneb double v pacalu na AVR

Pavel Kutina hw na prelude.cz
Sobota Červenec 19 14:52:11 CEST 2014


Zdravim,

tak si musim postezovat:

Zakoupil jsem sobe ultrapresne tlakove cidlo MEAS MS5611, ze supliku 
vyhrabnu Arduino Pro Mini, osazene ATmegou 328P s tim, budu merit tlak a 
teplotu a na UART si posilat namerena data.

Protoze s Arduinem nejsem kamarad (ale ta mrnava desticka s 328P se mi 
libi), pripajel jsem na nej ISP konektor, zrusil cely arduinovsky 
bootloader a zacal psat v Mikropascalu pro AVR, hex do toho sypu pres 
avrdude, dale sama pozitiva a socialni jistoty. Jako voditko jsem mel C 
example.

Vcelku to slo, az do te doby, nez jsem zjistil, ze v examplu je pro pet 
promennych v zaverecnych vypoctech pouzita nehezka obludnost:

double P; // compensated pressure value
double T; // compensated temperature value
double dT; // difference between actual and measured temperature
double OFF; // offset at actual temperature
double SENS; // sensitivity at actual temperature

A ja jako na potvoru ve svem oblibenem kompilatoru od MikroE mam 
nejdelsi datovy typ 32 bitu... Protoze jde o presnost, nejak moc 
nepripada v uvahu, ze bych to nekde zkrouhnul a spodni bity zahodil. 
Nenapada vas nekoho, jak podobnou zradu ocurat? Urcite by slo promennou 
rozhodit na 32bit MSB a LSB, jen nevim, jak bych s tim pak dal pocital.

Kdyby se nekdo chtel pokochat:
Datasheet MS5611:
http://www.amsys.info/sheets/amsys.en.ms5611_01ba03.pdf
Example code:
http://www.amsys.info/sheets/amsys.en.an520_e.pdf

Asi nezbyde, nez tam ten arduinovsky loader nacpat zpatky (Arduino 
uint64_t umi) a napsat to v tom Wiringu, ale velkou radost z toho nemam, 
pripadam si dost jako idiot.

Pavel Kutina


Další informace o konferenci Hw-list