eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaavr i C - kto nie rozumie: kompilator, procesor czy ja?Re: avr i C - kto nie rozumie: kompilator, procesor czy ja?
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.icpnet.pl!.POSTED!not-for-mai
    l
    From: "Grzegorz Niemirowski" <g...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: avr i C - kto nie rozumie: kompilator, procesor czy ja?
    Date: Sun, 6 Jan 2013 15:29:38 +0100
    Organization: ICP News Server
    Lines: 75
    Message-ID: <kcc1od$5fp$1@news.icpnet.pl>
    References: <kcc0uj$9sa$1@node1.news.atman.pl>
    NNTP-Posting-Host: 031011139062.warszawa.vectranet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Trace: news.icpnet.pl 1357482573 5625 31.11.139.62 (6 Jan 2013 14:29:33 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Sun, 6 Jan 2013 14:29:33 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: OE PowerTool 4.5
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
    X-WWW: http://www.grzegorz.net/
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:640406
    [ ukryj nagłówki ]

    Jakub Rakus <s...@o...pl> napisał(a):
    > Witajcie,
    > Ostatnie moje problemy (tu na grupie poruszane) z obsługą uarta na
    > atmelkach stały się moim gwoździem do trumny bascoma i w końcu się
    > zawziąłem na C, choć zabierałem się do tego już od roku jak pies do jeża.

    A problem był po stronie Bascoma czy niedopracowanego algorytmu?

    > No to na początek, standardowo pomrugamy diodą. Ot taki programik:
    > #define F_CPU 16000000UL
    > #include <avr/io.h>
    > #include <util/delay.h>
    > int main(void)
    > {
    > DDRD = 0xFF;
    > PORTD = 0x00;
    > while(1)
    > {
    > PORTD ^= _BV(0);
    > _delay_ms(500);
    > }
    > }
    > I zonk, na porcie ciągle stan wysoki. Podejrzałem plik .lss i niby
    > wszystko ok, jak patrzę na instrukcję asemblera to powinno działać:
    > 00000038 <main>:
    > 38: 8f ef ldi r24, 0xFF
    > 3a: 81 bb out 0x11, r24
    > 3c: 12 ba out 0x12, r1
    > 3e: 91 e0 ldi r25, 0x01
    > 40: 82 b3 in r24, 0x12
    > 42: 89 27 eor r24, r25
    > 44: 82 bb out 0x12, r24
    > 46: ef ef ldi r30, 0xFF
    > 48: ff e3 ldi r31, 0x3F
    > 4a: 31 97 sbiw r30, 0x01
    > 4c: f1 f7 brne .-4
    > 4e: 00 c0 rjmp .+0
    > 50: f7 cf rjmp .-18
    > Ale niestety nie działa, stan na porcie zmienia się bez opóźnienia. A
    > teraz ciekawostka, zamiast wykorzystywać funkcję _delay_ms wstawiłem
    > swoją:
    > void delay(void)
    > {
    > uint16_t i;
    > for (i=0;i<15000;i++);
    > }
    > Patrzę na plik .lss, a tu:
    > 00000038 <delay>:
    > 38: 88 e9 ldi r24, 0x98
    > 3a: 9a e3 ldi r25, 0x3A
    > 3c: 01 97 sbiw r24, 0x01
    > 3e: f1 f7 brne .-4
    > 40: 08 95 ret
    > 00000042 <main>:
    > 42: 8f ef ldi r24, 0xFF
    > 44: 81 bb out 0x11, r24
    > 46: 12 ba out 0x12, r1
    > 48: 91 e0 ldi r25, 0x01
    > 4a: 82 b3 in r24, 0x12
    > 4c: 89 27 eor r24, r25
    > 4e: 82 bb out 0x12, r24
    > 50: fc cf rjmp .-8
    > Wychodzi na to, że po przełączeniu bitu PD0 w ogóle nie wywołuje funkcji
    > delay() - no i port tak właśnie się zachowuje, w kółko się przełącza.
    > Obstawiam opcję, że ja czegoś nie rozumie, ale może ktoś mnie oświeci.

    Ustawiłeś optymalizacje zgodnie z dokumentacją?
    Którego kompilatora używasz?

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 0 days, 1 hours, 26 minutes and 32 seconds

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: