Może taki kodzik - odebranie znaku sygnalizowane mignięciem a nie zapaleniem LED + echo (UART_BAUD do ustawienia na własny):[syntax=C]#include <avr/io.h> #include <avr/wdt.h> #include <avr/interrupt.h> #define PARITY_NONE 0 #define PARITY_EVEN (1<<UPM1) #define PARITY_ODD ((1<<UPM1)|(1<<UPM0)) #define STOP_BITS_1...
W kwestii bascom-u Ci nie pomogę ale może wykorzystasz wstawki asemblerowe ; .org 0 rjmp RESET ; Reset rjmp EXT_INT0 ; zewnetrzne Int0 rjmp EXT_INT1 ; zewnetrzne Int1 rjmp TIM1_CAPT ; zewnetrzny wychwyt wartosci licznika 1 rjmp TIM1_COMPA ; komparator A licznika 1 rjmp TIM1_OVF ; przepelnienie licznika 1 rjmp TIM0_OVF ; przepelnienie licznika 0 rjmp...
Wyświetlacze LCD charakteryzują się interfejsem 8-bitowym, tworzonym przez 8 linii danych DB0...DB7. W praktyce stosuje się interfejs 4-bitowy z linii DB4...DB7. W trybie 4-bitowym transmisja bajtu dokonuje się w dwóch etapach - w pierwszym przesyłany jest półbajt starszy, a w drugim półbajt młodszy. Wybór sposobu sterowania zależy od konstruktora który...
Nie możesz jeden po drugim, bez żadnego czekania odczytywać czy wysyłać kolejnych bajtów przez I2C. Pomiędzy każdym wysłaniem lub odebraniem muszą być sprawdzane stosowne flagi wskazujące czy transmisja danego bajtu się już skończyła. Początek każdej transmisji musi zaczynać się warunkiem startu, a kończyć warunkiem stopu. Razem z adresem urządzenia...
0. Zacznijmy od czasu: Jeżeli masz do przesłania 3x24bity i chcesz to robić z częstotliwością ~96kHz, to wystarczy zegar SPI nieco powyżej 7MHz. Dla STM32F407 to nie problem, bo max. jest 42MHz dla SPI1 i 21MHz dla SPI2 oraz SPI3. Realne :) 1. To normalne, że ADC jest urządzeniem podrzędnym, więc nie generuje sobie zegara tylko jest taktowany z mastera....
Co do synchronizacji mialem na mysli skad Pc wie, ze wysylany bit jest 0. jesli komunikacja odbywa sie za pomoca 0/5V (chyba, ze mi sie tylko wydaje) To już wynika z samej specyfiki standardu RS232C. Transmisja każdego bajtu (przy standardowym ustawieniu) jest podzielona na ramki. Każda ramka musi zaczynać się od bitu startu. W normalnym stanie (gdy...
Czyli Twój pseudokod to jest taka jakby kolejka FIFO? No niezupełnie. To co przedstawiłem buffer_is_empty() zwracająca prawdę lub fałsz) należy sobie dopisać. Sprawa jest dosyć prosta np. w przypadku USART. Wystarczy dodać bajt do bufora, później - jeśli bufor nie jest pusty - pobrać bajt i wysłać. W przypadku I2C sprawa jest o tyle skomplikowana,...
Faktycznie sprzętowo wygląda na RS-232, natomiast logicznie są to ramki o określonej strukturze wysyłane po RS-232 8 bitów , 1 bit startu, 1 bit stopu i brak parzystości. To czy jest to TTL czy inne poziomy napięć zależy prawdopodobnie od urządzenia (lub jego ustawień). Pierwszy bajt to nagłówek określający nadawcę i odbiorcę, następnie 1-14 pakietów...
4. Blokowy układ pamięci wynika z ograniczonej przestrzeni adresowej. Dany układ nie pozwala na adresowanie każdego bajtu z osobna więc stosuje się bloki np po 64 lub 128 bajtów. Zatem wybierając adres powiedzmy 32, zaglądasz do szufladki w pamięci do której możesz zapisać te 64 lub 128 bajtów. Adres 33 wskazuje na inną "pustą" szufladkę w której jest...
Napisze dokładniej o co chodzi Wysyłam poprzez RSA plik ~100KB(wartości kolorów pixeli) Potem w funkcji 'wyrzucam' te dane na wyśw i towrzy się obraz. Tylko jeśli moja funkcja będzie się zbyt długo wykonywała, lub prędkość będzie za duża, to zdarzy się, że pominę bajty dbierane z RSA, Dlatego chciałbym wyliczyć jaka może być max prędkość badów jeśli...
Wystarczy wysłać Start i Adres. Po otrzymaniu ACK, DMA może wysłać wszystkie pozostałe dane. W tym przypadku, również adres rejestru. W przerwaniu od zakończonego transferu DMA, potrzebujesz jeszcze tylko wysłać Stop. Tylko tyle i aż tyle. W nowszych (np. F7, L4) jest trochę łatwiej. Konfiguruję i włączam DMA. Adres oraz ilość bajtów do wysłania wpisuję...
Pisząc 8MHz (wewnętrzny kwarc) miałeś chyba na myśli wewnętrzny oscylator ? tak? i że przy takiej konfiguracji szwankuje ci ATmega16 ???? Jeśli tak to mogę się podzielić moimi spostrzeżeniami. Otóż nie wiedzieć czemu też często a w zasadzie zawsze gdy biorę Atmega16 na wewn oscylatorze 8MHz to na 9600 nie chce mi działać zbyt dobrze podczas gdy ATmega8...
CLK w SPI może mieć dowolne czasy więc przerwy pomiędzy i w trakcie wysyłania bajtu są bez znaczenia, istotne są zbocza i stan linii danych w tych momentach. SPI jest dlatego praktyczne bo może być przerywana transmisja innymi zdarzeniami. To że nie wygląda to "ładnie" to nie ma znaczenia. 19 bitów być może można wysyłać sprzętowym SPI jako 24 bity...
Przegladalem jego kody i on tam jak wysyła start i stop i bajt lub odbiera to zawsze ma koncu ustawia w stan niski scl.Tylko jak stop wysyla to tak nie robi Jak by po stopie ustwił niski to zablokowałby magistrale. STOP = koniec transmisji, zwalniam magistrale. Po prostu nie rozumiesz kodu - nie ma stopu czyli transmisja nie jest skonczona, czyli jako...
1. Po co kopiować dane? Można po prostu wysłać oryginalne dane a potem dosłać to zero. Transmisja RS232 nie rozróżnia pakietów idą po prostu kolejne znaki, bez znaczenia czy zostały wysłane razem czy pojedynczo. 2. Pewnie masz też funkcje typu _write (uart_write?), która dostaje adres i długość. Wtedy taka funkcja nie patrzy na zera, tylko śle tyle,...
Tak się składa, ze również korzystam z BMA180. O to moja funkcja odczytu i zapisu bajtu z czujnika pod wskazany adres: [syntax=c]u8 spi_read_byte_acc(u8 adres) { u8 data; // Opuść ChipSelect, wyczyść poprzez odczyt DR bufor RX, oraz wyślij adres wraz z poleceniem odczytu. CS_ACC = 0; data = SPI1->DR; SPI1->DR = BMA180_READ | adres; // Oczekiwanie na...
Dla F4 niestety tak - errata sheet, str. 16 pkt 2.3.2 - najbardziej denerwujący bug nie został w żaden sposób poprawiony w stosunku do F1. W F2 - to samo. Wszędzie gdzie jest ten zonk będą działy się cyrki gdy magistrala zostanie jakkolwiek zakłócona, w tym: - stop w trakcie trwania transferu bajtu (nie wazne czy adres czy dane) - stop w ack slocie...
Nie rozumiem po co tak nakombinowałeś, Na lini DCLK pojawia się zegar w takt którego wystawiasz dane, będziesz wykrywał zbocze opadające, przełączał cały interfejs, wystawiał odpowiedni stan na DIO, czekał określoną ilość czasu, bo zbocza zatraskującego procek nie zobaczy i przełączysz interfejs w tryb odbioru na zasadzie "już powinno być ok?" A potem...
Czy zadziała opcja kiedy podłączę sobie odpowiednie linie pod wyjścia cyfrowe i napiszę program To machanie robi się tylko w przypadku kiedy slave nadaje LOW na SDA (np. z jakiś powodów urwie się transmisja na odczycie ze slave bajtu z zerami itp.). Wtedy master nie jest w stanie wygenerować stanu START albo STOP i interpretuje tą sytuację jako zajęcie...
Witam, hmmm czy może być powodem to, że jeśli dokonuję dość długich procedur w obsłudze przerwania TWI to może się właśnie tak zdarzyć, że jakby nakładają się na siebie 2 przerwania i to ze statusem &HA8 zostaje "zeżarte" ??? Tak to brzmi z tego co piszesz, ale z drugiej strony slave powinien "przetrzymać" SCL w stanie niskim tak długo, jak długo nie...
Cześć. Mam sterownik 971c. Śledzę ten temat od dłuższego czasu i widzę, że poszedł bardzo do przodu. Czy ktoś mógłby w prosty sposób opisać jak wyliczyć sumę kontrolną z ramki? W opisie protokołu c14 jest tak: "Suma kontrolna: liczona jako suma wszystkich bajtów w ramce oprócz bajtu 2 przycięta do 7 bitów (SUMA BAJTÓW)&0x7F".
Może się przydać podczas diagnozy uszkodzenia hulajnogi do której elektronikę (moduł wyświetlacza i sterownik silnika) produkuje firma Shenzhen Kechuangqi Technology Co./http://m.sz-kcq.com. Dokupienie jednej z wymienionych jest możliwe jedynie w autoryzowanym serwisie w cenie powiększonej o koszt montażu w hulajnodze.Serwisant też człowiek i wypić...
http://obrazki.elektroda.pl/8925093100_1... Witam. Tą bibliotekę napisałem jako mój pierwszy projekt napisany dla avr w C. Zawsze chciałem napisać swoją własną funkcjonalną bibliotekę, a jako, iż kiedyś zobaczyłem w EDW taki sam projekt, postanowiłem korzystając wyłącznie z wykresów czasowych tam zamieszczonych ziścić moje marzenie....
https://obrazki.elektroda.pl/9365002800_... W poprzedniej części opisałem zasadę działania i podstawy sterowania wyświetlaczy VFD, w tej części przejdę do praktycznych działań :D które większość z Was pewnie bardziej zainteresuje. Nowe wyświetlacze są stosunkowo kosztowne w zakupie i nie równoważy tego fakt że przeważnie zawierają...
https://obrazki.elektroda.pl/8811254200_... Miałem okazję przetestować modemy https://obrazki.elektroda.pl/1116184500_... Konfiguracja Modem konfigurujemy ustawiając na wejściach M0 i M1 stany logiczne wysokie i przesyłając przez UART odpowiednie ciągi konfiguracyjne np. z mikrokontrolera. Możemy także wykorzystać...
W nocie ATTiny13 masz opis programowania, gdzie znajdziesz potrzebne informacje. Całkowicie ręcznie trudno będzie to zrobić, bo tam są chyba jakieś maksymalne czasy, kiedy MCU się spodziewa określonej akcji. W nocie ATtiny13A w rozdziale 17.6.1 jest opisane Serial Programming i nie widzę tam żadnych maksymalnych czasów, są tylko minimalne, więc powinno...
Witam Mam problem z zaprogramowaniem układu AD9833 gdyż muszę ustawić jego rejestry 16 bitowe w odpowiedni tryb. Zasada działania tego scalaka jest bardzo prosta. Posiada on pięć rejestrów jeden kontrolny (16bit) i po dwa częstotliwości (po 28bit) i fazy (12bit). [url=http://www.analog.com/static/import... katalogowa...
Może się przydać podczas diagnozy uszkodzenia hulajnogi do której elektronikę (moduł wyświetlacza i sterownik silnika) produkuje firma Shenzhen Kechuangqi Technology Co./http://m.sz-kcq.com. Dokupienie jednej z wymienionych jest możliwe jedynie w autoryzowanym serwisie w cenie powiększonej o koszt montażu w hulajnodze.Serwisant też człowiek i wypić...
Witam, słabo znam te procesory, musisz więc sprawdzić w dokumentacji, moim zdaniem problem nie bierze się z kolejności wysyłania ale z kolejności odczytu. Generalnie, ośmiobitowe procesory przy dostępie (odczycie i zapisie) do szesnastobitowych timerów wykorzystują (dla zagwarantowania jednoczesności obu bajtów) specyficzny mechanizm. Starszy bajt nie...
https://obrazki.elektroda.pl/1646087900_... Przedstawiam mały poradnik, jak połączyć się z urządzeniami wyposażonymi w port szeregowy przy wykorzystaniu sieci LAN. Można w ten sposób podłączyć dowolne urządzenia z portem szeregowym, jak różnego rodzaju sterowniki, liczniki itp., komunikujące się w dowolnym protokole - zaczynając od...
Witam Czy port szeregwy w PC (np do RS232) jest tylko asynchroniczny czy tez mozna przesyłać przez niego synchronicznie? Cz w transmisji asynchronicznej mozna przeslac zamiast 1 bajtu dwa lub np 12 bit? Pozdrawaim
Czy one kiedykolwiek są "dualne" tzn raz słowowe, raz bitowe ? Owszem, są takie architektury, w których jest wymagany specyficzny dostęp do rejestrów. Przykładem może być moduł SPI w nowszych STM32. Dane do transmisji zapisuje się do rejestru danych, który może mieć 8 lub 16 bitów szerokości. Operacja zapisu wyzwala przepisanie zawartości rejestru...
Cała obsługa transmisji po SPI powinna zostać przeniesiona do funkcji obsługi przerwania od SPI. Nie bardzo chcę to robić. SPI działa na max, czyli fcpu/2. Wysłanie bajtu to 16 cykli zegara. Wejście i wyjście z przerwania zajmie więcej niż transmisja bajtu. Używanie przerwań jest więc trochę bez sensu.
Mam taki problem Robię komunikacje dwóch AVR-ów. Pierwszy wysyła ciąg 30 bajtów drugi odbiera zawsze bezbłędnie z tym nie ma problemu. Gdy odbierze dane poprawnie od razu odsyła pierwszemu znak "T" dając pozwolenie na wysłanie nowych danych. Zrobiłem sobie taką próbę że pierwszy wysyła dane co 20ms nie czekając na zgodę na nadawanie czyli tą zwrotną...
Mysle że implementacja kol (at)pawlik118 na zasadzie "kompensujących się błędów" ukrywa problem. Asynchroniczna transmisja bajtu wymaga 11-12 impulsów zależnie od ustawień. Jeśli przyjmiemy 12, weźmiemy odwrotność, błąd zegara 4% to pół impulsu, umowna granica że z większym błędem nie może dobrze działać.
Niektóre radiolinie mają wbudowane kodowanie transmisji, ale większość z nich nie. W Bascomie można kodować dane za pomocą Xtea, ale zobacz, co się dzieje, gdy wysyłasz te same dane. Zakodowany ciąg Hexstring zawsze wygląda tak samo. Jeśli więc ktoś nagra twoją transmisję, to gdy zostanie ona odtworzona, urządzenie zareaguje tak samo. https://obrazki.elektroda.pl/7576017000_...
Układ służy do monitorowania magistrali I2C. Podpięty do magistrali, obserwuje ją w sposób pasywny, odczytuje wszystkie przesyłane tam informacje. Wykrywa znaczniki początku (START CONDITION), powtórzonego początku (REPEATED START CONDIOTION) oraz końca (STOP CONDITION) transmisji, rozpoznaje typ przesylanych bajtów (adres, dana zapisana, dana odczytana)....
SPI ma bufor, więc ładowanie nic nie kosztuje - odbywa się w czasie transmisji poprzedniego bajtu. Transmisja bajtu odbywa się automatycznie, jeśli rejestr danych nie jest pusty, więc to też nic nie kosztuje. Co do animacji - małoistotne jest jak szybko kontroler może odświeżać, jeśli LCD z KS zmienia stan piksela z zapalonego na zgaszony i odwrotnie...
Dlaczego nieprzerwanej? I nieprzerwanej w pętli wykonującej się 300ms Klasyczny przepadek Arduinowca, dziesiąki delay. Nawet nie będzie, ze pętla główna wykonuje się 0ms ale obsługujemy w niej LCD przez PCF8574czyli 100kHz i 4 przesłania na jeden bajt: danaL + E=H e=L danaH +E=H E=L Wyswietlacz ma 20x4, więc 160znaków co daje 640 danych do wysłania...
Bo nie ma związku. Deterministycznych szans nie ma. Może się najwyżej udać przez przypadek, bo być może po którymś bajcie poprawnie załapiemy bit startu po kilku wcześniejszych framing error. W przypadku opisanym powyżej (ciąg bajtów o stałej wartości) nie nastąpi to nigdy. Zresztą - bijemy pianę. Jeśli moja diagnoza problemu jest słuszna, to wprowadzenie...
Punkt 3. powyżej świadczy o błędzie w koncepcji lub realizacji. Transmisja SPI powinna zawsze zostawiać interfejs w stanie "czystym" - po zapisie jednego bajtu musisz odczytać jeden bajt z DR. Po co Ci to DMA do transmisji jednego bajtu? Po tym jednym bajcie musisz i tak przeprogramować SPI (kierunek), a następnie nadać i odebrać blok bajtów. Punkt...
Próbuję porozumieć się z układem ATM90E32, na płytce są dwa takie układy na jednej magistrali SPI + procesor ATXMEGA128A3U. Każdy z układów ma osobną linię !CS, tak wygląda ich połączenie: https://obrazki.elektroda.pl/1436445200_... Próbowłem używać USART w trybie SPI ale nic nie dawało użycie " PORTC_REMAP=PORT_SPI_bm;" (aby zamienić...
W każdej funkcji i2c stosuje czekanie na zwolnienie flagi. To nie to samo co odczyt bitu potwierdzenia. Ty po prostu czekasz tylko na zakończenie transmisji bajtu. Informacja o wysłaniu (lub nie) przez układ slave bitu potwierdzenia znajduje się w rejestrze TWSR po zakończeniu transmisji bajtu wpisanego do TWDR i jest ona bardzo istotna, bo dzięki...
Nie napisałeś jaki ma to być Modbus ascii czy rtu, kodu w bascomie nie posiadam ale może Ci coś podpowiem, więc tak jeśli chodzi o rtu jest to postać bitowa i ważne są odstępy czasu miedzy znakami oraz początkiem i końcem ramki, jak to zrealizować a no bardzo prosto ramkę składasz z ascii i posyłasz to na rs232/485 i będzie działało może nie jest to...
http://obrazki.elektroda.pl/5214176000_1... Witam. Przedstawione rozwiązanie powstało z myślą o zdalnym (radiowym) sterowaniu modelem samochodu. Umożliwia płynne regulacje: kierunku (lewo/prawo) oraz prędkości ruchu (przód/tył). Rozkaz typu "włącz/wyłącz" pozwala np. uruchamiać sygnał dźwiękowy (klakson) lub włączać światła. Spośród...
Oto zawartości plików twi.c: #include "twi.h" // procedura transmisji sygnału START void twistart(void) { TWCR = (1<<TWINT)|(1<<T... while (!(TWCR & (1<<TWINT))); } // procedura transmisji sygnału STOP void twistop(void) {...
Tak to jest, kiedy zamiast uczciwie za darmo sterować transceiverem z mikrokontrolera czy komputera, stosuje się dodatkowe układy analogowe, podwyższające koszt układu i wprowadzające błędy. Sama transmisja jest trywialna - każdy bit trwa tyle, ile wyliczyłeś, jedynka jest stanem nieaktywnym. Kiedy stosuje się takie dziwadełka, czas trwania impulsu...
W pdfie do RFM12 napisali ze "recommended supply voltage max. 3.8V", a absolute maximum ratings przewiduje zasilanie max. 6V (!!), wiec uklad ma wręcz powinność pracować mniej lub bardziej poprawnie na zasilaniu 4.95V. Przynajmniej powinna dzialac transmisja po SPI, zeby chociaż odczytac bajt statusu. Pytanie: Jaka wartosc maja bity czytane z bajtu...
hmm... a może samo sterowanie fazowe masz spierniczone i tu jest pies pogrzebany ? Problem jest banalny, w kodzie, którego analiza to katorga (dlatego nie zagłębiam się) ma ZAWSZE nawet na czas generowania resetu, co trawa ok 500us, później presence, co daje razem ok 800us, zawiesza przerwania. To samo w czasie transmisji danych, transmisja bajtu to...
Czyli trzeba mieć pewność, że transmisja SPI drugiego bajtu się skończyła, aby "machnąć" LE. Od tego jest odpowiedni bit SPIF w rejestrze SPSR, albo odpowiednia obsługa przerwania od SPI (osobiście preferowałbym ta drogę)...
odczyt bajtu wysyłanie bajtu odwracanie bajtu
panasonic świecić czerwona dioda niska wydajność klimatyzacji wyświetlacz mrugać
esp32 programowanie cięcie styropianu
Zamiennik dla domofonu Panasonic KX-7765 Miernik Avidsen 107112 - brak reakcji wyświetlacza