Postitused: 578
Teemad: 140
Liitus: Dec 2009
(04-02-2015, 09:08 PM)admin Kirjutas: (04-02-2015, 08:50 PM)A.R. Kirjutas: Aga kust tuli see 0x32 see on veel (eel)viimane probleem.
sõnumi ID järgi valid MAVLINK_MESSAGE_CRCS massiivist.
Käesoleva sõnumi ID on 0, seega massiivist võtad index 0 pealt väärtuse 50 (0x32 hexis). MAVLINK_MESSAGE_CRCS väärtust kasutad ainult crc kalkuleerimisel ja saadetavas (vastuvõetavas) sõnumisse seda ei panda.
Kood: MAVLINK_MESSAGE_CRCS=[
50,124,137,0,237,217,104,119,0,0,0,89,0,0,0,0,0,0,0,0,214,159,220,168,
24,23,170,144,67,115,39,246,185,104,237,244,222,212,9,254,230,28,28,
132,221,232,11,153,41,39,214,223,141,33,15,3,100,24,239,238,30,240,183,
130,130,0,148,21,0,243,124,0,0,0,20,0,152,143,0,0,127,106,0,0,0,0,0,0,
0,231,183,63,54,0,0,0,0,0,0,0,175,102,158,208,56,93,0,0,0,0,235,93,124,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,
241,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,49,
170,44,83,46,0]
https://github.com/marhar/eastbay-mavlin...eam.py#L46 Tänud, seda ma tean. Kirjutasin ka aga vast jäi abistajatel 2 silma vahele (tervelt 65mm ju! )
Sain tuttava profielektrooniku abiga töötava C-keelse kalkulaatori. Tõesti töötab ! Selgub, et C teeb mingit automaagilist ja talle sobivat muutujate lõdva randmega muundamist 16-bitisest formaadist 8-bitisesse ja vastupidi. Selguse mõttes kirjutas Eiko koodi nati ringi, et kõik oleks 16-bitine. Tõlgin selle kohe, kui aega saan asmi ja riputan siia üles. Ehk on siis ka itestele "dinosaurustele" abiks Muide, asmi tundmine võib vaid jama kaela tuua, kuskilt lugesin,et sääraseid friike peetakse potensiaalselt kahjulikeks (teavad liiga palju). Ehk siiski KaPo nii ei arva...
Vist mainisn, et koodi mõte on lugeda taeva heleduse analüsaatori näitu (Unihedron, tulemus= magnituudi kaaresekundi kohta), GPSi koordinaate ja võimalusel ka lennukõrgust ning kiirust kopterile pandud meerikult et registreerida valgusreostuse taset Tallinna kesklinna tänavatel öisel ajal.
Vslmid koodi riputan ka siia üles. Hetkel oskan juba Unihedroniga ja tavalise GPS-vastuvõtjaga sotid sirgeks rääkida ja SD-kaardile kirja panna.
Ärge siis UFOsid kahtlustage, kui kesklinna taevas mingil ööl imelikke tulesid näha - see võin olla mina (kui lennuamet loa annab)...
Postitused: 434
Teemad: 48
Liitus: Dec 2009
Ääremärkusena:
C - l on kõik viiruse tunnused, võiks öelda et parim viirus üldse kuna levib nii mööda arvuteid kui inimesi !
Sest miks kasutada iganenud definitsioone nagu
byte, word, dword...
selle asemel ikka
int (16 või 32 bitti)
unsigned int (seesama aga..mis aga ?)
short int (8 bitti või 16 bitti)
char (hetkel vist 8 bitti aga noh nt unicode põhjal võiks olla ju 16 bitti ? mida char tähendaski.. ? )
jne, sest siis saab ju teha asja PLATVORMIST SÕLTUVAKS mis küll minu teada läheb C mõttega vastuollu aga noh kokkuvõttes äkki mõte ei olnud see mida me eeldame vaid hoopis midagi õelamat
Postitused: 334
Teemad: 26
Liitus: May 2011
05-02-2015, 08:35 AM
(Seda postitust muudeti viimati: 05-02-2015, 08:43 AM ja muutjaks oli A.R..)
(05-02-2015, 12:56 AM)madis Kirjutas: Sest miks kasutada iganenud definitsioone nagu
byte, word, dword...
teha asja PLATVORMIST SÕLTUVAKS
Eks ta nii ole. Ostad PICi programmaatori koos translaatoriga ja
see ei tunnista byte, word, dword
tahab hoopis short ja long
On nõus ka tekstiga
unsigned long long tmp
Seda tingimusel et
// tmp^= (tmp<<4);
tmp = (tmp ^ (tmp << 4)) &0xFF; //1. ok Annab 7F1C
unsigned char, mis võiks sobida, annab vale koodi.
Seda MPLAB IDE translaatoriga.
Kui sama asja teha lcc-32 all siis unsigned char on sobiv.
ja seal sobib ka tmp^= (tmp<<4);
Jälle on siis tulnud aeg vaadata DisASMiga mis seal TEGELIKULT toimub.
Niipalju siis PLATVORMIST ja SÕLTUVUSEST
Aga see-eest annab MPLAB võimaluse saada see programm ka ASMina.
Olen kuulnud et mõned mehed kirjutavad selles keeles.
Õnneks vist mitte masinkäskudes perfolinti nagu 1968. a. tuli teha.
Postitused: 434
Teemad: 48
Liitus: Dec 2009
05-02-2015, 02:32 PM
(Seda postitust muudeti viimati: 05-02-2015, 06:39 PM ja muutjaks oli madis.)
Lõppsõnaks ütleks:
main(a,b)char**b;{int c=1,d=c,e=a-d;for(;e;e--)_(e)<_( c)?c=e:_(e)>_(d)?d=e:7;
while(++e<a)printf("\xe2\x96%c",129+(**b=8*(_(e)-_( c))/(_(d)-_( c))));}
HELL YEAH !
Postitused: 578
Teemad: 140
Liitus: Dec 2009
05-02-2015, 05:17 PM
(Seda postitust muudeti viimati: 05-02-2015, 06:40 PM ja muutjaks oli madis.)
(05-02-2015, 02:32 PM)madis Kirjutas: Lõppsõnaks ütleks:
main(a,b)char**b;{int c=1,d=c,e=a-d;for(;e;e--)_(e)<_( c)?c=e:_(e)>_(d)?d=e:7;
while(++e<a)printf("\xe2\x96%c",129+(**b=8*(_(e)-_( c))/(_(d)-_( c))));}
HELL YEAH !
Maybe...
Ma sain vahepeal asmi rutiini tööle. Tänud ideede eest !
Kood: ;===============================================================================
; CRC 1 baidi arvutamise algo
;#define X25_INIT_CRC 0xffff
; tmp=data ^ (*crcAccum &0xff);
; tmp^= (tmp<<4);
; tmp &= (0x00ff);
; *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
; result= (*crcAccum);
; näidis testjada:
; http://www.privatprojekte.de/multicopter/telemetriedecoder.html
;FE 09 4E 01 01 00 00 00 00 00 02 03 51 04 03 1C 7F + 32
; ülalolev testjada laadida aadressile 0x20 ja edaspidi
; 0xFE jätta välja
; CRC=0x7F1C
; enne viimast tehet lasta CRC-st läbi bait 0x32 (magic byte ehk seed)
; funkab küll !!!
#define crcH TBLPTRHt
#define crcL TBLPTRLt
#define tmpH tempor0_h
#define tmpL tempor0_l
#define tmpHa t1_count
#define tmpLa t2_count
test: movlw 0xFF ; crc_init(&crcTmp)
movwf TBLPTRLt
movwf TBLPTRHt
clrf tmpH
clrf tmpL
movlw .15
movwf t_count
LFSR .0,0x20
tst1: movf POSTINC0,W ; loe databait puhvrist -> W
xorwf crcL,W ; databait XOR CRC LOW -> tmp=data ^ (*crcAccum &0xff);
movwf tmpL
movff tmpH,tmpHa ; säilita algne tmp
movff tmpL,tmpLa
bcf CARRY ; (tmp<<4)
rlcf tmpL,F
rlcf tmpH,F
bcf CARRY
rlcf tmpL,F
rlcf tmpH,F
bcf CARRY
rlcf tmpL,F
rlcf tmpH,F
bcf CARRY
rlcf tmpL,F
rlcf tmpH,F
movf tmpHa,W ; XOR
xorwf tmpH,F
movf tmpLa,W
xorwf tmpL,F
clrf tmpH ; tmp &= (0x00ff)
; *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
movff tmpH,tmpHa ; tee tmp-st koopia
movff tmpL,tmpLa
bcf CARRY ; crcAccum>>8
rrcf crcH,F
rrcf crcL,F
bcf CARRY
rrcf crcH,F
rrcf crcL,F
bcf CARRY
rrcf crcH,F
rrcf crcL,F
bcf CARRY
rrcf crcH,F
rrcf crcL,F
bcf CARRY
rrcf crcH,F
rrcf crcL,F
bcf CARRY
rrcf crcH,F
rrcf crcL,F
bcf CARRY
rrcf crcH,F
rrcf crcL,F
bcf CARRY
rrcf crcH,F
rrcf crcL,F
bcf CARRY ; tmp= (tmp<<8)
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
movf tmpHa,W ; XOR
xorwf crcH
movf tmpLa,W
xorwf crcL
movff tmpH,tmpHa ; loe algne tmp
movff tmpL,tmpLa
bcf CARRY ; tmp= (tmp<<3)
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
bcf CARRY
rlcf tmpLa,F
rlcf tmpHa,F
movf tmpHa,W ; XOR
xorwf crcH
movf tmpLa,W
xorwf crcL
movff tmpH,tmpHa ; loe algne tmp
movff tmpL,tmpLa
bcf CARRY ; tmp= (tmp>>4)
rrcf tmpHa,F
rrcf tmpLa,F
bcf CARRY
rrcf tmpHa,F
rrcf tmpLa,F
bcf CARRY
rrcf tmpHa,F
rrcf tmpLa,F
bcf CARRY
rrcf tmpHa,F
rrcf tmpLa,F
movf tmpHa,W ; XOR
xorwf crcH
movf tmpLa,W
xorwf crcL
decfsz t_count
goto tst1 ; loop until "iso siiperi"
return
|