|
#1
|
|
|
|
|
Potrzebuje polaczyc odbiornik FFSK 2400Bd CMX469A do Atmega8. Odbierany
sygnal sklada sie z 9 bajtow gdzie pierwszy bajt jest zawsze staly (preambula). Niestety doswiadczenia w programowaniu wielkiego nie mam. CMX na wyjsciu daje sygnal zegarowy i sygnal danych. Wiec kombinuje ze zbocze zegarowe bedzie generowalo przerwanie obsluga przerwania bedzie sprawdzala stan linii danych i dopisywala do jakiegos bufora ktory bedzie sprawdzany na wystapienie preambuly a jak ta wystapi to odczyta kolejne 8 bajtow. Jesli nawet to by zadzialalo to dalej nie wiem jak to zrealizowac programowo. Podwpowiedzcie czego szukac zeby o tym czegos sie dowiedziec. Jak tworzyc bufory odczytywac i zapisywac w nich itp. Moze sa jakies dostepne zrodla robiace cos w tym stylu ktore mozna by wykorzystac. Goglujac po haslach typu szeregowa transmisja danych natrafiam praktycznie na opisy UART-a i tego typu rzezcy. Tutaj transmisja jest niestandardowa i obsluge rzeba by napisac od zera. Mozecie polecic jakas ogolnodostepna literature, strony, czy ewentualnie jakies hasla po ktorych szukac rozwiazan tego typu funkcji. Z gory dziekuje za pomoc. Dodam tylko ze nie wchodzi w gre zlecenie tego komus bo jest to jednorazowy projekt w dodatku beznakladowy wiec albo sam cos zrobie albo nie bedzie wcale. |
|
|
|
#2
|
|
|
|
|
On 20 Lip, 18:36, "Chomik" <chomi> wrote:
[..] > robiace cos w tym stylu ktore mozna by wykorzystac. Goglujac po haslach typu > szeregowa transmisja danych natrafiam praktycznie na opisy UART-a i tego > typu rzezcy. Tutaj transmisja jest niestandardowa i obsluge rzeba by napisac > od zera. Mozecie polecic jakas ogolnodostepna literature, strony, czy > ewentualnie jakies hasla po ktorych szukac rozwiazan tego typu funkcji. Z > gory dziekuje za pomoc. > Dodam tylko ze nie wchodzi w gre zlecenie tego komus bo jest to jednorazowy > projekt w dodatku beznakladowy wiec albo sam cos zrobie albo nie bedzie > wcale. > Tez jestem poczatkujacy ale pachnie mi to standardem. Ten odbiornik po zwyklym rs232 gada czy ma jakies niestandardowe parametry? Jak gada na 0V i 5V w zwyklym trybie 3 drutowym (jesli jednokierunkowo) to starczy zwykla atmega8 i bascom. Ja znalazlem ladne rozwiazania w ksiazce marcina wiazani mikrokontrolery dla poczatkujacych. Ale to raczej standard wiec jak wrzucisz w google atmega serial to ci wyrzuci co nieco wiedzy. np: http://www.slideshare.net/embedautom...n-in-atmega-16 slajd 12 do wyrysowania w eagle lub kicadzie. A potem jakies proste tutoriale w bascomie zalatwia sprawe. Ale jesli jestes kompletnie zielony to lekko nie bedzie. Gotowca niestety nie mam pod reka moze kto inny podrzuci cos sprawdzonego. |
|
#3
|
|
|
|
|
>>
> Tez jestem poczatkujacy ale pachnie mi to standardem. > Ten odbiornik po zwyklym rs232 gada czy ma jakies niestandardowe > parametry? > Jak gada na 0V i 5V w zwyklym trybie 3 drutowym (jesli > jednokierunkowo) to starczy zwykla atmega8 i bascom. > Ja znalazlem ladne rozwiazania w ksiazce marcina wiazani > mikrokontrolery dla poczatkujacych. > Ale to raczej standard wiec jak wrzucisz w google atmega serial to ci > wyrzuci co nieco wiedzy. np: > [..] > slajd 12 do wyrysowania w eagle lub kicadzie. > A potem jakies proste tutoriale w bascomie zalatwia sprawe. > Ale jesli jestes kompletnie zielony to lekko nie bedzie. > Gotowca niestety nie mam pod reka moze kto inny podrzuci cos > sprawdzonego. > To nie ma nic wspolnego z RS-em. Sama transmisja idzie droga radiowa wiec od samego szumu CMX469 moze generowac jakis ciag ktory nie jest uzyteczny. Przy RS zaklada sie ze polaczenie jest w 100%. Jest sygnal startu, stopu itd. Tutaj CMX wypluwa z siebie ciag zerojedynkowy i musimy sie sami zorientowac co jest transmisja a co smieciami. RS i UART tutaj raczej na nic. |
|
#4
|
|
|
|
|
On 20 Lip, 19:31, "Chomik" <chomi> wrote:
> > To nie ma nic wspolnego z RS-em. Sama transmisja idzie droga radiowa wiecod > samego szumu CMX469 moze generowac jakis ciag ktory nie jest uzyteczny. Przy > RS zaklada sie ze polaczenie jest w 100%. Jest sygnal startu, stopu itd. > Tutaj CMX wypluwa z siebie ciag zerojedynkowy i musimy sie sami zorientowac > co jest transmisja a co smieciami. RS i > UART tutaj raczej na nic. Ja cie nie chce straszyc ale tego FFSK 2400Bd CMX469A nie ma w google. :) Ale ok, jesli masz po prostu dwa sygnaly i jeden jest zegarowy a drugi z danymi to sprawa jest relatywnie prosta. Polecam ksiazke http://www.btc.pl/?id_prod=65500 Na poczatek bedzie dobra. Trudno mi cos wiecej zaproponowac bo tez sie ucze. Mozesz tez rozwazyc inne jego pozycje bo pisze dobrze i przyklady dzialaja (a przynajmniej te ktore zbudowalem). |
|
#5
|
|
|
|
|
>
> Ja cie nie chce straszyc ale tego FFSK 2400Bd CMX469A nie ma w > google. :) > Ale ok, jesli masz po prostu dwa sygnaly i jeden jest zegarowy a drugi > z danymi to sprawa jest relatywnie prosta. > Polecam ksiazke [..] > Na poczatek bedzie dobra. Trudno mi cos wiecej zaproponowac bo tez sie > ucze. > Mozesz tez rozwazyc inne jego pozycje bo pisze dobrze i przyklady > dzialaja (a przynajmniej te ktore zbudowalem). > > -- Cos chyba zle wpisales bo ten scalak jest na pierwzym miejscu w google i kolejnych kilkudziesieciu pozycjach. Co do ksiazki to taka mam a w Bascomie pisze programy od dawna. Lecz do tych zastosowan bedzie potrzebna jakas wstawka w asemblerze (wole go niz C) ale nie wiem z ktorej strony ugryzc zwlaszcza temat tworzenia, organizacji i dostepu do bufora bo to juz by mi cos dalo. |
|
#6
|
|
|
|
|
On 20 Lip, 20:32, "Chomik" <chomi> wrote:
>> Cos chyba zle wpisales bo ten scalak jest na pierwzym miejscu w google i > kolejnych kilkudziesieciu pozycjach. > Co do ksiazki to taka mam a w Bascomie pisze programy od dawna. Lecz do tych > zastosowan bedzie potrzebna jakas wstawka w asemblerze (wole go niz C) ale > nie wiem z ktorej strony ugryzc zwlaszcza temat tworzenia, organizacji i > dostepu do bufora bo to juz by mi cos dalo. Wpisalem cala fraze i pokazalo sie zero wynikow. Ale rzeczywiscie samo CMX469A pokazuje troche wynikow. A czemu wstawka w asm? bascom jest relatywnie szybki jesli nie uzywa sie fikusnikow. Probowales cokolwiek juz napisac w tym temacie? Ja na lysym bascomie zrobilem pwm-a i nawet dziala czyli mruga diodami szybciej niz te200Hz (ale nie wiem dokladnie ile). |
|
#7
|
|
|
|
|
> Wpisalem cala fraze i pokazalo sie zero wynikow.
> Ale rzeczywiscie samo CMX469A pokazuje troche wynikow. > A czemu wstawka w asm? bascom jest relatywnie szybki jesli nie uzywa > sie fikusnikow. > Probowales cokolwiek juz napisac w tym temacie? > Ja na lysym bascomie zrobilem pwm-a i nawet dziala czyli mruga diodami > szybciej niz te200Hz (ale nie wiem dokladnie ile). > Pewne rzeczy latwiej w asm zrobic, chodza szybciej a co najwazniejsze mniej miejsca zajmuja. Procz odebrania jeszcze te dane trzeba obrobic i to pewnie juz by bylo w Bascomie bo tak mi latwiej. Poki co nic nie mam ani w asm ani w bascomie bo stanalem na etapie wymyslania jak zrobic 9 bajtowy bufor zapisywany bit po bicie. Jak to wymysle albo ktos mi podpowie zeby nie wywazac otwartych juz drzwi, to wtedy bede myslal nad reszta. |
|
#8
|
|
|
|
|
Uzytkownik "Chomik" <chomik99> napisal w wiadomosci
news:llo1 > > > Wpisalem cala fraze i pokazalo sie zero wynikow. > > Ale rzeczywiscie samo CMX469A pokazuje troche wynikow. > > A czemu wstawka w asm? bascom jest relatywnie szybki jesli nie uzywa > > sie fikusnikow. > > Probowales cokolwiek juz napisac w tym temacie? > > Ja na lysym bascomie zrobilem pwm-a i nawet dziala czyli mruga diodami > > szybciej niz te200Hz (ale nie wiem dokladnie ile). > > > > Pewne rzeczy latwiej w asm zrobic, chodza szybciej a co najwazniejsze mniej > miejsca zajmuja. Procz odebrania jeszcze te dane trzeba obrobic i to pewnie > juz by bylo w Bascomie bo tak mi latwiej. > Poki co nic nie mam ani w asm ani w bascomie bo stanalem na etapie > wymyslania jak zrobic 9 bajtowy bufor zapisywany bit po bicie. Jak to > wymysle albo ktos mi podpowie zeby nie wywazac otwartych juz drzwi, to wtedy > bede myslal nad reszta. > 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 |
|
#9
|
|
|
|
|
>>
> > 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. |
|
#10
|
|
|
|
|
Chomik przemówil ludzkim glosem:
> Mozecie polecic jakas ogolnodostepna literature, strony, czy > ewentualnie jakies hasla po ktorych szukac rozwiazan tego typu funkcji. Z > gory dziekuje za pomoc. Przeczytales to http://www.cmlmicro.com/Products/app...A_469AFW_1.pdf ? Z opisu wynika, ze uC móglby pracowac jako SPI slave. Przy nadawaniu wlaczasz Tx Enable i dane wysylasz w takt Tx Sync: > The Tx Data must be valid at the time of the rising edge of the Tx Sync clock signal. Therefore, the optimum > time to change Tx Data is on the falling edge of the Tx Sync clock. Odbiór robisz synchronicznie z Rx Sync: > The optimum time to sample the Clocked Data Out is on the falling edge of the Rx Sync Out clock signal. Oczywiscie mozesz sie obyc bez SPI podlaczajac linie Sync do przerwan. |
|
#11
|
|
|
|
|
Użytkownik "Chomik" <chomik99> napisał w wiadomości
news:mh71 > > 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. |
|
#12
|
|
|
|
|
Użytkownik "Chomik" <chomik99> napisał w wiadomości
news:mh71 > > 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. Ja bym się zainteresowal programową implementacją portu szeregowego. Kiedyś były dobre przyklady w asmie ale ja wtedy szukalem na 51. Zapewne na AVR też są. Przy prędkości 2400 to chyba można by ręcznie odbierać :P. A tak na serio to chyba sygnał był w tych przykładach próbkowany z 8 razy na jedną zmiane stanu. Tutaj http://www.btc.pl/index.php?ukey=pro...roductID=20844 jest przykład realizacji programowej w Bascomie. Jednak, korzysta on z Bacomowego podprogramyu :( Ewentualnie można skompilować prosty przykład i zobaczyć jak Bascom realizuje taką transmisje programowo i na niej się wzorować już w asemblerze. Gejzero. |
|
#13
|
|
|
|
|
>
> Przeczytales to > [..] ? > > Z opisu wynika, ze uC móglby pracowac jako SPI slave. Przy nadawaniu > wlaczasz Tx Enable i dane wysylasz w takt Tx Sync: >> Odbiór robisz synchronicznie z Rx Sync: >> Oczywiscie mozesz sie obyc bez SPI podlaczajac linie Sync do przerwan. No i tak napisalem Sygnal CLK bedzie generowal przerwanie i wtedy bedzie odczytywany bit. Problem byl bardziej co dalej z tym zrobic ale juz chyba powoli rozwiazalem. |
|
#14
|
|
|
|
|
> 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. > Problem jest inny. Bufor ten musi funkcjonowac na zasadzie rejestru przesuwnego przesuwajac cala zawartosc o 1 bit po kazdym odebranym.. Po kazdym odebranym bicie musze sprawdzic czy przyszla ramka startowa. Poki co napisalem rozwiazanie tego programowo w bascomie nie wiem tylko czy czasowo sie procesor ze wszystkim wyrobi. Dlatego tez wspominalem o tym asm zeby w nim pewne rzeczy zrobic. |
|
#15
|
|
|
|
|
Użytkownik "Chomik" <chomik99> napisał w wiadomości
news:2lu2 > > 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. > > > Problem jest inny. Bufor ten musi funkcjonowac na zasadzie rejestru > przesuwnego przesuwajac cala zawartosc o 1 bit po kazdym odebranym.. Po > kazdym odebranym bicie musze sprawdzic czy przyszla ramka startowa. Poki co > napisalem rozwiazanie tego programowo w bascomie nie wiem tylko czy czasowo > sie procesor ze wszystkim wyrobi. Dlatego tez wspominalem o tym asm zeby w > nim pewne rzeczy zrobic. > Jesli stala masz tylko preambule (jeden bajt) to poluj tylko na niego Przesuwanie wszystkich 9 bajtow chyba nie ma sensu. |
|
|
|
|
| Podobne wątki | |
| Ja Tomek, ja Tomek, ksRobak, czy Pan mnie slyszy, odbior, PILNA DEPESZA, odbior BARDZO PILNE STOP POWTARZAM STOP BARDZO PILNE STOP POWTARZAM STOP BARDZO PILNE STOP LOBOTOMIA SKUTECZNA STOP PACJENT ZYJE STOP NOWY WATEK STOP PROSZE PATRZEC STOP NOWY WATEK... |
|
| Jak zrealizowac czek? > Hej, > dostalem jako odszkodowanie z linii lotniczej czek. > Bank - jakis niemiecki Helaba. > PKOBP nie chce mi tego zrealizowac, > PKO SA tez nie, BZ WBK - "a co to... |
|
| Jak zrealizowac taki mailing? Witam! Mam problem z wysylaniem wiadomosci meilowych do uzytkownikow mojej strony (prawie 7000 osob). Moja strona oparta jest na phpnuk-u. I mam teraz problem poniewaz po 5... |
|
| gdzie zrealizowac czek Mam czek, przyslany z kanady, chce go zrealizowac w banku w moim miescie, mowia ze nie da rady... musze zalozyc konto dewizowe i czekac 5 tygodni!!!! Czy aby napewno pani w... |
|
|
Czasy w strefie GMT. Teraz jest 22:56. | Privacy Policy
|