eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAtmega jak zrealizowac odbior szeregowyRe: Atmega jak zrealizowac odbior szeregowy
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.
    pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail
    From: "Andy" <a...@c...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Atmega jak zrealizowac odbior szeregowy
    Date: Tue, 20 Jul 2010 23:21:20 +0200
    Organization: http://onet.pl
    Lines: 70
    Message-ID: <i2540i$h15$1@news.onet.pl>
    References: <i24j95$g2h$1@news.supermedia.pl>
    <5...@j...googlegroups.com>
    <i24mgj$hj4$1@news.supermedia.pl>
    <c...@w...googlegroups.com>
    <i24q2l$j61$1@news.supermedia.pl>
    <e...@k...googlegroups.com>
    <i24v66$llo$1@news.supermedia.pl> <i24vrt$5a8$1@news.onet.pl>
    <i2510m$mh7$1@news.supermedia.pl>
    NNTP-Posting-Host: acc250.internetdsl.tpnet.pl
    X-Trace: news.onet.pl 1279660882 17445 83.16.54.250 (20 Jul 2010 21:21:22 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Tue, 20 Jul 2010 21:21:22 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:592385
    [ ukryj nagłówki ]


    Użytkownik "Chomik" <c...@h...pl> napisał w wiadomości
    news:i2510m$mh7$1@news.supermedia.pl...
    >
    > >>
    > >
    > > ale w czym wlasciwie problem ?
    > >
    > > Ja pisze w C i nie znam bascoma ale da sie chyba zrobic licznika do 8 w
    > > bascomie ?
    > > Czy moze nie ma przesuniecia shifta na zmiennej ?
    > >
    > > Czy masz problem jak poszczegolne bity wkleic do zmiennej ?
    > >
    > > np odebrany bit ustawiasz na najstarszym bicie zmiennej
    > > a nastepnie zmienna przesuwasz w prawo o jeden bit
    > >
    > > i robisz tak 8 razy i masz odebranych 8 bitow
    > >
    > Dla jednego bajtu nie problem. Bufor ma miec co najmniej 9 bajtow. To juz
    > troche komplikuje i bascom zbyt czasochlonny kod by do tego robil wiec
    wole
    > w asm (C wogole nie znam ). Wiec jeszcze pozostaje mi rozszerzenie tego
    > przesuwania na cale 9 bajtow.
    >

    Tablice chyba sa ?

    Jesli masz juz jeden bajt to wrzucasz go do tablicy.

    Typowe rozwiaznie to tzw. bufor okrezny (ring buffer).
    Moze jest cos takiego gotowego w bascomie ?

    Czyli tablica np. na 9 bajtow
    (albo lepiej troche wiecej jesli zuzycie RAM'u nie jest krytyczne
    to lepiej ze dwa razy wiecej, zalezy jak szybko dane przychodza i jak sa
    obrabiane)
    i dwa indeksy - indeks do zapisu i indeks do odczytu.

    Gdy indeks dojdzie do konca tablicy to go "zawijasz" go czyli zerujesz
    i idzie od pocztaku.

    Wrzucenie do bufora:
    zapis do tablicy pod indeksem na jaki wskazuje indeks do zapisania
    zwiekszenie ideksu o 1 i sprawdznie czy wiekszy lub rowny rozmiarowi
    tablicy a jesli tak to wyzerowanie.


    Odczyt z bufora:
    odczyt z tablicy z indeksu do odczytu, zwiekszenie indeksu o 1
    i sprawdznie czy wiekszy lub rowny rozmiarowi tablicy a jesli tak to
    wyzerowanie.

    Gdy oba indeksy sa rowne tzn. nie ma nic w buforze a gdy rozne
    to mozna odczytywac.

    Trzeba jeszcze uwazac na przepelnienie bufora. Mozna dodac jakas zmienna
    sygnalizujac przepelnienie.
    Jesli z jakiegos powodu nie bedzie odczytu a beda kolejne zapisy
    to dojdzie do sytuacji kiedy indeksy znow beda rowne
    i jesli taka sytuacja nastapi to znaczy, ze w buforz jest max danych
    i wiecej nie wejdzie. Warto wtedy ustawic jakas zmienna sygnalizujaca
    overflow.



    --
    Andrzej


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: