eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAtmega jak zrealizowac odbior szeregowyRe: Atmega jak zrealizowac odbior szeregowy
  • Data: 2010-07-20 21:21:20
    Temat: Re: Atmega jak zrealizowac odbior szeregowy
    Od: "Andy" <a...@c...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie 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: