IAR 3.2 eeprom bug

Fuzesi Arnold arno at externet.hu
Wed Nov 9 09:36:01 CET 2005


Rögtön utána ahogy rájöttem mi a hiba, a while(1);
volt a következő amit kiprobaltam.
Ugyan az.

Aztan for(;;) temp++;
Hogy legyen "ertelme" az ures ciklusnak.

De semmi. Csak a fuggvenyhivas szeruseg ami utan bennmarad a mentes.

Arnold
----- Original Message ----- 
From: "Bali Zoltan" <eltexto at freemail.hu>
To: <avr-hun at x-dsl.hu>; <elektro at tesla.hu>; <Retro at lists.tmp.hu>
Sent: Wednesday, November 09, 2005 7:38 AM
Subject: Re: IAR 3.2 eeprom bug


> Hali !
>
> Nálam is hasonló mentés van a végén végtelen ciklussal.
> (4.10B-2)
> IT- ben van a mentés a végén   while(1); -el.
> Próbáld meg egyszer ezt. Nálam jól müködik
> max. opt.-al.
>
>
> Üdv  Zoli
>
>
>
>
> ----- Original Message -----
> From: Fuzesi Arnold
> To: elektro at tesla.hu ; Retro at lists.tmp.hu ; avr-hun at x-dsl.hu
> Sent: Tuesday, November 08, 2005 11:08 PM
> Subject: Re: IAR 3.2 eeprom bug
>
>
> Közben a 4.1-el is előjött. Kezdtem ideges lenni... aztan olyan helyen 
> futottam a hibaba, amire nem szamítottam:
>
> Ezt nezzetek:
>
> A // -el jelolt resz az eredeti C forras.
>
> //  129 void exception(uint line)
> exception:
> //  130 {
> //  131  slong temp;
> //  132  __watchdog_reset();
>        WDR
> //  133
> //  134  if(exception_log[line]<1000) exception_log[line]++;
>        LDI R18, LOW(exception_log)
>        LDI R19, (exception_log) >> 8
>        LSL R16
>        ROL R17
>        ADD R18, R16
>        ADC R19, R17
>        MOVW R21:R20, R19:R18
>        RCALL __eeget16_16
>        CPI R16, 232
>        LDI R20, 3
>        CPC R17, R20
>        BRCC ??exception_0
>        SUBI R16, 255
>        SBCI R17, 255
>        MOVW R21:R20, R19:R18
>        RCALL __eeput16_16
> //  135
> //  136  temp=gettimer(TMR_MONOSTABLE);
> ??exception_0:
>        LDI R16, 5
>        LDI R17, 0
>        RCALL gettimer
> //  137
> //  138     if(ee_tmr_monostable!=temp) ee_tmr_monostable=temp; 
> !!!!!!!!!Hoppáááá - nincs asm kód hozzá :)
> //  139     if(cfg.ee_netalarm_no) ee_netalarm_no=cfg.netalarm_no; 
> !!!!!!!!!Hoppáááá - ehhez sem... :-/
> //  140
> //  141  for(;;);            //wait for WDT reset
> ??exception_1:
>        RJMP ??exception_1
> //  142
> //  143 }
>
>
> Ha mókolok kicsit:
>
> //  129 void exception(uint line)
> exception:
> //  130 {
>        RCALL ?PROLOGUE4_L09
> //  131  slong temp;
> //  132  __watchdog_reset();
>        WDR
> //  133
> //  134  if(exception_log[line]<1000) exception_log[line]++;
>        LDI R18, LOW(exception_log)
>        LDI R19, (exception_log) >> 8
>        LSL R16
>        ROL R17
>        ADD R18, R16
>        ADC R19, R17
>        MOVW R21:R20, R19:R18
>        RCALL __eeget16_16
>        CPI R16, 232
>        LDI R20, 3
>        CPC R17, R20
>        BRCC ??exception_0
>        SUBI R16, 255
>        SBCI R17, 255
>        MOVW R21:R20, R19:R18
>        RCALL __eeput16_16
> //  135
> //  136  temp=gettimer(TMR_MONOSTABLE);
> ??exception_0:
>        LDI R16, 5
>        LDI R17, 0
>        RCALL gettimer
>        MOVW R25:R24, R17:R16
>        MOVW R27:R26, R19:R18
> //  137
> //  138     if(ee_tmr_monostable!=temp) ee_tmr_monostable=temp;
>        LDI R22, LOW(ee_tmr_monostable)
>        LDI R23, (ee_tmr_monostable) >> 8
>        MOVW R21:R20, R23:R22
>        RCALL __eeget32_16
>        CP R16, R24
>        CPC R17, R25
>        CPC R18, R26
>        CPC R19, R27
>        BREQ ??exception_1
>        MOVW R17:R16, R25:R24
>        MOVW R19:R18, R27:R26
>        MOVW R21:R20, R23:R22
>        RCALL __eeput32_16
> //  139     if(cfg.ee_netalarm_no) ee_netalarm_no=cfg.netalarm_no;
> ??exception_1:
>        LDS R16, (cfg + 119)
>        TST R16
>        BREQ ??exception_2
>        LDS R16, (cfg + 24)
>        LDI R20, LOW(ee_netalarm_no)
>        LDI R21, (ee_netalarm_no) >> 8
>        RCALL __eeput8_16
> //  140
> //  141     __delay_cycles(1); 
> !!!!!!!!Ezt betettem, es megjavult...
> ??exception_2:
>        NOP
> //  142  for(;;);        //wait for WDT reset
> ??exception_3:
>        RJMP ??exception_3
> //  143
> //  144 }
>
>
> Ez most BUG?
>
> A for(;;); ele akar mit tehetek, a törzsébe is. Ha nem vmi függvénynek 
> látszó dolog, akkor kioptimalizalja az előtte levő eeprom
> írást...
> Low optimalizacional hagyja egyedul benne...felette kuka.
>
> Hümm...
>
> Arnold
>
>
>
> _______________________________________________
> Avr-hun mailing list
> Avr-hun at x-dsl.hu
> http://www.x-dsl.hu/cgi-bin/mailman/listinfo/avr-hun 




More information about the Elektro mailing list