Kiedyś umieściłem na obecnie niedostępnej stronie and.elektroda.eu materiał o dekodowaniu sygnału DCF. Urządzenie potrzebne było w urządzeniu, które wymagało synchronizacji czasu w pomieszczeniu gdzie wyprowadzenie anteny zewnętrznej do GPS było utrudnione. Poniżej umieszczam treść oryginalnego materiału, który może być pomocny przy budowaniu urządzeń...
Zacznij od opisania formatu danych. Po czym odbiorca ma poznać, że zakończono przesyłanie liczby? Tego ne napisałeś powyżej. Odbiór łatwo zrobisz w przerwaniu, pisząc obsługę przerwania w konwencji automatu. Najpierw poczytaj, co oznacza poprzednie zdanie. Potem możesz zacząć pisać automat. Potrzebne tylko dwa stany: - oczekiwanie na 'L' - skanowanie...
Witam, moim zdaniem źle odbierasz dane ze sprzętowego spi. Nie ma sprawdzenia czy dana (bajt) jest przez spi odebrana, a Ty zczytujesz ją zanim odbieranie sie zakończy. Przy spi programowym Ty wysyłasz zegar i po ośmiu taktach sprawdzasz liczbę odebranych bajtów. Przed odczytem SPID.DATA sprawdź flagę przerwania - co znaczy że odebrano, bądź wysłano...
Tego Ci trzeba (gotowy przykład): http://mikrokontrolery.blogspot.com/2011... a to przy okazji: http://mikrokontrolery.blogspot.com/2011...
witam. buduje systemy na rs485. niestety zadna z komend bascomowych nie była mi przydatna. używam przerwania do odbioru i sam obsługuje własny bufor z ustawieniem flagi informujacej iz właśnie w buforze jest odebrany "ważny" pakunek danych '------------------------ Rx_serwer: Rxdata = Udr1 Rem zabezpieczenie przed przepełnieniem bufora If Rx_count...
Profesjonalnie to można programować w każdym języku, tylko trzeba go po prostu znać i umieć stosować w praktyce co najważniejsze. Dla takich początkujących jak ty Bascom powinien być jednym z lepszych języków tym bardziej, że nie rozumiesz jeszcze przerwań. Bascom daje ci gotowe rozwiązania w tym zakresie na maxa - popatrz sobie na Config Serialin ........
A spróbuj tak: [syntax=basic4gl] ' Fuse bity ustawione fabrycznie $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Output 'sterowanie segmentów LED Config Portd = Output 'sterowanie segmentów LED Config 1wire = Portc.5 Anoda1 Alias Portc.1 ' Lewy wyświetlacz Anoda2 Alias Portc.2 Anoda3 Alias Portc.3 Dim Nr_wysw As Byte Dim Liczba As Long Dim...
To jest proste jak świński ogon :D ahahahaha, ale napisz kawałek kodu. Czy masz tam jakiś LCD czy nie, czy masz tam jakiś Timer ustawiony do odmierzania sekundy czy Wait`ujesz :D Czy w dokumentacji czujnika pisze, że nadaje tez na końcu niewidoczne w terminalu znaki 13 lub 10? EDIT: aaa masz tu taki prosty. Napisałem przy śniadaniu więc błąd mógł się...
Momentami odnoszę wrażenie, że nie wiesz co piszesz. Do pomiaru długości nie potrzebujesz dodatkowego timera oprócz tego t0. Wystarczy, że będziesz sprawdzał co określony czas, jeśli na wejściu będzie ten sam stan co poprzednio, to będziesz zwiększał pomocniczą zmienną. Jeśli stan się zmieni, to dopiero zapiszesz wartość do np.tablicy, żeby później...
Kilka spostrzeżeń na temat IR. AC jest problematyczne z obecną implementacją timera 50uS, ponieważ ciągi wymagane przez AC są znacznie dłuższe (w porównaniu do protokołu NEC), a timer jest ustalony, ponieważ powoduje błąd po pewnej długości ciągu poleceń. Próbowaliśmy tego z IR2 i flipperem zero w tym czasie, dlatego istnieje sterownik IR2. Zmienić...
http://obrazki.elektroda.pl/3796073600_1... I Opis ogólny urządzenia: Chciałbym przedstawić mój projekt bazujący na mikrokontrolerze STM32 dokładnie na modelu STM32F11RET6 http://www.st.com/content/st_com/en/prod... Jest to sterownik dla urządzenia...
W Zmienne globalne — wiedz, kiedy są modyfikowane Zmienne globalne muszą być ostrożnie obsługiwane, gdy są używane z przerwaniami, ponieważ te są generalnie asynchroniczne. I jeżeli zmienna globalna jest modyfikowana przez ISR, może zostać zmieniona w dowolnym momencie. Musimy mieć na uwadze następujące aspekty: Odczyt/zapis zmiennych globalnych...
wytłumacz mi kod bardziej szczegółowo. Oczywiście, chętnie to zrobię. Zacznijmy od początku: 1. `#define F_CPU 8000000UL` - To jest definicja częstotliwości taktowania mikrokontrolera. W tym przypadku wynosi ona 8 MHz. 2. `#include <avr/io.h>, #include <avr/interrupt.h>, #include <util/delay.h>` - To są biblioteki, które zawierają...
Nie miałem na myśli obsługi przycisku w przerwaniu tylko o przycisk, który wykonuje przerwanie w którym jest wysyłanie komendy lub odbieranie (SLAVE). Nie wiem, czy dobrze to rozumiem, ale na wszelki wypadek. Nie wpadnij czasem na rozwiązanie, aby przycisk generował przerwanie. To raczej kiepskie, ale jeśli już, to pamiętaj o debouncingu przycisku...
Dodam, że w obsłudze przerwania występuje takie ostrzeżenie przy kompilacji: "usart.c:60: warning: passing argument 1 of 'USART_puts' makes pointer from integer without a cast". Tylko nie wiem o co w nim chodzi, wszystkie typy zmiennych się zgadzają. Nieprawda, podajesz char tam gdzie powinno być char *. Ale po prostu wołasz złą funkcję. W przerwaniu...
Sposób najprostszy - użyć przewodów zamiast mikrokontrolera. Jeśli nie stać nas na dwa przewody, można zaprogramować DMA w tryb cykliczny na bezpośrenią transmisję pomiędzy rejestrami danych obu UARTów. Jeśli oprócz kopiowania dane mają być jeszcze przetwarzane, to należy oprogramować oba UARTy na przerwaniach i w nich zrobić przetwarzanie danych i...
Witam, drogich forumowiczów. Mam problem z komunikacją kilku urządzeń w sieci rs485. A tak prawdę mówiąc to z komunikacją pomiedzy dwoma, jednym "master" i jednym "slave". Normalnie staram się zadawać pytania w ostateczności na forum Elektroda, ale po prawie 3 tygodniach siedzenia przy problemie, przeglądaniu masy poradników i postów związanych z rs485...
Ja tam nie wiem, ale jakoś podejrzanie wygląda, że jest włączone przerwanie odbioru danych UART (a handlera ani widu) a nie ma włączonego przerwania końca odbioru DMA.
Dobrze. Użyłam Twoich funkcji, bo moja metoda na nic się nie zadała. Niby Twoje rozwiązanie działa. Ale zastanawia mnie jeden fakt. Otóż ze zrobionej aplikacji w C++builder wysyłam 5 liczb na mikrokontroler, i odbijam je z powrotem do aplikacji. Poprawnie odebrane są tylko te liczby które są większe od 8. Nie rozumiem tego. Tak wysyłam z builera char...
A faktycznie :D Tylko Ci to trochę wstrzymuje program. Bo instrukcja InputBin w przerwaniu poza odebraniem pierwszego bajtu czeka też na kolejne 3. Poza tym prawdopodobnie ustawiają one na nowo flagę przerwania więc po odebraniu tych 3 bajtów i wyjściu z przerwania program znowu wchodzi w przerwanie. Odbieranie zmiennej Long w przerwaniu ostatecznie...
Miałem takie zadanie: odbieram wiadomości z kolejki (message queue), używając mq_notify() do otrzymania sygnału, że pojawiła się wiadomość w kolejce, która była pusta, i mq_receive() do odbierania. Każda wiadomość może zawierać wiele elementów, które mają być przekazywane do EPICS-a. Tu mniejsza o to, czym jest EPICS - istotne jest może to, że nie mogę...
Ok, to postaram się krótko i na temat ;-) Moduł RFM12B podłączony jest do ATMega8 następująco: MEGA8 - RFM12B (16) SS - NSEL (17) MOSI - SDI (18) MISO - SDO (19) SCK - SCK (5) INT1 - DCLK/CFIL/FFIT oraz FSK/DATA/nFFS przez rezystor 10k do Vcc Makro, którego używam dla klarowności kodu: #define cbi(sfr, bit)...
Lecz nie potrafię wymodzić alternatywy dla odbioru danych i kożystam z przerwania RXNE: W przerwaniu masz odbieranie 3 bajtów i 3 pętle oczekiwania? ale on na odczycie wartości ze status register po prostu się zatrzymuje Jakbyś warunek pętli i jej ciało rozpisał w dwóch linijkach to byś się przekonał, że nic się nie zatrzymuje (zakładam, że używasz...
Chciałbym zrobić wysyłanie i odbieranie za pomocą przerwań(zgodnie ze sztuką),aby nie "zawieszać" wykonywania pozostałych operacji. Zacząłem od wysyłania. W wielu bibliotekach, które przeglądałem spotkałem się z takim podejściem, więc sam też postanowiłem je wykorzystać. W docelowym układzie oprócz UART, będzie wykorzystywany jeszcze sprzętowe SPI,...
Witam, Mam taki oto problem. Mianowicie: W przerwaniu INT0 (wywoływanym z PCFa) wysyłam co sekundę ramkę danych (konkretnie 13 bajtów) na USART0 na którym to działa pewien czujnik. Następnie oczekuję od niego odpowiedzi (47 bajtów) w przerwaniu od USART0. Odpowiedź dopisuję do pliku na karcie SD. I wszystko jest OK. Co pewien czas (np. raz na dobę)...
Witam, Napisałem sobie komunikację socketową w CODESYS jak poniżej: [syntax=c] IF run = TRUE THEN sa.sin_family := SOCKET_AF_INET; sa.sin_port := SysSockHtons(port); result := SysSockInetAddr(strIpAddres, ADR(sa.sin_addr.ulAddr)); //convert Ip STRING to IP adres hSocket := SysSockCreate(SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP, ADR(result));...
spróbuj odbieranie zrobić w przerwaniu (m32 ma wektor przerwania odpowiadający zakończeniu transferu przez SPI). W inicjacji slave'a: SPCR = (1<<SPE)||(1<<SP... // wł. SPI; SPI Interrupt Enable
Patrz ustawiasz nadawanie, wpisujesz dane do nadania i odrazu przełączasz na odbieranie co się stanie? Właśnie dla tego przerzuciłem zmianę kierunku spowrotem na odbieranie do przerwania które jest wywoływane dopiero po udanym wysłaniu, no chyba że się mylę i przerwanie USART_TXC_vect wywoływane jest jeszcze gdy trwa wysyłanie?
Trochę jestem zmęczony i nie pomyślałem. Podpiołem teraz ten moduł rs232 pod starą płytkę z stm32f103 - bez problemu mogę wysyłać dane na pc'ta. Tylko mam problem z odbieraniem danych - nie wiem czy to przez remapowanie pinów coś nie działa czy co. Więc to na pewno zasilanie było przyczyną nie działania układu. Dodano po 30 Miałem nieskonfigurowane...
Przerwania dla USART wydaje mi sie że działają poprawnie, dlatego nie załączam kodu obsługi USART. Przerwania same w sobie muszą działać poprawnie, jeśli tylko procesor jest sprawny i taktowanie, i zasilanie poprawne. Tym niemniej kod obsługi przerwania może zawierać błędne założenia, które mogą być przyczyną.
Jedno mnie dziwi - nigdy nie miałem takich problemów. To, że timery czy inne peryferia sobie pracują, gdy rdzeń jest halt to nie powinno nikomu przeszkadzać, skoro stepowany rdzen w ogóle nie skacze pod wektory ISRów...? Gdy używam Ride7 to nie mam tego problemu, ale gdy przekroczyłem limit 32kB przesiadłem się na Eclipse+OpenOCD. No i niestety w trakcie...
Witam, proponuję przede wszystkim zrobić odbieranie kodów z pilota na przerwaniach: najpierw deklaracja na początku: On Int1 Int1_rc5 ' obsługa odbioru kodów z pilota Getrc5 Config Int1 = Low Level ' wyzwalanie przerwania niskim poziomem Enable Int1 czyli podłączasz odbiornik IR np do nogi INT1 Int1_rc5: If Flaga_rs = 0 Then Disable Int1 Enable...
Odbieranie danych z USART za pomocą przerwania odbioru, jest jak najbardziej sugerowane. Należy pamiętać, że dane przychodzą przez jakiś czas np. kilkadziesiąt µs, stąd by zsynchronizować czas odebrany za pomocą np. 10 bajtów, być należy uwzględnić czas trwania ich odbioru lub nie, jeśli czas ten nie jest istotnie długi.
Z programowymi rozwiązaniami byłbym ostrożny. Można założyć, że przerwanie od uart wykona się w 10us. Oczekujesz na serwie rozdzielczości 1 stopień. Jak wyliczył (at)emarcus wymaga to sterowania serwem impulsami o rozdzielczości co najmniej 2,8us. Jeśli serwem nie będziesz sterował sprzętowo przez PWM tylko jak zaproponowano w #8 (https://www.elektroda.pl/rtvforum/viewt...
SPI działa w systemie full-duplex. Czyli w zasadzie wystarczy połączyć w sposób przedstawiony w pierwszym poście. Do odbioru wykorzystać przerwania zewnętrzne. Układ RFM zadba o nadawanie i odbieranie automatycznie. Mam nadzieje że sie niemyle.
Witam Nigdy nie potrzebowałem SPI bo używałem UART . Tym razem jednak chcę użyć SPI w przerwaniu do transmisji danych . Napewno coś pominołem lub nie doczytałem i dlatego mam problemy . Nadajnik nadaje , odbiornik odbiera ale dziwnie muli a z czasem bełty widzę na lcd . Jak zrobię bez przerwania to chodzi OK ale mi trzeba w przerwaniu. nadajnik: [code][syntax=vbnet]$regfile...
Chciałem zrobić obsługę portu szeregowego na linuxie w c lub c++. Wysyłanie danych działa mi OK, odbór przez read również. Prawidłowo działa mi także odbieranie danych po otrzymaniu sygnału. Chciałbym odbierać dane asynchronicznie w przerwaniu/funkcji obsługi sygnału. Wiem, że jako takiego przerwania sprzętowego w C nie obsłużę, ale można otrzymać sygnał....
To działa: [syntax=c] #define Port_USART3 USART3 #define Port_USART3_CLK RCC_APB1Periph_USART3 #define Port_USART3_TX_PIN GPIO_Pin_10 #define Port_USART3_TX_GPIO_PORT GPIOB #define Port_USART3_TX_GPIO_CLK RCC_AHB1Periph_GPIOB #define Port_USART3_TX_SOURCE GPIO_PinSource10 #define Port_USART3_TX_AF GPIO_AF_USART3 #define Port_USART3_RX_PIN GPIO_Pin_11...
drogi starosto int0 jako przerwanie zewnętrznę może posłużyć np tak jak na laborkach do obsługi odbioru rc5 gdy podczas wystąpienia tego przerwania odbierany jest kod rc5 z odbiornika podczerwieni . pml11
A po co te cztery zadania? jak tu widzę tylko jedno przerwanie timera PWM, ew. drugie do obsługi LCD łącznie jakieś 200 linii kodu w C, z tego ponad połowa do LCD. W sumie to może wszystkiego nie napisałam ;) ale rzeczywiście nie ma tragedii pewnie. - Task algorytmy - dane wejściowe - bieżąca wartość natężenia światła i zadana wartość natężenia światła,...
To zależy jak wysyłasz znaki, niektóre funkcje, np. sprintf same dodają null na końcu, zależy to także od zapisu literału. Oprócz niepotrzebnego odczytu UDR musisz też inaczej rozwiązać powiązanie bufora zapełnianego w przerwaniu z odczytem w głównej funkcji programu. Bo teraz jeśli porównanie wypada pomyślnie to zerujesz x mimo, że bufor może zawierać...
Wielkie dzięki za tak szybką odpowiedź. Czy mógł bym spytać co rozumiesz przez skopane sparsowanie? Jeśli chodzi o return 0 w funkcji uart_getc() - to w książce, z której korzystałem autor z tego skorzystał, tłumacząc, że 0 przy łańcuchach tekstowych oznacza koniec tekstu. Czy w takim razie lepiej było by zrobić np. coś takiego? [syntax=c] char uart_getc(void)...
Co do procka to LordBlick ma racje. W LV wywal tą strukturę sekwencyjną i te "prymitywną synchronizację". Daj lepiej w zwykłej pętli while odczyt i zapis. Jak wejdziesz w przerwanie ustaw flagę informującą procke o wysłaniu danych po wyjściu z przerwania. Procek wychodzi z przerwania i wysyła info do LV. Jak coś wpiszesz do rejestru to wyślesz, LV odbierze...
Witam, Czy mógłbym kogoś prosić o pomoc w zbudowaniu instrukcji dającej mi w języku C wartość ostatnich dwóch zmiennych na stosie ? Problem z jakim się borykam wygląda tak, że gdy program zbytnio 'zmęcze' danymi przychodzącymi, to przestaje wywoływać pętlę główną i skacze gdzies... niewiem gdzie. Lecz obsługa przerwania od odebrania znaku cały czas...
Sprawdziłem i program w ogóle nie wchodzi do warunku if(Flaga==1). W przerwaniu Flaga jest ustawiana bez problemu, jednak mimo to program nie wykonuje instrukcji w if(Flaga==1). Ma ktoś jakiś pomysł dlaczego?? Dodano po 5 Hmm. Miałeś racje z tym volatile. Dałem volatile int Flaga i teraz jest OK. Dzięki Dodano po 1 Witam ponownie. Przetestowałem wszystkie...
Witam, Programuje STM32F407 przy pomocy HAL ( STM32CubeMX ) i Keil uVision 5 . Stworzyłem komunikacje przez UART HAL_UART_RxCpltCallback wykona mi się dopiero po przyjściu 6 znaków Komunikacja UART potrzebna jest mi do implementacji interfejsu MODBUS. W interfejsie MODBUS jak czytam z pdfa "http://modbus.org/docs/Modbus_Applicati...
Witam, Potrzebuje pomocy w przetwarzaniu danych przychodzących na uart od modułu SIM900. Generalnie chodzi o to bym mógł odebrać i zidentyfikować dane np numer dzwoniącego, tekst smsa z komendą. Obsługę uartu mam sprawną w dwie strony. Moge wysyłać z dane z pamięci RAM i flash. Odbieranie danych realizuję w przerwaniu. Moduł SIM900 ma pewien standard...
Oczywiście, USART w przypadku wysłania i odbioru jest na przerwaniach, w pętli głównej sprawdzana jest tylko flaga, czy zostało już zakończone odbieranie całego komunikatu i następuje dalsza obróbka, ogólnie właśnie dodałem korekcję gamma i mogę powiedzieć że po wspomnianych poprawkach projekt spełnił oczekiwania. Oczywiście na małych jasnościach 8bitów...
Witam, Próbuje zrealizować odbiór oraz nadawanie danych, przez USART. Chcę odbierać wartości wysyłane z PC do cpu do trzech różnych zmiennych oraz wyświetlać w konsoli wartość jednej zmiennej. Spróbowałem, to zrealizować w przerwaniach (na razie bez wykorzystania DMA, później oczywiście wykorzystam do tego DMA, ale chciałem przećwiczyć w przerwaniach)...
Inicjalizacja [syntax=cpp] void uart::init(unsigned int myubrr) { /* Ustala pr�dko�� transmisji */ UBRRH = (unsigned char)(myubrr>>8); UBRRL = (unsigned char)myubrr; /* W��cza odbieranie i wysy�anie*/ UCSRB = (1<<RXEN)|(1<<TXEN); UCSRB |= _BV(RXCIE); //włączenie przerwania od odbiornika /*...
Konkretne pytanko. W książce Marcina Wiązani podano przykład kodu na odbieranie RC5 w przerwaniu dla Atmega8. Bazuje on na przerwaniu Int0. Ja w swoim hardware mam odbiornik podłączony do Int1, przy czym timer1 mam zajęty przez inną funkcję softu. Oto listing z książki: 'Program odbierający sygnały nadawane w standardzie RC5 'w przerwaniu Int0 'Na LCD...
Ojej... rzeczywiście strasznie głupi błąd. Po prawdzie kod był pisany na szybko i nawet nie przyszło mi do głowy że to może być wina umieszczenia całej funkcji w przerwaniu. Dzięki wielkie Panowie :D. Wrzucam kod, być może komuś się kiedyś przyda. [syntax=c]#include <avr/io.h> #define F_CPU 16000000 #include <util/delay.h> #include <avr/interrupt.h>...
Potrzebuję pomocy w konfiguracji Timer1 (ten mam wolny) ewentulanie modyfikacja obecnej konfiguracji Timer0. Obecna konfiguracja jest dla odliczania odpowiedniego czasu dla ramek RC5 odbieranych przez odbiornik TSOP322 przy taktowaniu procesora z F_CPU=8MHz, w celu oszczędności energii chcę zrobić odbieranie przy częstotliwości 1MHz. Jak widać z obsługi...
Witam. Nie wiem czy Kolega zaglądał do linka obsługi wyświetlacza? Jeśli miał bym robić jak Kolega radzi to samych ramek, jakie obecnie będę używał jest ok 100 więc... Połowa z nich to dane np. z czujnika gdzie dane(w jednym tylko adresie) zmienić się mają, co sekundę na wyświetlaczu od 0 do 100. Podaj przykłady ( krótkie instrukcję kodu) do wysyłania...
w jakim celu przewidujesz mozliwosc negowania sygnalu? bo rozumiem, ze nie negujesz tresci (danych) tylko calosc, lacznie z bitami start/stop. moznaby jeszcze probowac taki trick: wpinasz bufor negowany i nie-negowany (trojstanowe) przed wejsciem UART i podpinasz je rowniez do intX. sygnal bramkujacy podpinasz do ktorychs nozek portu. jak to dziala?...
Witam mam problem z odbiorem ramki danych z czujnika DHT11. Program bezpośrednio w C w oparciu o SDK NONOS dla ESP8266. Mój pomysł jest taki. wyzwalam stan niski na 18ms (aby rozpocząć komunikacje, zgodnie z ds.). Czujnik podpięty do GPIO2. Po tych 18ms GPIO konfiguruję jako wejście i przerwanie od zboczy (obojętnie jakiego), w callbacku z przerwania...
Kacperpk wywal opóźnienia z pętli głównej Miałes racje tylko zastanawia mnie dlaczego to miało wpływ? Dodano po 21 Oraz zastanawia mnie kwestia obługi przerwania SIGNAL (SIG_UART_RECV) int i = 8; { o=USART_Receive(); LCD_WriteText("O"); LCD_WriteText(dtostrf(j,1,1,buf&... j++; } Czemu na ekranie...
Przerwanie nie powinno byc zgubione, procesor przerwania odbiera tylko nie wywoluje procedur obslugi a stan przerwan zapamietuje w wewnetrznych przerzutnikach i jak tylko przerwania sa odmaskowane to wykonuje ich procedury obslugi. Oczywiscie stan ten nie moze byc dlugi dlatego trzeba to robic na czas najkrotszy jak sie da, nie ma innej mozliwosci synchronizacji...
Jeśli o odbieranie chodzi to już znalazłem winnego. W tle cały czas chodzi ADC. Jest puszczone na kanale DMA ale jak widać nie przeszkadza mu to w blokowaniu procesora. Jutro się pobawię z tym fantem. Nadal jednak nie wiem o cho chodzi z wysyłaniem. Ok, wysyłanie też naprawione, tylko w bardzo brzydki sposób. Dodałem po utworzeniu ramki for(i =...
Niestety musi to być zrealizowane na tym konkretnie układzie. Dodałem wyjście układu z odbiornika - będzie to podłączone do rejestratora z kamer - ma wyzwalać się nagranie w momencie przerwania wiązki podczerwieni. Proszę zobacz, czy zmiany wprowadzone przeze mnie, to jest to, o co Tobie chodziło? Dodatkowo dodałem po diodzie D2, która będzie sygnalizowała...
Właśnie sprawdziłem poprawny zapis użycia funkcji LOAD i nie ma tam znaku "=" tylko "," W każdym razie dzięki za info... bo mi coś ta funkcja nie działała do końca (chyba). A co do CKOPT to nie znalazłem tego :( Na screenie, którego załączyłem są wszystkie fusebity do ustawienia.. nie widze tam CKOPT-a (BASCOM 1.11.9.0) widze na screenach, że kolesie...
Chciałbym zrobić symulację naciśnięć klawiszy na klawiaturze PS/2 wykorzystując ATMega328 z rezonatorem kwarcowym 16MHz i interfejs PS/2 na USB. Posiłkowałem się tym opisem PS/2. https://www.avrfreaks.net/sites/default/... Z opisu wynika, że urządzenie PS/2 (wspomniana klawiatura) musi być w każdej chwili przygotowane do odbioru...
Ale dziwne że jeśli pominę przerwania i config serialin to działa bezbłędnie (w sumie 99/100 bo jadę na zewnętrznym kwarcu 16Mhz i jakieś błędy są możliwe) ale nie tak jak chciałem bo musiałem wpiąć to w pętlę główną: To lata w pętli głównej: 'RS232 UART4 - ODCZYT DANYCH ZE STEROWNIKA KOMINKA Rs4_flaga = Ischarwaiting(#6) : If Rs4_flaga...
Witam. Rozpoczynam z Uartem. Przesyłam dane w postaci jednego bajtu bezproblemowo, natomiast mam większe problemy jak chcę wysłać kilka zmiennych stablicowanych, a wysyłanie zrealizowałem w pętli. Oto kod jaki chciałem użyć, dla wysyłania i odbierania: Wysyłanie: void USART_Transmit(uint8_t adres, uint8_t dane) { unsigned int i; //zmienna...
Witam, otóż mam problem, a mianowicie chciałbym obsłużyć przerwanie z pinu ALRT z przetwornika ADS1115 w celu wyeliminowania opóźnienia które teraz stosuje przy odczycie każdego z kanału (delay(20)) dokumentacja: https://cdn-shop.adafruit.com/datasheets... z góry dziękuję za pomoc mój dotychczasowy kod: [syntax=c] /* Includes ----------------------------------------...
Tak jak w temacie coś mi kod nie działa proszę o pomoc gdzie leży błąd Ps wyświetla A ale B to nie wyświetla korzystam z 8Mhz [syntax=objc] #ifndef UART_H_ #define UART_H_ //Załączenie bibliotek systemowych #include<avr/io.h> #include<avr/interrupt.h> #include<util/delay.h> //Zadeklarowanie używania lub nie RS485 #define RS_485 0 #if...
niewiem czy taki sposób sprawdzania czy nastąpiła kolizja da jakie kolwiek efekty - jeśli dwa transceivery próbują wymusić przeciwne stany, to stan na obu liniach będzie zbliżony i znaczenie będzie miała histereza. Dodatkowo nie zerowa rezystancja linii transmisyjnej może sprawić, że na obu końcach wystąpią całkiem przeciwne stany. Pisząc o przerwaniu...
Witam, W chwili obecnej pracuje nad termometrem, sterowanym na pilota. Pilot wysyła dane w kodzie RC5. Wysłane dane trafiają na odbiornik podczerwieni TSOP31236 (36kHz). W momencie gdy dane nie docierają na wyjściu odbiornika jest stan wysoki, gdy odbierze jakiś sygnał na wyjściu jest poziom niski. Wyjście odbiornika podczerwieni jest podpięte do wyjścia...
Witam Chciałbym się dowiedzieć, gdzie jest problem w programie poniżej. [syntax=c] #include <stdio.h> #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/eeprom.h> #include "encoder.h" #define F_CPU 16000000L #define BAUD 57600 #define MYUBRR F_CPU/BAUD/16-1 #define SET_LED PORTD |= (1<<PD7)...
Witam Mam pytanie odnośnie "sumowania" danych (MSB i LSB) 8 bitowych w liczbę 16 bitową. Czy jest ono dobrze wykonane? Oraz czy dobrze zostało napisane pozbycie się 4 znaczących bitów tej liczby 16 bitowej. I czy było to potrzebne? W pdfie wyczytałem, że dane przesyłane są jedynie poprzez 12 bitów, dlatego wolałem wyzerować te cztery. Proszę o odpowiedź....
http://obrazki.elektroda.pl/5849326500_1... Opisany projekt jest raczej eksperymentem, mającym na celu sprawdzenie sposobu odbioru wzorca czasu WWVB i jego wykorzystania. Część sprzętowa: http://obrazki.elektroda.pl/3285928900_1... http://obrazki.elektroda.pl/4378658900_1... Schemat urządzenia jest bardzo...
W normalnym świecie SPI działa w ten sposób, że wysyłając jeden bajt, odbiera się jeden. Pisząc pewien ogromny program, używałem powyższego założenia implementując obsługę SPI1 z pomocą kanałów DMA (DMA1_Ch2 i DMA1_Ch3). Jeden kanał używany do transferu bloku z pamięci RAM do SPI1->DR, drugi kanał do transferu w drugą stronę. Wszystko działało bez najmniejszego...
Mam układ http://obrazki.elektroda.pl/7077654800_1... R21 120 omów Mogę się skomunikować z MCP2515 wysłać ramkę i odebrać gdy jest w trybie LoopBack ale nie mogę nic odebrać gdy jest w normalnym trybie. Podłączam do złącza OBD2 w Mickra K12 z 2003r. CANH z 2551 do 6 w OBD i CANL do 14 w OBD oczywiście GND 4i5 w OBD i +12V na 16. [syntax=c]uint8_t...
Witam. Miałem dwie atmegi spięte przez port szeregowy. Full duplex. Master, wysyłał do slave znak "Q" a w odpowiedzi otrzymywał stan wszystkich ośmiu bitów wybranego portu. Master odebrany komunikat wysyłał na port i zapalał LEDy. Ukłąd prosty. Wszystko działało przepięknie. Odbieranie znaków w układach master i slave realizowałem przerwaniem od URXC...
Wykonuje projekt ukaldu z wykorzystaniem uP i kilku innych podzespolow (schemat w zalaczniku), musze wykonac dla tego ukladu zasilanie awaryjne, najlepiej akumulatorek (ale jaki na 5V?), ktory bedzie doladowywany w czasie kiedy zasilanie bedzie obecne, najlepiej gdyby uklad wykrywal zanik zasilania i wysylal o tym info do uC (np. wywolanie przerwania...
I kolejny problem. Nie zrobiłem jeszcze tej procedury przerwania jaką proponował zumek bo jest większy problem do pokonania. Tablica ma się komunikować z LCDsmartie i wyświetlać text przez ten program wysyłany. Odbieranie no problem Konwersja też do czasu. Mianowicie z tablicy ASCII działa wszystko od spacji do wielkiego Z (za wyjątkiem znaku $ Dolara...
Oto jeden z kodów który wymodziliśmy: program testing; var received_byte : byte; channel : byte; procedure Recived; org URXCaddr; //Procedura obsługująca odbieranie bajtu begin inc (channel); if UCSRB.FE = 1 then channel := 0; received_byte := UDR; if channel = 2 then PORTA := not received_byte; end; begin UBRRH := $00;...
master_pablo ---> gaaaat demit ;) ale odstawiłeś teraz bajerek ;) no coś pięknego !!! - i to makefile - EXTRA! Ciesze sie, ze Ci sie podoba :). .... odnośnie tego if( uart_waitchar(500) < 1 ) goto CallApp; to ma to oczywiście za zadanie oczekiwać na dane z PCta ale max przez okres 500ms, jeśli nie nadlecą to bootloader się wyłącza....
Witam. Mam mały problemik z UARTem . Mianowicie wszystko dziala ladnie , wysylanie i odbieranie znakow. Problem powstaje w momencie gdy wlacze przerwanie od zakonczenia nadawania (TXC: USART Transmit Complete ). Wowczas po wyslaniu jakiegokolwiek znaku z mikroprocesora mikroprocesor sie restartuje. Uklad to ATmega16, kwarc 16Mhz, predkosc transmisji...
Niestety nadal w programie jest błąd. Ta moja wersja z krótszym buforem też się zawiesza. Jak bufor był krótszy i zaczynał się od 0 i szedł do 31 to zawieszanie następowało tak jak normalnie. U mnie po 67 sekundach. Czyli ta BASCOMowa zmienna siedzi gdzieś na początku bufora. Przesunąłem wykorzystywaną cześć bufora do indexów 128…159 i zawieszanie...
Przepraszam - jasne, że us :-) Problem nie leży w samym wydłużeniu czasu - tylko, że SPI przestaje działać - zatrzymuje się dalsze wysyłanie danych. Procesor to PIC32 taktowany 80MHz, SPI taktowane 20MHz w tym momencie. Kod obu przerwań - prosze: SPI - to jest tylko fragment w którym się akurat zatrzymało - wyżej jest tylko odczyt bufora SPI do zmiennej,...
Tak myślałem. Do tej pory próbowałem sam napisać obsługę opartą na przerwaniach od UATR'u i liczniku, ale dojechałem do chyba martwego punktu - odpytywanie pojedyńczego modułu działa bez problemu, natomiast problem jest z kilkoma modułami, tzn. jak odpytuję kilka modułów odpowiada tylko jeden... Algorytm po krótce wyglądał tak, może ktoś zobaczy błąd...
Przerobiłem program na Atmega328. Teraz ma tylko odbierać dane z master na Atega1284p i wysyłać do Domoticz. [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0 = Buffered , Size = 150 ,...
Witajcie, Mam taki dziwny problem, chcę aby jeden SPI wysyłał dane (liczby, jako master) do drugiego SPI (slave, na tym samym DISCOVERY). Drugi SPI ma odsyłać sumę danych jakie otrzymał w pojedynczej ramce danych. Gdy NSS z SPI1 wisi w powietrzy to dane z SPI1 są wysyłane a pin NSS zachowuje się tak jak powinien. Gdy podepnę go do NSS w SPI2 lub do...
Jesli ramka ma max 20 bajtow to zadeklarowac pole o tej dlugosci, w przerwaniu odbierac kolejne bajty i je zapisywac. Dodatkowo jeden bajt jako flaga, ze cala ramka zostala odebrana (w przerwaniu trzeba porownac odebrana informacje o dlugosci ramki z iloscia faktycznie odebranych bajtow). Ta flaga w programie glownym mowi o tym, ze jest gotowy pakiet...
Witam Buduje pewne urządzenie składające się z dwóch procesorów Atmega8 oraz ATmega16 (aktualnie 2x mega8). Jeden z procesorów jest odpowiedzialny wyłącznie za multipleksowanie 10 wyświetlaczy 7seg. Jest to taki panel wyświetlaczy. Drugi jest odpowiedzialny za obsługę całego urządzenia oraz wysyłanie danych po SPI do drugiego procesora (slave = wyświetlacz)....
Witam serdecznie, mam mały problem z moim urządzeniem. Zbudowałem kiedyś płytkę ewaluacyjna dla Atmegi128, nigdy nie miałem z nią większego problemu. Mam teraz jednak problem. Jak zawsze chciałem ją oprogramować ale cos jest nie tak. Poniżej zamieszczam kod i tłumacze o co mi chodzi. #include <avr/io.h> #include <avr/interrupt.h> #include...
Chciałbym zralizować transmisje RS485 na stm32f103rb, gdyż mam pod ręką konwerter usb-rs485 oraz max3485. Moja ramka składa się z 8 bajtów.Jeśli chodzi o odbieranie to do mojego bufora dane wpadają poprawne czyli prawdopodobnie wszystkie ustawienia fizyczne mam poprawne. Niestety po kilku wysłaniach danych z PC z rzędu do arm pojawia się przekłamanie...
Witam. Mam taki problem, gdyż chciałbym ogarnąć komunikację poprzez UART między dwoma mikro. Mam dwa uC: Atmegę 16, która działa jako master oraz Atmegę 88 jako Slave (na której będzie termometr, z którego będę odczytywał dane). Programy, definicje wyglądają następująco: plik RS485.h #indef RS_INT_H #define RS_INT_H //rozmiar buforów nadawania i odbierania...
Witam Potrzebuje waszej pomocy, musze napisac stoper w asm. Już sie męcze z tym troche i nie chce działac tak jak powinno, więc prosze was o naproawdzenie/poprawienie błedów w kodzie ponizej. I chcialbym rowniez wiedziec, czy moja interpretacja polecen w tym kodzie jest poprawna. Sam Timer działa poprawnie. Chcialbym aby sterowanie stoperem odbywalo...
Dokonałem optymalizacji kodu, rozmiar zmniejszył się o 2 %. Pilot RC5 działa, można zmienić czas/date, obsługę wyświetlania przeniosłem do przerwania Ale mam kłopot z wyświetlaniem kropki [syntax=basic4gl] '************ Zegar 6 wyswietlaczy LED + PCF8563 $regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 ' rozmiar stosu sprzętowego $swstack =...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
Czekam 100ms po instrukcji print dla 115K nic to nie pomoglo zmniejszylem predkosc do 9600 nadal nic ;/ kod nadajnika $regfile = "m32def.dat" $crystal = 14745600 $baud = 9600 Config Serialin = Buffered , Size = 10 , Bytematch = 13 '##### Definicja wyswietlacza ##################### Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6...
Pomoozcie prosze z tym kodem: #include "defines.h" #include <ctype.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <avr/eeprom.h> #include <avr/interrupt.h> #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/wdt.h> #include <util/delay.h> #include...
http://obrazki.elektroda.net/60_12051824... Witam, chciałbym zaprezentować wykonanie pewnego mojego pomysłu, jest to w zasadzie jeszcze prototyp chociażby pod względem nie doszlifowanego jeszcze oprogramowania,. Jednak na tyle już się dobrze sprawuje, że od razu można go używać w dowolnych konfiguracjach. Nazwałem "to coś" Uniwersalny sterownik...
Witam Po raz pierwszy ( lepiej późno niż wcale ) wykorzystałem wyjście CLKOUT układu PCF8563. Oczywiście podciągnąłem przez 10K do VCC. Dzisiaj po pierwszym kilkugodzinnym braku prądu, rano zegar był wyzerowany. Podejrzewam, że to przez podciągnięcie CLKOUT do Vcc. Jeśli to jest to, to może wystarczy włożyć diodę np. Schottky pomiędzy wyjście CLKOUT,...
Witam piszę, ponieważ mam problem z modułami RFM22B. Już od 2 miesięcy nie potrafię nawiązać transmisji miedzy nimi. Na dole przedstawiam schemat oraz kody źródłowe. http://obrazki.elektroda.pl/8860258400_1... Transmisja odbywa się na 434MHz, Fifo mode z Packet_handlerem. Problem polega na tym iż nadajnik wystawia przerwanie że wysłał...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
Witam Przepraszam za tak długą absencję. Program udało mi się uruchomić - po sugestiach kolegi chudybyk wyłączyłem przerawnia odbierania. Teraz potwierdził to kolega papikus :) Narazie zakładam że wszystko jest idealne - chciałem zacząć od "czegoś" :) Co ewentualnie możnaby jeszcze poprawić / na co zwrócić uwagę (oprócz wyrzucenia procedury odbioru...
1) w przerwaniu odbierającym bajt lepiej wrzucić do do zmiennej albo buforka i opuścić przerwanie. Obsługę polecenia zrobić w pętli głównej. Tym bardziej że wysyłasz tam wiadomość - nie wiem czy nie powoduje to złej interakcji. 2) zamiast pwm1value = pwm1value+wiadomosc*10; powinno być pwm1value = 10*pwm1value+(wiadomosc-'0'); 3) najlepiej rozdzielić...
odbieranie polsat odbieranie satelity odbieranie głosu
połączenie równoległe żarówek dobór zamiennik whirlpool uszkodzić rezystor
philips rozciągnięty obraz dynaxo dynacook
Przyczyny wysokiego ciśnienia w układzie chłodzenia samochodu Toyota: CHECK VSC SYSTEM, ESP, ABS, trójkąt ostrzegawczy