Atmega pri nizsej teplote
David Obdrzalek
David.Obdrzalek na mff.cuni.cz
Pátek Únor 22 21:08:18 CET 2019
No jo, no, jsem si myslel, ze to je jen v mailu tak nesikovne napsane, jeden \ misto
dvou, ale ze si je mam otocit, me nenapadlo :-)
A pritom takovou hezkou teorii jsem vymyslel :-(((
Ze zvedavosti - ty nepouzite piny jsou nekam zapojene? Nebo vubec pripajene?
Jeste v datasheetu pisou, ze se analogovym pinum ma vypinat digital input buffer.
V tom listingu je sice chybne napsano po obakrat strchr(filepath, '/') tj. s
apostrofama, ale zajimavejsi mi prijde, jak tam prekladac cvici s tema registrama.
Obcas pro nulovani pouzije ldi a obcas r1. Obcas hodnotu nastavi pomoci ldi a obcas
okopiruje z registru, kam si ji uz byl schoval - ze to neni konzistentni? (no a i
malinko usetrit by se myslim dalo)
D.O.
On 22 Feb 2019 at 13:23, Michal Lukac wrote:
> nie, SD kartou to nebolo, pozeral som CS pin a ked to prestalo fungovat tak ten pin
> bol stale na 1. chyba bola v tej atmega.
> to iste aj s inou kartou.
>
> ale asi to bolo takto:
> ja som zle napisal, nebol to znak \ a ale / to je 0x2F
> ked je tam len ten znak ‘/’ pouzije priamo jeho adresu. na adrese 0x2F je PINF to su analogove vstupy.
> Pouzivam len AD0 a AD1 na ostatnych pinoch neboli zapnute ani pullup takze boli len tak do luftu.
> tak sa to mohlo nacitat ako 0x00 (to vysiel ako retazec 0vej dlzky) a potm pri zmene teploty sa ostatne
> piny zmenili na 1 a bolo to 0xFC tie dva analogove bralo ako 0. (tiez obcas to aj
> pri normalnej teplote vypadlo...)
>
>
> 080024e <_ZTV5Print>:
> 80024e: 00 00 nop
> 800250: 00 00 nop
> 800252: c2 01 movw r24, r4
> 800254: e9 0a sbc r14, r25
> 800256: bf 01 movw r22, r30
> 800258: be 01 movw r22, r28
> 80025a: 2f 00 .word 0x002f ; ???? <- 0x25A
>
>
> Takto to je prelozene ked tam je “/”
> --------------------------------------
> 2262: 34 01 movw r6, r8
> 2264: 8a e5 ldi r24, 0x5A ; 90 <- na adrese 0x25A je
> 0x2F 0x00
> 2266: a8 2e mov r10, r24
> 2268: 82 e0 ldi r24, 0x02 ; 2
> 226a: b8 2e mov r11, r24
> SdFile *subdir = &d2;
> const char *origpath = filepath;
> while (strchr(filepath, '/')) {
> 226c: 28 01 movw r4, r16
> 226e: 6f e2 ldi r22, 0x2F ; 47
> 2270: 70 e0 ldi r23, 0x00 ; 0
> 2272: c5 01 movw r24, r10
> 2274: 82 d2 rcall .+1284 ; 0x277a <strchr>
> 2276: 00 97 sbiw r24, 0x00 ; 0
>
>
>
> Takto to je prelozene ked tam je ‘/’
> --------------------------------------
> 2262: 34 01 movw r6, r8
> 2264: 8f e2 ldi r24, 0x2F ; 47 <- adresa je hodnota to
> ho znaku
> 2266: a8 2e mov r10, r24
> 2268: b1 2c mov r11, r1
> const char *origpath = filepath;
> while (strchr(filepath, '/')) {
> 226a: 28 01 movw r4, r16
> 226c: 6f e2 ldi r22, 0x2F ; 47
> 226e: 70 e0 ldi r23, 0x00 ; 0
> 2270: c5 01 movw r24, r10
> 2272: 82 d2 rcall .+1284 ; 0x2778 <strchr>
>
> ...
> ...
> ...
>
> 0000277a <strchr>:
> 277a: fc 01 movw r30, r24
> 277c: 81 91 ld r24, Z+
> 277e: 86 17 cp r24, r22
> 2780: 21 f0 breq .+8 ; 0x278a <strchr+0x10>
> 2782: 88 23 and r24, r24
> 2784: d9 f7 brne .-10 ; 0x277c <strchr+0x2>
> 2786: 99 27 eor r25, r25
> 2788: 08 95 ret
> 278a: 31 97 sbiw r30, 0x01 ; 1
> 278c: cf 01 movw r24, r30
> 278e: 08 95 ret
>
>
>
>
>
>
>
> From: sam.hw
> Sent: Friday, February 22, 2019 7:42 AM
> To: hw-list na list.hw.cz
> Subject: Re: Atmega pri nizsej teplote
>
> Zdravim,
>
> v prvni moment napadlo, jestli to neni spis SD katrou, nebo jejim modulem ...
>
> Mne prijde hodne prapodivne, ze staci takovato trivialni uprava kodu. Mozna by bylo
> zajimavejsi vysledovat rozdil mezi puvodnim a novym resenim po prekladu.
> Ale i tak bych pozornost nasmeroval spis k tomu modulu s SD kartou (nevim proc -
> ciste subjektivni pocit) - dela to i s jinym modulem? s jinou kartou?
> :)
>
> --------------------------
> Sam
> --------------------------
>
>
> Sent: Friday, February 22, 2019 at 1:59 AM
> From: "Michal Lukac" <michal.lukac na fstroj.uniza.sk>
> To: HW-news <hw-list na list.hw.cz>
> Subject: Atmega pri nizsej teplote
> Zdravim,
>
> Mam napisany program v Atmega2560, zapisuje na SD kartu. Vsetko bezalo, az kym som
> stym neprisiel pod cca 10st.C.
> Vtedy to zacalo robit chyby – cim nizsia teplota tym bolo viac chyb az to
> prestalo fungovat.
> Ja som tu chybu nasiel a opravil takze teraz ten program bezi ako ma, ale zaujimalo
> by ma preco to zaviselo od teploty.
> Chyba bola v tom ze som mal namiesto retazca “\” len znak ‘\’ v argumente
> fcie kde mal byt retazec. Potom ten retazec pri izbovej teplote mal nulovu dlzku a
> pri nizsej teplote tam bol nejaky znak 0xFC. Myslel som ze nejaka cast RAM je
> vadna
> a pri nizsej teplote sa necita korektne obsah ale ten program teraz bezi normalne.
> Skusal som aj na inom kuse a robilo to to iste.
> Da sa to nejak vysvetlit?
>
> m.
>
> _______________________________________________ HW-list mailing list - sponsored by
> www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list
>
>
> --------------------------------------------------------------------------------
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list