Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Badanie modemu z wykorzystaniem CC1000

marcinus 31 May 2007 15:21 3101 24
  • #1
    marcinus
    Level 13  
    Cze, oprogramowalem protokol wymiany danych droga radiowa z wykorzystniem CC1000 i LPC2114. Uklad CC1000 skonfigurowalem nastepująco:
    - 2400 bit/s
    - kodowanie manchanster
    - maksymalna moc i czulosc



    Ramka protokolu wyglada nastepująco:
    10b preambuly+ 3 b charakterystyczne+ 5 b naglowka+ 2b crcnaglowka+ 2b crcdanych+ 64b danych.

    Gdy moduly sa blisko siebie nie ma problemow z komunikacja, bledy crc naglowka i danych zdarzaja sie sporadycznie, na przyklad wysylam 100 ramek i nie ma zadnego bledu.
    Moduly chcialem przetestowac w terenie, anteny wykonalem z dwoch kawalkow druta(~16 cm). Napisalem program ktyry z jednej makiety wysyla 20 ramek, na drugiej makiecie po odebraniu ramek wyswietla informacjie o popranych ramkach, ilosci bledow crc naglowka i crc danych.
    Komunikacja dziala bez problemow do okolo 30 metrow- maksymalnie po wyslaniu 20 ramek odebralem 3 ramki z bledami crc danych lub naglowka. 17 ramek bylo ok.
    Przy odleglosci 35 metrow po wyslaniu 20 ramek uzykalem 17 blednych ramek. Zdarzyla sie tez transmisja i odbior 20 popranych ramek, a innym razem bylo 5,7 blednych ramek na 20 wyslanych.
    Po zwiekszeniu odleglosci do 40 metro tylko jedna transmisia 20 ramek zostala wykryta- byly 3 bledy crc naglowka, 7 bledow crc danych i 10 poprawnych danych po stronie odbiorczej. Potem juz nie udalo sie polaczyc przy odleglosci 40 metrow. Zastanawiam sie dlaczego transmisja urwala sie tak nagle? Moze jakies pomysly? Jak wykonac jakas lepsza antene?

    Drugi problem zwiazany jest z algorytmem dostepu do lacza. Po odebraniu danych z portu rs odliczana jest losowa liczba szczelin czasowych. Po odczekaniu przetwornikiem AC mierze moc w kanale. Na tej podstwaie uznaje ze kanal jest wolny. Wylaczylem wysylanie potwierdzia aby zbadac co sie dzieje gdy 2 makiety wysylaja w tym samym momencie. Przy braku potwierdzenia danych retransmituje ramke 10 razy. Problem polega na tym ze gdy nadaja 2 makiety w jednym czasie makiety sie zawieszja czasami i potrzebny jest reset.Co moze byc przyczyna zawiesznaia sie programow? Moze szybkie przelanczanie mieczy nadawaniem i odbiorem? Wydawalo mi sie ze w takim wypadku gdy obie makiety przyjma ze kanal jest wolny i zaczna nadawac to bedzie blad crc danych lub naglowka i ramka zostanie pominieta. Nie wiem dlaczego program sie zawieszcza czasami? Jaki próg ustalic dla przetwornika AC przy rozstrzyganiu czy knal jest wolny czy zajety? Ja dalem 0.35V Dziękuj za wszelkie wskazowki .
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • #2
    lelekx
    Level 30  
    10b preambuły to trochę mało. Kiedy filtr uśredniający pracuje w trybie automatycznym, potrzebuje dłuższej preambuły. W moim urządzeniu preambuła to było kilkadziesiąt, może stokilkadziesiąt bitów.

    Odnośnie zawieszania się, czy do zmiany nadawanie/odbiór stosujesz zmianę częstotliwości lub zmieniasz zawartość rejestru dzielnika w PLL? Problem z blokowaniem PLL jest opisany w erracie CC1000.
  • #3
    marcinus
    Level 13  
    U mnie preambula to 10 bajtow tak jak producent poleca, ma byc wiecej?? Hm jesli chodzi o zmianę trybu do nadawania stosuje funkcje ChangeState() jaka proponuje producent na stronie internetowej w projekcie modemu dla kontrolera AVR. Wywoluje wiec tylko funkcje SetupCC1000RX(0x44,0x58) przy zmianie na odbior i funkcje SetupCC1000TX( 0x81, 0x48) przy przejsciu do nadawania. Wyglada na to ze RefDiv jest ma taka sama wartosc. Zauwazylem teraz ze w funkcjach zmianiajacych na odbior i nadawania jest funkcja ResetFreqSynth() czyli problem z blokowaniem petli powinien byc rozwiazany zgodnie z errata. Moze wartosci tych pradow nie sa poprawne?
    Transceiver pracuje w kanale 0 przy nastepujacych ustawieniach rejestrow czestotliwosci FreaqA: 0x50,0xA0,0x00 FreqB: 0x41,0xF6,0x10. Jakies jeszcze wskazowki??
    Dzieki za wskazowki.
  • #4
    lelekx
    Level 30  
    Założyłem, że "b" oznacza bit. 10B=80b, co wszystko wyjaśnia. Sprawdziłem w programie, u mnie:
    - preambuła to 12 bajtów
    - nagłówek 1 bajt
    - dane 6 bajtów
    - suma kontrolna 1 bajt
    - powtórzone dane 6 bajtów
    - powtórzona suma 1 bajt
    --------------------
    27 bajtów, prędkość 9600bps. Krytyczne informacje są przekazywane czterokrotnie w niewielkim odstępie czasowym; jeden z bajtów danych zawiera indeks powtórzenia pakietu.

    U mnie nie ma problemów do ok. 50 metrów; przy ok. 40 metrów, program wyłapuje w większości pierwszą transmisję, czasem z uszkodzoną jedną kopią. Detekcja preambuły zezwala na wystąpienie (jeżeli dobrze pamiętam) dwóch błędnych bitów i ignoruje błędy kodowania Manchester. Po odebraniu kompletnej preambuły przełączam tryb uśredniania na ręczny do momentu odebrania kompletnego pakietu.
    Anteny mam niewyszukane, kawałek drutu o długości lambda/4 - wszystkie wynalazki, włącznie z mikropaskowymi nie zdawały zupełnie egzaminu.

    Jeśli masz wolnego jakiegoś UARTa, podepnij się nim do peceta, a w programie umieść wstawki wypisujące na terminal wywoływane funkcje z najważniejszymi argumentami, wskaźnikiem stosu, rejestrami, etc. Może to pomoże Ci prześledzić przyczynę zwieszki, jeżeli problem nie leży po stronie radia. A nawet jeżeli, to będziesz znał przybliżone miejsce wystąpienia błędu.

    Tak na marginesie, przykład dla AVR na stronie producenta nie chciał mi zadziałać. Adaptowałem program od PIC - ten ruszył po długich i ciężkich. Ostatecznie przybrał on kształt wstawki asemblerowej do bascoma AVR. Pierwszą dziurawą wersję nawet gdzieś na forum można znaleźć.
  • #5
    marcinus
    Level 13  
    Ja oznaczylem przez "b"- bajt. Mialem przed petla while(1) tylko wywolanie funkcji AverageFreeRunCC1000(); Teraz dodalem w petli przełanczanie trybu tak jak jest w projekcie dla kontrolera PIC:

    if (UnlockAverage) {
    UnlockAverage=0;
    AverageFreeRunCC1000();
    }


    if (LockAverage) {
    LockAverage=0;
    AverageManualLockCC1000();
    }
    Tylko nie rozumie sensu takiego przelanczania? Czyli masz tak ze po odebraniu 12 bajtow preambuly ustaiwasz UnlockAverage=1, a po odebraniu calej ramki LockAverage=1?? Jaki jest sens manewrowania z tym trybem usredniania jezeli wykorzystuje się kodowanie manchester i skladowa stala jest zawsze taka sama i znana? Nie rozumie czegos z tym filtrem usredniajacym. Napisales:

    " Detekcja preambuły zezwala na wystąpienie (jeżeli dobrze pamiętam) dwóch błędnych bitów i ignoruje błędy kodowania Manchester." - nie rozumie co masz na mysli tym stwierdzeniem??
    Mam rozumiec ze wymuszanie wysylania danych w momencie odbioru nie powinno zawieszac programu?? Mam rozumiec, że funkcje zmiany trybu na Rx i Tx udostepnione na stronie producent sa poprawne? Tz uwzgedniaj errate? Program powtarzza 10 razy wysylanie danych, gdy wlacze w tym samym momencie naobu makietach jedna odbierze np 2 ramki i wysle portem szeregowym, a druga np 5 ramek i zwiecha! Moze jeszcze jakies sugestie co do zawieszania sie programu?

    Dzieki za pomoc :)[/quote]
  • #6
    lelekx
    Level 30  
    U mnie jest jedna procedura transmisji, przewiduje ona pracę w stanach:
    0) uśpienia
    1) gotowości do odbioru - jeżeli zostanie rozpoznana preambuła i znacznik początku nagłówka, przełącza się do stanu 3
    2) nadawania - do CC1000 jest przekazywana preambuła i dane; po zakończeniu przechodzi do stanu 0
    3) odbiór - z CC1000 są odbierane dane, zapisywane do bufora danych; pakiet ma stałą długość; zakończenie odbioru powoduje przejście do stanu 0

    Program, zanim przełączy tryb, sprawdza stan procedury nadawania/odbioru. Nie wolno mu samodzielnie zmienić stanu 2 i 3 na żaden inny. Rozpoczęcie odbioru ważnego pakietu lub rozpoczęcie nadawania nie może zostać przerwane, musi samoczynnie się zakończyć.

    Być może problem u Ciebie pojawia się stąd, że przełączenia nadawania/odbiór odbywają się w przypadkowych momentach, może nawet w przerwaniu.

    Odnośnie detekcji preambuły, w trybie 1 następuje porównanie ośmiu ostatnio odebranych bitów z jednym z możliwych wariantów preambuły (uwzględniając wszystkie możliwe przesunięcia bitów). Program po rozpoznaniu przynajmniej jednego bajtu utrzymuje stan "rozpoznania" do napotkaniu trzynastu kolejnych błędnych porównań - dopuszcza wystąpienie w kolejnych danych łącznie 5 uszkodzonych bitów + 8 bitów charakterystycznych nagłowka.

    Rozpoznanie preambuły powoduje zatrzaśnięcie (poza przerwaniem) filtra uśredniającego. Utrata preambuły przełącza filtr w tryb automatyczny. Przełączenie nie jest krytyczne czasowo, może odbywać się w pętli programu/wątku odbioru. Przełączenie może odbyć się wyłącznie w trybie 0 lub 1 procedury transmisji.

    Jaki cel ma przełączanie filtra uśredniającego? Nie wiem, po prostu zaczęło działać z tym lepiej. Sygnał zakodowany w Manchester nie ma składowej stałej, dlatego to jest bez sensu. Ale działa :)

    --------------

    Odnośnie szukania błędów, spróbuj zrobić tak, jak pisałem we wcześniejszym poście - wysyłaj na UART informacje o wywoływanych funkcjach, przy okazji najważniejsze znaczniki i wskaźnik stosu.
  • #7
    marcinus
    Level 13  
    Odnosnie zawiesznia sie znalazlem usterke, problem polegal na tym ze indeks wychodzil poza tablice- nie zrobilem zabezpieczenia bo wydawalo mi sie ze taka sytuacja nie nastapi. Progam sie znacznie mniej razy zawiesza. Problem jest nadal z zasiegiem, dodanie zmiany trybu pracy filru nic nie dalo . Predkosc mam 4800b/s moc i czulosc maksymalna. Moglbys mi wyslac swoje wartosci konfigurujace- dla maksymalnej mocy i czulosc i malej predkosci??
    Ja mam nastepujace wartosci:

    char DefaultConfig433[35] = {0x50,0xA0,0x00,0x41,0xF6,0x10,0x02,0x80,0x44,0x12,0xFF,0x58,0x13,0x26,0x8e,0x9,
    0x37,0x70,0x01/* */,0x1C,0x16,0x10,0x0A,0x06,0x03,0x01,0x02/* */,0x00,0x10,0x08,0x25,0x04,0x18,0x7,0x7};

    A konfugracja jest nastepujaca:
    WakeUpCC1000ToTX(0x81,0x48);
    SetupCC1000TX(0x81,0x48);
    if (!CalibrateCC1000())
    write_text_XY("TCal_f",1,1);
    else write_text_XY("TCOK",1,7) ; //printf("TCOK",1,7);


    SetupCC1000RX(0x44,0x58);
    if (!CalibrateCC1000())
    write_text_XY("kRNOK",1,1); //*/printf("kRNOK");
    else
    write_text_XY("kROK",1,11); //printf("kROK");
    for(t=0;t<0x12000;t++);

    Gdy w funkcję SetupCC1000RX wywolam z nastepujacymi parametrami: SetupCC1000RX(0x44,0x70)- tak jest w projekcje modemu na stronie producent to pokazuje mi blad kalibracji odbiornika.
    Uzyskuje 20 metrow tylko, przy 30 metrach komunikacja mi pada calkowicie.
    Zmiana trybu nastepuje tylko w stanie IDle, wysylanie potwierdzenia, danych nastepuje tylko gdy modem jest w stanie Idle.
    Jesli chodzi o zmiane trybu filtru usrednijacego to w przerwaniu ustawiam tylko flagi a funkcje:
    if (UnlockAverage) {
    UnlockAverage=0;
    AverageFreeRunCC1000();
    }


    if (LockAverage) {
    LockAverage=0;
    AverageManualLockCC1000();
    }
    jest umieszczona w petli glownej programu.
    Sory ale nie rozumie tych zdan:
    "Odnośnie detekcji preambuły, w trybie 1 następuje porównanie ośmiu ostatnio odebranych bitów z jednym z możliwych wariantów preambuły (uwzględniając wszystkie możliwe przesunięcia bitów). Program po rozpoznaniu przynajmniej jednego bajtu utrzymuje stan "rozpoznania" do napotkaniu trzynastu kolejnych błędnych porównań - dopuszcza wystąpienie w kolejnych danych łącznie 5 uszkodzonych bitów + 8 bitów charakterystycznych nagłowka."

    Ja po znalezieniu 12 bajtow preambuly ustawiam LockAverage=1 czyli przechodze do trybu manualnego filtru. Gdy liczba bledow preambuly jest wieksza od 10 to ustawiam tryb automatyczny (UnlockAverage=1;) Rowniez po odebraniu wszystkich bajtow danych ustawiam tryb automatyczny.
    Sory za wprowadzenie w blad ale mam predkosc 4.8kBaud. W rejstrze modem0 mam wartosc 0x37
    Dzieki za wszelka pomoc.
  • #8
    lelekx
    Level 30  
    Quote:
    Ja po znalezieniu 12 bajtow preambuly ustawiam LockAverage=1 czyli przechodze do trybu manualnego filtru

    I tu jest błąd - zanim filtr uśredniający się ustali, pierwsze bity preambuły pójdą sobie w powietrze, a odbiornik nawet nie zareaguje. Spróbuj ograniczyć w odbiorniku wymaganą długość preambuły do maksymalnie dwóch bajtów.

    A co do wyliczeń - materiał do eksperymentów będę miał dopiero w przyszłym tygodniu. Dziś sprzęt pracuje, oby nie nawalił :)
  • #9
    marcinus
    Level 13  
    Cze, moglbys bardziej dokladnie opisac gdzie jestblad? Bo nie rozumie zbytnio co masz na mysli. W ktorym miejscu mam zmieniac tryb filtru ? Po odebraniu preambuly i bajtow charakterystycznych? Czy wczesniej? Czy po odebraniu 2 bajtow preambuly zmieniac tryb filtru? Dzikuje za pomoc
  • #10
    lelekx
    Level 30  
    Nadajnik wysyła 96 bitów preambuły, po czym paczkę z danymi. Preambuła jest wysyłana w tym celu, żeby przygotować odbiornik (w tym filtr uśredniający) do przyjęcia danych.

    Jako że odbiornik na preambule uczy się amplitud sygnałów HI i LO, na początku transmisji może zamieniać szum na dane i niepoprawnie je odzyskiwać z wysyłanego przez nadajnik strumienia. Dlatego zwłaszcza w pierwszej części preambuła może być odebrana niewłaściwie.

    Skoro nie całą preambułę może dać się odebrać, powinieneś zmniejszyć próg, przy którym odbiornik rozpoznaje preambułę i nagłówek pakietu jako właściwy.

    Uff, mam nadzieję, że opisałem to dość jasno i gdzieś po drodze jakiejś gafy nie strzeliłem.
  • #11
    marcinus
    Level 13  
    Czyli nadaje 12 bajtow preambuly a w odborniku przyjmuje ze znalazlem preambule po rozpoznaniu np 2 bajtow naprzemiennego ciagu zer i jedynek? Mowie o algorytmie odbioru z projektu na stronie producenta. I wtedy zmieniam tryb filtru? Czy moze wymagane 2 bajty to nie bedzie za malo? Moze za duzo smieci bedzie odbioral! Zobcze jak to bedzie dzialac, dzieki za pomoc
  • #12
    lelekx
    Level 30  
    Tak właśnie; nie traktuj zmiany trybu pracy filtra jako konieczności, bo pewnie nie jest to absolutnie niezbędne i nie będę się przy tym upierał.

    Odnośnie preambuły, w odbiorniku wystarczy, że wykryjesz kolejno 2 bajty preambuły + 1 bajt charakterystyczny nagłówka, żeby rozpocząć odbiór pakietu. Szansa odebrania szumu jako pakietu to 1/(2^24), a przypadkowe śmieci i tak nie przejdą przez CRC.
  • #13
    marcinus
    Level 13  
    Cze, zastanawiam sie czy nie wydluzyć tej preambuly do 15 albo 20 bajtow, bo widze ze troche zdarza sie smieci. Jutro przetstuje to dam znac co i jak. Wielki dzieki



    Cze, problem byl rzeczywiscie w tym odbiorze preambuly. Dalem 20 bajtow preambuly, nie wiem czy to oby nie przesada. Mam jeszcze jedno pytanie. Jaki czas oczkiewwania na odbior potwierdzenia ustawiles po stronie nadajnika? Dziki ci lelekx
    :) Pozrdrowienia
  • #14
    lelekx
    Level 30  
    Opóźnienie jest zależne od wielu czynników, nie jest podane wprost. Najlepiej zmierzę. Ciężko powiedzieć patrząc w program, będę miał wieczorem sprzęt to sprawdzę.

    Moje urządzenie, zagonione w weekend do pracy zawiodło - najprawdopodobniej zaszkodziła mu wilgoć albo wahania temperatury. Objawy są takie, jakby rozjechały się częstotliwości nadajnika i odbiornika. Pracowało kilka godzin, wieczorem zaczęło raz po raz nawalać.
  • #15
    marcinus
    Level 13  
    Cze, po nadaniu danych odliczam licznikiem czas przed uplywem ktorego musi przyjsc potwierdzenie. Dziala mi na malych odleglosciach, juz przy 10 metrach potwierddzenia nie dochodza. Wina moze lezec po stronie tego czasu tylko?? Moze musisz jakas stabilizacje termiczna zrobic dla tego kwarcu Pozdrowienia
  • #16
    lelekx
    Level 30  
    W dokumentacji do CC1000 było jak wół napisane, że rekalibracja jest wymagana przy zmianie temperatury o ponad 50°C lub przy zmianie napięcia zasilania o ileśtam. Niestety nie doczytałem, ze dryft rezonatora też musi być korygowany i od tego jest nawet osobny rejestr.
    Mam już powoli dość CC1000, bo co krok jakieś niespodzianki. Teraz chyba będę musiał na pająka dolutować LM35 i monitorować temperaturę, narysować krzywą zmian częstotliwości rezonatora, wrzucić kolejny kilobajt programu... Zastanawiam się nawet nad wyrzuceniem tego szmelcu i zamontowaniem ATR2406. Mam nadzieję, że takich niespodzianek tam nie będzie.
  • #17
    marcinus
    Level 13  
    Cze, jesli chodzi o problemy z rezonatorem to pewnie wszedzie wystepuja. Heh, dobrze ze ja mam zrobic projekt protokolu a nie fizyczny modem. Z tego co czytam uklad Lm35 jest ciekawym rozwiazaniem, tylko przetwornik i mozna mierzyc temperature. Przed wilgocia tez go trzeba chronic na przyklad pomalowaniem lakierem. Co do trasceivera ATR2406 , mozna go dostac na plytce tak jak CC1000 tak zeby nie bylo problemow z podlaczeniem do dowolnego kontrolera? Z tego co widzialem na necie to sa plytki z kontrolerami Atmela i tym transceiverem. I jak komunikowac sie z kompem przy predkosciaz zedu 1Mb/s zeby wykorzystac mozliwosci modulu. Ile czasu czekasz na odbior potwierdzenia? I czy ten czas mam byc staly dla roznych predkosci? pozdrowienia
  • #18
    lelekx
    Level 30  
    Odradzam lakierować CC1000 - przykryłem kiedyś płytkę warstwą akrylu i musiałem zrywać, bo modem przestał działać. Po oderwaniu jak ręką odjął.
    Co do ATR2406, narazie pobieżnie przeglądałem datasheet i jedna rzecz mnie pociesza - żadnych cewek i dławików, jedynie poprawnie poprowadzona ścieżka antenowa. Do transmisji potrzeba 8 pinów, w tym 3 na USARTa. 1Mbps jest jeszcze do strawienia przez AVRa. Nie doczytałem tylko, czy frequency hooping jest realizowany sprzętowo czy programowo. Co do komunikacji z kompem, zostaje USB realizowane przez konwerter USB-UART na 921kbps lub natywnie USB przez mikrokontroler.
    ------------
    Wracając do CC1000, nie sprawdziłem ile czasu czeka na potwierdzenie, ale możesz założyć, że potrzeba tyle czasu, co pięciokrotność czasu wysyłki + dwukrotność czasu zmiany kierunku transceivera. W urządzeniu odpowiadającym wstaw opóźnienie przed wysłaniem potwierdzenia, żeby druga strona miała czas na zmianę nadawania na odbiór.
  • #19
    marcinus
    Level 13  
    Fajna sprawa z tym ATR. Jesli chodzi o cc1000 to nie rozumie o co chodzi z tym trybem UART?Do czego sie to wykorzystuje? jak można funkcje przerobic na bilioteki dll ? Mam jeszcze pytanie odnośnie wykorzystania łacza przy algorytmie dostepu do łacza? Otóz po wylosowaniu losowej ilości szczeelin przetwornikiem mierze moc w kanale i na tej podstaiwe decyduje czy kanal jest wolny czy nie. Jak wyznaczyc procent wykorzystania łacza przy takim algorytmie ? Jak to zrobic? POzdrowienia
  • #20
    lelekx
    Level 30  
    Tryb USART masz dobrze opisany tu: http://focus.ti.com/lit/an/swra082/swra082.pdf

    W skrócie: nie jest generowany sygnał zegarowy, a samo radio pracuje podobnie do trybu NRZ.

    Co do robienia DLL, raz w życiu chyba miałem taką potrzebę - w Turbo Pascalu pod DOSem w trybie DPMI. Nigdy nie miałem potrzeby pisać DLLi w C.

    Jeżeli dobrze zrozumiałem, chcesz wyznaczyć wykorzystanie łącza dla wszystkich elementów sieci łącznie? Moim zdaniem najbardziej miarodajnym sposobem będzie tworzenie statystyk wykorzystania łącza przez każdą końcówkę z osobna. Takie statystyki mogłyby odnotować CZAS aktywności (w nadawaniu), ilość przesłanych i odebranych pakietów, ilość powtórek nadawania i źle odebranych pakietów. Pomiar odnotowywany byłby co sekundę, przechowywane ostatnie 16 sekund. Dowolna końcówka mogłaby zapytać inną o te statystyki, nawet możnaby wydzielić dodatkowy element sieci wyłącznie do celu rejestrowania statystyk.

    Ale czy potrzebne Ci jest tak rozbudowana statystyka? Jaką masz strukturę sieci - urządzenia zostają masterami ad hoc czy jest dedykowany master?
  • #21
    marcinus
    Level 13  
    Wszystkie użadzenia maja równoprawny dostęp do łącza, w ksiazkach widzialem wzory dla różnych algorytmów dostępu. W sumie nie wiem czy mi jest to niezbędne do pracy. Mozliwe jest w paśmie 433 MHz implementacja jakiś trybów redukcji mocy? Przerwanie zewnętrzne ciągle występuje wieć chyba niebardzo? Dziki za pomoc
  • #22
    lelekx
    Level 30  
    Tematem obliczeń obciążenia łącza nigdy się nie zajmowałem. To już nie mój poziom wiedzy.
    Co do redukcji mocy - chyba jest do zrobienia. Jeżeli zaszłaby taka potrzeba, dostawiłbym trochę logiki na zewnątrz MCU:
    - odcinałaby IRQ od MCU
    - rozpoznawałaby odbiór preambuły - po odebraniu umownie 8 bitów prawidłowej preambuły włączałaby przerwania i budziła MCU
    - po zakończeniu odbioru MCU resetuje logikę i odcina źródło przerwań
  • #23
    marcinus
    Level 13  
    Jeszcze raz dzieki za pomoc:) pozdrowienia
  • #24
    gVVint
    Level 10  
    witam

    sorki ze odkopuje trupka i zamkniety temat ale: ile dokladnie wynosi wielkosc bufora w cc1000?

    mam do zbudowania i zaprogramowania 5 czujnikow z ktorych kazdy bedzie co "jakis" czas wysylal dane radiowo do 1 punktu zbiorczego - budzet energii dla takiego czujnika jest ograniczony wiec najlepiej by bylo wyslac jak najwiecej w jak najkrotszym czasie - ponawiam wiem pytanie: ile moge wpakowac do bufora ?

    ps : staralem sie poszukac w datasheet ale nie znalazlem
  • #25
    lelekx
    Level 30  
    Dokładnie 0 bitów. To nie jest samodzielny transceiver, w zasadzie to jest tylko tor RF. Bufory muszą być stworzone sprzętowo lub programowo zarówno w nadajniku jak i w odbiorniku.

    PS. Jeżeli chcesz zrobić coś bezprzewodowego niewielkim nakładem prac, to szerokim łukiem omijaj CC1000.