eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProblem lekko OT, ale w WinAVR ;-)Re: Problem lekko OT, ale w WinAVR ;-)
  • Data: 2009-06-12 20:30:09
    Temat: Re: Problem lekko OT, ale w WinAVR ;-)
    Od: J.F. <j...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Fri, 12 Jun 2009 22:15:03 +0200, Grzegorz Kurczyk wrote:
    >Chyba kolejny mały kwiatek.
    >int GetEncoder(void) {
    > cli();
    > int e = *pEncoderValue;
    > sei();
    > return e;
    >}

    A cos tu jest volatile ?
    Bo moze mial prawo, jesli uwaza ze tak mu wygodniej ..


    >
    >zostało przetłumaczone na:
    >
    >int GetEncoder(void) {
    > cli();
    > 1476: f8 94 cli
    > int e = *pEncoderValue;
    > sei();
    > 1478: 78 94 sei
    > 147a: e0 91 3a 01 lds r30, 0x013A
    > 147e: f0 91 3b 01 lds r31, 0x013B
    > return e;
    >}
    > 1482: 80 81 ld r24, Z
    > 1484: 91 81 ldd r25, Z+1 ; 0x01
    > 1486: 08 95 ret
    >
    >Nie wiem czemu kompilator wywalił pobieranie zmiennej poza sekcję
    >cli/sei ? To samo jest w najnowszej wersji.
    >
    >Moim skromnym zdaniem powinno być tak:
    >
    >int GetEncoder(void) {
    >f8 94 cli
    >e0 91 3a 01 lds r30, 0x013A
    >f0 91 3b 01 lds r31, 0x013B
    >80 81 ld r24, Z
    >91 81 ldd r25, Z+1 ; 0x01
    >78 94 sei
    >08 95 ret
    >
    >lub tak:
    >
    >int GetEncoder(void) {
    >e0 91 3a 01 lds r30, 0x013A
    >f0 91 3b 01 lds r31, 0x013B
    >f8 94 cli
    >80 81 ld r24, Z
    >91 81 ldd r25, Z+1 ; 0x01
    >78 94 sei
    >08 95 ret
    >
    >
    >Pozdrawiam
    >Grzegorz

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: