Witajcie. Sprawa dotyczy pewnego urządzenia, po wysłaniu do niego ciągu jedynek i zer uruchamia się pewna funkcja. Nigdy wcześniej nie wysyłałem nic w bascomie, jedynie proste rzeczy z diodami i timerami. Chciałem więc prosić o pomoc w przełożeniu na chłopski rozum kodu z arduino do bascoma. Oto fragment kodu: #define sync_pin 2 //power button repurposed for sync button (pin 5 on the module) #define data_pin 3 //data line (pin 6 on the module) #define clock_pin 4 //clock line (pin 7 on module) int led_cmd[10] = {0,0,1,0,0,0,0,1,0,0}; //aktywuje animcacje . int anim_cmd[10] = {0,0,1,0,0,0,0,1,0,1}; //kolejna animacja int sync_cmd[10] = {0,0,0,0,0,0,0,1,0,0}; //aktywacja synchronizacja z drugim urządzeniem Tutaj zadeklarowane są słowa 10 bitowe. void sendData(int cmd_do[]) { pinMode(data_pin, OUTPUT); digitalWrite(data_pin, LOW); //rozpoczęcie transmisji int prev = 1; for(int i = 0; i < 10; i++){ while (prev == digitalRead(clock_pin)){} //detekcja zmiany stanu zegara clk prev = digitalRead(clock_pin); digitalWrite(data_pin, cmd_do[i]); while (prev == digitalRead(clock_pin)){} //detekcja narastajacego zbocza prev = digitalRead(clock_pin); } digitalWrite(data_pin, HIGH); pinMode(data_pin, INPUT); } Tutaj jest przykładowa transmisja. Głównie chodzi o to jak sprawdzać w bascomie czy zbocze jest 0 czy 1 i jak wysłać coś na pin, tzn. można w postaci binarnej np. zmienna=&B1010101010 i to na porcie zrobi swoje czy trzeba np. po kolei ustawiać stany na pinie? Kwestia poziomu zbocza przy jakim można nadawać, to już załatwię sam, tylko nie wiem jak ugryźć to wysyłanie. PS. Ewentualnie czy można to zrobić w sposób:
|
|||
RE: Wysyłanie
Rozumiem że clk masz podawany z zewnątrz.... wiec musisz go podać na wejscie przerwania zewnętrznego... przerwanie ustawisz na detekcję zbocza narastającego lub opadającego w zależności od potrzeb. W obsłudze przerwania musisz dać licznik i poszczególne bity ustawiać na pinie, każdy bit w nowym przerwaniu (rozumiem że clk jest zegarem transmisji i każdy następny bit jest na kolejnym zboczu)...czyli p tak:
Oczywiście trzeba dac odpowiednie warunki na zerowanie n i ograniczenie długości. W zmiennej data przechowywana jest cała wartośc do wysłania
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
CLK jest generowany z tego
CLK jest generowany z tego modułu. Tam wychodzą sygnały CLK i DATA, podobnie jak I2C.
A jeśli bym użył tiny2313 to dało by się wysyłać te dane przez pin TX?
Re: CLK
Z jakiego modułu? CLK ma wychodzić z procesora czy ma być odbierany przez procesor?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Ma być odbierany. Tak to
Ma być odbierany. Tak to rozumiem z opisu./
Re: transmisja
W takim razie raczej się ni da nic przez TX wysłać.... znaczy możesz sterowac pinem na którym normalnie jest TX ale bedzie to taki sam pin jak każdy inny. Musisz zrobić tak jak napisałem w pierwszym poście, niezależnie od procka
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
CLK ma odbierać procek, co
CLK ma odbierać procek, co dziwne sprawdzałem ten CLK na oscyloskopie i wygląda bardziej jak impulsy bicia serca ludzkiego niż prostokąt..