Atmega pri nizsej teplote

Michal Lukac michal.lukac na fstroj.uniza.sk
Pátek Únor 22 13:23:33 CET 2019


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ší část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20190222/5a4af6c3/attachment.html>


Další informace o konferenci Hw-list