eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikauC poczatek
Ilość wypowiedzi w tym wątku: 167

  • 141. Data: 2009-03-09 21:09:01
    Temat: Re: uC poczatek
    Od: Jerry1111 <j...@w...pl.pl.wp>

    Nimitz wrote:
    > Nie zapominajmy, że 8051 to konstrukcja lat 70, ale ciągle trzyma się
    > świetnie.

    O przepraszam, nic sie nie trzyma. U mnie 51 wyleciala z hukiem z 15 lat
    temu po pierwszym projekcie gdzie glownym problemem byl procek.

    I bardzo jestem zadowolony, ze to byl lot w jedna strone ;-)
    Nie wiem po co ludzie odgrzewaja taki stary kotlet, ale dobrze ze to nie
    moj problem ;-)

    --
    Jerry1111

    PS: po namysle: chyba tylko 13 lat temu.


  • 142. Data: 2009-03-09 21:09:24
    Temat: Re: uC poczatek
    Od: "T.M.F." <t...@n...mp.pl>

    Zbych pisze:
    > T.M.F. pisze:
    >
    >> A podasz jakis przyklad w ktorym priorytety przerwan sa niezbedne?
    >
    > Wtedy, gdy chcesz decydować, _które_ przerwania mogą przerywać inne. W
    > starych AVR możesz odblokować wszystkie, albo żadne.

    W tych najprostszych, typu AT90S2313 tak, ale one juz sa obsolete. W
    innych mozesz blokowac przerwania, ktore w danej chwili nie powinny
    przerywac. Uprzedzajac - to i tak bedzie szybsze niz '51, a
    uniwersalnosc jest nieporownywalnie wieksza.

    >> Zawsze moge w pierwszej instrukcji odblokowac przerwania
    >
    > Aha, spróbuj to zrobić w przypadku UARTa.

    A dlaczego nie?


  • 143. Data: 2009-03-09 21:16:06
    Temat: Re: uC poczatek
    Od: Zbych <a...@o...pl>

    T.M.F. pisze:
    > Zbych pisze:
    >> T.M.F. pisze:
    >>
    >>> A podasz jakis przyklad w ktorym priorytety przerwan sa niezbedne?
    >>
    >> Wtedy, gdy chcesz decydować, _które_ przerwania mogą przerywać inne. W
    >> starych AVR możesz odblokować wszystkie, albo żadne.
    >
    > W tych najprostszych, typu AT90S2313 tak, ale one juz sa obsolete. W
    > innych mozesz blokowac przerwania, ktore w danej chwili nie powinny
    > przerywac.

    Wszystkie AVRy poza xmega mają tak samo.

    Uprzedzajac - to i tak bedzie szybsze niz '51, a
    > uniwersalnosc jest nieporownywalnie wieksza.
    >
    >>> Zawsze moge w pierwszej instrukcji odblokowac przerwania
    >>
    >> Aha, spróbuj to zrobić w przypadku UARTa.
    >
    > A dlaczego nie?

    Przeczytaj w dokumentacji kiedy są gaszone flagi żądania przerwania od
    UARTa.


  • 144. Data: 2009-03-09 21:27:24
    Temat: Re: uC poczatek
    Od: Mario <m...@p...onet.pl>

    Nimitz pisze:
    >
    > Użytkownik "T.M.F." :
    >> Zartujesz? AVR moge taktowac zegarem 20MHz, minimalny czas trawania
    >> impulsu dla tego wariantu to 100ns, zadna '51 nie odczyta portu z taka
    >> rozdzielczoscia. A XMega maja juz taktowanie 32MHz/32 MIPSy.
    >
    > Wszyscy wiemy, że zwykły 8051 dzieli zegar przez 12, więc jakie to ma
    > znaczenie dla programisty? Porównuj 8051 12MHz z AVR 1MHz. Owszem, w
    > konsekwencji możemy uzyskać znacznie szybszy AVR, ale do rzetelnego
    > porównania muszą być zachowane podobne warunki.

    Podobnym warunkiem jest taka sama częstotliwość zegara.To nie wina
    RISCów że wykonują się w jednym cyklu a nie w 12.


    --
    Pozdrawiam
    MD


  • 145. Data: 2009-03-09 21:30:42
    Temat: Re: uC poczatek
    Od: mk <r...@m...remove>

    Sebastian Biały pisze:
    > W jednym z
    > programów na '51 widziałem takie coś:
    >
    > // do not remove this line!
    > int foo = 0;
    >
    > Usunąłem i oczywiście kompilator wyprodukował niedziałajacy kod.
    > Komercyjny kompilator. Nowej wersji nie ma po co kupować.

    Opisany przykład nie jest dowodem na błędne zachowanie danego kompilatora.

    pzdr
    mk


  • 146. Data: 2009-03-09 21:39:17
    Temat: Re: uC poczatek
    Od: "T.M.F." <t...@n...mp.pl>

    >>>> A podasz jakis przyklad w ktorym priorytety przerwan sa niezbedne?
    >>>
    >>> Wtedy, gdy chcesz decydować, _które_ przerwania mogą przerywać inne.
    >>> W starych AVR możesz odblokować wszystkie, albo żadne.
    >>
    >> W tych najprostszych, typu AT90S2313 tak, ale one juz sa obsolete. W
    >> innych mozesz blokowac przerwania, ktore w danej chwili nie powinny
    >> przerywac.
    >
    > Wszystkie AVRy poza xmega mają tak samo.

    Znaczy jak? Bo moge w kazdej chwili zablokowac pojedyncze typy przerwan
    poprzez blokowanie flag na nie zezwalajacych. Flagi zgloszenia
    poszczegolnych przerwan moge rowniez programowo zerowac.
    Wiec w czym jest problem?


    > Uprzedzajac - to i tak bedzie szybsze niz '51, a
    >> uniwersalnosc jest nieporownywalnie wieksza.
    >>
    >>>> Zawsze moge w pierwszej instrukcji odblokowac przerwania
    >>>
    >>> Aha, spróbuj to zrobić w przypadku UARTa.
    >>
    >> A dlaczego nie?
    >
    > Przeczytaj w dokumentacji kiedy są gaszone flagi żądania przerwania od
    > UARTa.

    A konkretnie ktore flagi? Chodzi ci o to, ze np. UDRE bedzie ci na okolo
    przerywac?

    When interrupt-driven data transmission is used, the Data
    Register empty Interrupt routine must either write new data to UDR in
    order to clear UDRE or disable the Data Register empty Interrupt,
    otherwise a new interrupt will occur once the interrupt routine terminates.

    Przerwanie pzy odbiorze tez moge blokowac flaga RXCIE.

    Ew. prosze jasniej.


  • 147. Data: 2009-03-09 21:46:57
    Temat: Re: uC poczatek
    Od: Zbych <a...@o...pl>

    T.M.F. pisze:
    >>>>> A podasz jakis przyklad w ktorym priorytety przerwan sa niezbedne?
    >>>>
    >>>> Wtedy, gdy chcesz decydować, _które_ przerwania mogą przerywać inne.
    >>>> W starych AVR możesz odblokować wszystkie, albo żadne.
    >>>
    >>> W tych najprostszych, typu AT90S2313 tak, ale one juz sa obsolete. W
    >>> innych mozesz blokowac przerwania, ktore w danej chwili nie powinny
    >>> przerywac.
    >>
    >> Wszystkie AVRy poza xmega mają tak samo.
    >
    > Znaczy jak? Bo moge w kazdej chwili zablokowac pojedyncze typy przerwan
    > poprzez blokowanie flag na nie zezwalajacych. Flagi zgloszenia
    > poszczegolnych przerwan moge rowniez programowo zerowac.
    > Wiec w czym jest problem?

    W czasie jaki to zajmuje. Parę postów wcześniej próbowałeś udowodnić, że
    priorytety są zbędne, bo możesz odblokować inne przerwania w pierwszej
    instrukcji. Otóż nie zawsze możesz, bo albo peryferium na to nie pozwala
    (vide UART), albo musisz softowo blokować przerwania, których nie chcesz
    wpuścić. Wszystko to zajmuje czas.


  • 148. Data: 2009-03-09 21:52:08
    Temat: Re: uC poczatek
    Od: Sebastian Biały <h...@p...onet.pl>

    mk wrote:
    >> // do not remove this line!
    >> int foo = 0;
    >> Usunąłem i oczywiście kompilator wyprodukował niedziałajacy kod.
    >> Komercyjny kompilator. Nowej wersji nie ma po co kupować.
    > Opisany przykład nie jest dowodem na błędne zachowanie danego kompilatora.

    Oczywiscie ze sam potrafie podać przykład w którym nieznaczaca
    instrukcja zmieni zachowanie programu przy braku błedu kompilatora.
    Tylko że mam na myśli hakowanie i brudne sztuczki. W procedurze która
    podałem o ile pamietam chodziło o liczenie CRC i po usunięciu tego
    czegoś CRC wychodziło zupełnie inne. Zero hakowania, zwykły bug. Na 100%
    kompilator był uszkodzony. I nie ma w tym nic dziwnego gdyby nie fakt że
    poprawionej wersji nie było (albo inaczej: nie było w ramach gwaracji,
    bo gwarancji na kompilator nie było, pozostało kupowanie nowszych wersji
    :/ ).


  • 149. Data: 2009-03-09 22:35:44
    Temat: Re: uC poczatek
    Od: "T.M.F." <t...@n...mp.pl>

    >> Znaczy jak? Bo moge w kazdej chwili zablokowac pojedyncze typy
    >> przerwan poprzez blokowanie flag na nie zezwalajacych. Flagi
    >> zgloszenia poszczegolnych przerwan moge rowniez programowo zerowac.
    >> Wiec w czym jest problem?
    >
    > W czasie jaki to zajmuje. Parę postów wcześniej próbowałeś udowodnić, że
    > priorytety są zbędne, bo możesz odblokować inne przerwania w pierwszej
    > instrukcji. Otóż nie zawsze możesz, bo albo peryferium na to nie pozwala
    > (vide UART), albo musisz softowo blokować przerwania, których nie chcesz
    > wpuścić. Wszystko to zajmuje czas.

    Chyba sobie zartujesz w tym momencie. Dla '51 samo wejscie w procedure
    obslugi przerwania trwa 3-9 cykli maszynowych (czyli 36-108 cykli
    zegara). AVR w tym czasie wykona procedure o zlozonosci powaznego
    schedulera dla OSu.

    Zreszta policzmy ile to kosztuje
    Najgorszy mozliwy wariant, czyli rejestr kontrolny jest spoza zasiegu
    sbi/cbi:
    PUSH R16
    LD R16,rejestr z flaga
    ORI R16, blokowane przerwania
    STS rejestr, R16
    SEI

    Zajelo to 5 taktow. Dodatkowo 6 taktow kosztuje wejscie w procedure
    obslugi, razem 11 taktow. W tym czasie '51 nie zdazy nawet zauwazyc, ze
    jest przerwanie (aktywny poziom musi trwac co najmniej 12 taktow). Wiec
    o czym ty mowisz?
    Oczywiscie mozesz zapytac co kiedy masz kilka flag do zablokowania? No
    problem, na malych prockach wiekszosc miesci sie w jednym rejestrze.
    Jesli nawet w roznych to ciagle mamy spory zapas czasowy w stosunku do '51.
    BTW, o co ci chodzi z tym UARTem?


  • 150. Data: 2009-03-09 23:00:16
    Temat: Re: uC poczatek
    Od: Zbych <a...@o...pl>

    T.M.F. pisze:

    > Zreszta policzmy ile to kosztuje
    > Najgorszy mozliwy wariant, czyli rejestr kontrolny jest spoza zasiegu
    > sbi/cbi:
    > PUSH R16
    > LD R16,rejestr z flaga
    > ORI R16, blokowane przerwania
    > STS rejestr, R16
    > SEI
    >
    > Zajelo to 5 taktow.

    Bo miałeś tylko jedną flagę, nie zapamiętałeś jej stanu i nie
    odtworzyłeś jej stanu przed zakończeniem przerwania. Policz ile zajmie
    takie coś czasu jak będziesz miał kilkanaście działających w systemie
    przerwań i będziesz chciał mieć kilka o wyższym priorytecie.
    Po to, żeby tak nie cudować wymyślono priorytety.


    > BTW, o co ci chodzi z tym UARTem?

    Tak ciężko przeczytać dokumentację? Nie można odblokować przerwań na
    przed odbiorem/wysłaniem znaku, bo ci się przerwanie zapętli. Więc
    odpada pomysł z odblokowywaniem przerwań, tuż po wejściu w przerwanie.

strony : 1 ... 10 ... 14 . [ 15 ] . 16 . 17


Szukaj w grupach

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: