hilpers


  hilpers > misc.* > misc.elektronika

 #1  
20.07.2010, 16:36
Chomik
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  
20.07.2010, 17:17
ptoki
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  
20.07.2010, 17:31
Chomik
>>
> 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  
20.07.2010, 18:17
ptoki
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  
20.07.2010, 18:32
Chomik
>
> 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  
20.07.2010, 19:20
ptoki
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  
20.07.2010, 19:59
Chomik
> 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  
20.07.2010, 20:10
Andy
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  
20.07.2010, 20:30
Chomik
>>
>
> 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  
20.07.2010, 21:13
Zbych
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  
20.07.2010, 21:21
Andy
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  
20.07.2010, 22:06
Gejzero
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  
21.07.2010, 13:58
Chomik
>
> 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  
21.07.2010, 14:01
Chomik
> 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  
21.07.2010, 14:21
Andy
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