eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR ATmega, pomiar częstotliwości przebiegu, prośba o sprawdzenie kodu › Re: AVR ATmega, pomiar częstotliwości przebiegu, prośba o sprawdzenie kodu
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!n
    ews2.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!nx01.iad01.newsho
    sting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!un
    t-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    From: "Robbo" <y...@m...com>
    Newsgroups: pl.misc.elektronika
    References: <4d528e6b$0$2436$65785112@news.neostrada.pl>
    <4d52df8e$0$2452$65785112@news.neostrada.pl>
    <4d53ffa7$0$2504$65785112@news.neostrada.pl>
    <4d540151$0$2457$65785112@news.neostrada.pl> <ij1236$va6$1@news.onet.pl>
    <4d543005$0$2448$65785112@news.neostrada.pl> <ij1leg$ciq$1@news.onet.pl>
    <4d54e717$0$2460$65785112@news.neostrada.pl>
    <4d5517ee$0$2441$65785112@news.neostrada.pl>
    <4d552a85$0$2454$65785112@news.neostrada.pl>
    Subject: Re: AVR ATmega, pomiar częstotliwości przebiegu, prośba o sprawdzenie
    kodu
    Date: Fri, 11 Feb 2011 13:58:27 +0100
    MIME-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: Microsoft Outlook Express 6.00.2900.5512
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512
    X-Antivirus: avast! (VPS 110211-0, 2011-02-11), Outbound message
    X-Antivirus-Status: Clean
    Lines: 86
    Message-ID: <4d553275$0$2456$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.24.142.160
    X-Trace: 1297429110 unt-rea-a-01.news.neostrada.pl 2456 83.24.142.160:2558
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:604679
    [ ukryj nagłówki ]

    Dzięki za wyjaśnienie.
    Sprawdziłem...

    union{
    volatile uint8_t V;
    uint8_t NV;
    }aqq;


    ISR(od_jakiegos_timera){
    if (aqq.NV != 0) aqq.NV--;
    }

    main(){

    aqq.V = 100;
    while(aqq.V != 0);
    }

    Daje kod dla ISR():
    push r1
    push r0
    in r0, 0x3f
    push r0
    eor r1, r1
    push r24

    lds r24,0x0100
    and r24, r24
    breq .+6
    subi r24, 0x01
    sts 0x0100, r24

    pop r24
    pop r0
    out 0x3f, r0
    pop r0
    pop r1
    reti

    ----------------

    Natomiast program:

    volatile uint8_t V;

    ISR(od_jakiegos_timera){
    if (V != 0) V--;
    }

    main(){

    V = 100;
    while(V != 0);
    }

    Daje kod dla ISR():
    push r1
    push r0
    in r0, 0x3f
    push r0
    eor r1, r1
    push r24

    lds r24,0x0100
    and r24, r24
    breq .+10
    lds r24, 0x0100
    subi r24, 0x01
    sts 0x0100, r24

    pop r24
    pop r0
    out 0x3f, r0
    pop r0
    pop r1
    reti


    ---

    Mam pytanie. Czy do tych "sztuczek" sam dochodziłeś, czy też mógłbyś polecić
    jakieś książki/tutoriale dotyczące optymalizacji kodu dla mikrokontrolerów?

    R.

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: