Kun CAN-viestissä vastaanotettu data ylittää arvon 327,67, se kääntyy arvoksi -327,68. Miksi näin tapahtuu?
Syynä ylivuotoon on se, että kyseessä on 16-bittinen allekirjoitettu luku. Kaikki Dashin kanavat ovat allekirjoitettuja, joten toimiakseen oikein se täytyy pakottaa olemaan 32-bittinen luku. Tapa tehdä tämä riippuu siitä, missä kohtaa CAN-viestiä kanava sijaitsee. Olen liittänyt kuvan, jossa on esimerkkejä siitä, miten Offset, Pituus, Maski ja Jakaja asetetaan sen mukaan, missä 'Fuel Used' -kanava sijaitsee.
Yksi huomioitava asia on, että jos kanava sijaitsee tavussa 0, sinun täytyy käyttää edistynyttä matematiikkaa saadaksesi oikean jakajan. Tässä tapauksessa tarvitset jakajaksi 65536, mutta CAN-mallipohjan jakajaparametrin maksimiarvo on 32767.
Jakajan syynä on se, että maski toimii kanavalla 'AND'-operaationa, ei bittisiirtona.
Allekirjoitettu/allekirjoittamaton -valintaruutu pitää edelleen valita oikein sen mukaan, onko vastaanotettu kanava allekirjoitettu vai ei.
Kommentit
0 kommenttia
Kirjaudu sisään jättääksesi kommentin.