Witam... Po dość długim czasie zamykam temat... Problem został całkowicie rozwiązany dzięki pomocy Light-I'ego... Rozwiązaniem było włączenie transmitera (1<<TXEN) przy inicjalizacji USARTa... Oprócz tego wstawienie odpowiedniej dla danej prędkości transmisji wartości liczbowej...
Witam, mam problem z połączeniem po USARCIE tych dwóch procesorów. Sprawa wygląda następująco: atmega1284p ma być docelowo masterem, wysyła ramkę i w odpowiedzi dostaje ramkę zwrotną od atmega8. Obsługa ramek nie jest jeszcze napisana, na razie wysyłam 8 bajtów atmegą1284p i jeżeli...
Bywa, że w projekcie trzeba dodać dodatkowy port komunikacyjny. Jest to problemem, gdy taka potrzeba zajdzie w końcowej fazie projektu. Wymiana mikrokontrolera na większy spowoduje konieczność zmiany PCB. Dodatkowy port USART, może być potrzebny tylko podczas uruchamiania urządzenia (np...
Niestety to jednak nie w tym tkwi problem. Zmieniłem troszkę program dlatego opisze jeszcze raz o co chodzi ;) Usunąłem wszystkie błędy programu i o dziwo komunikacja jako tako działa, ale oczywiście jest jedno "ale" z którym jakoś nie potrafię sobie poradzić i nie wiem dlaczego tak się...
Witam, próbuję zaprogramować mikrokontroler,aby obsługiwał USART do komunikacji przez RS232. Chcę wykorzystać do tego bufor cykliczny, który zaimplementowałem w następujący sposób: [syntax=c] #include <inttypes.h> #define BUFFER_SIZE 32 #define BUFFER_MASK ( BUFFER_SIZE - 1) ...
Witam Chciałem zająć się obsługą karty SD, za pomocą FatFs. Natrafiłem na ten wątek: Projekt tam zamieszczony działa jak należy. Problem pojawił się, kiedy dodałem obsługę usarta: ˙ ****************************** Nie mam pojęcia co z tym zrobić. Sprawdzałem na usarcie...
Zmontowałem przed wakacjami sonar z konaru napisałem program do obsługi(prawie sam :D) i program zwraca poprawne wartości z prawej strony a z lewej 3 diody na sonaże poprawnie mruga prawa a lewa ledwo co się zapala stwierdziłem że dałem ciała z elektroniką i teraz polutowałem 2 po...
Witam! Zacznę od tego, że jestem raczej laikiem z programowania STM-ów. Ale nie jestem też leniem, że znajduję gotowca, kopiuję i liczę na to, że będzie działać. A jak nie działa to lipa. Staram się to zrozumieć i znaleźć problem. ;) Niestety brak wiedzy sprawił, że wymiękłem...
Mam jeszcze takie pytanie. Czy komunikacja poprzez USART powinna działać w oparciu o przerwania czy w oparciu o zwykłe funkcje też może być? Chodzi mi oto czy w bardziej zaawansowanym projekcie nie napotkam później jakiś przeszkód i nie będę musiał przerabiać całości. Pozdrawiam Można...
Witam! Mam problem. Podłączyłem atmege32 z BTM222 i na komputerze używał programu Realterm do obsługi portu szeregowego. Komputer się ładnie podłączył do BTM-a, to znaczy nawiązał połaczenie wpisałem kod 1234 i w programie Realterm jest napisane że się połączył. Chyba jest problem...
Tym razem ma problem z RS232. Spróbowałem na początek skorzystać z gotowego przykładu HiTech, a nie udało mi się podczas kompilacji main.c #include <stdio.h> #include <htc.h> #include "usart.h" void main(void){ unsigned char input; INTCON=0; //...
W książce Tomasza Francuza "AVR Praktyczne projekty" znalazłem bardzo przyjemny sposób na użycie USART w XMEGA posługując się fprintf lub fscanf. Niestety po przejściu na DMA okazało się, że nie da się tak łatwo zastąpić fprintf przy użyciu funkcji wysyłającej dane do bufora i dalej...
Witam od dwóch dni mam problem z USART na stm32f4discovery. Otóż napisałem sobie prosty programik na bazie tego przykładu pod stm32f4discovery ze strony Freddiego Chopina, tyle że sam napisałem sobie konfigurację zegarów itd. Zrobiłem konfigurację USART 6, napisałem funkcję do wysyłania...
Pracowałem ostatnimi dniami nad małym kontrolerkiem, sterowanym przez RS232. Obsługa niektórych poleceń, wydawanych do niego, trwała nawet po kilka milisekund i... okazało się, że użyty przeze mnie 16F628A ma bufor wejściowy USARTa rozmiaru... 2 bajtów. Tak, to nie pomyłka :| Dlatego...
Witam!!! Mam problem z odbiorem danych przez procka z PC. Napisałem procedury do obsługi USART. Inicjalizacja i wysyłanie danych do PC działa bez błędnie. Nie mogę jednak nic odebrać z komputera. Nie wiem gdzie mam błąd w programie. Zamieszczam listing kodu: usart.c: #include "usart.h" void...
Witam :) Zrobiłem układ, którego głównym elementem jest uC Atmega 8. Problem w tym że posiada ona w swojej strukturze tylko jeden port USART. W mojej aplikacji posiadam dwa urządzenia które komunikują się wykorzystując właśnie ten interfejs. Dodatkowo jedno z nich zasilane jest napięciem...
Witam, Nie mam problemu z obsługą USART tylko takie pytanie, które mnie nurtuje bo chyba się zakręciłem i nie do końca coś rozumiem. O jakie podwójne zwiększenie prędkości transmisji chodzi przy ustawieniu bitu U2X na 1 ??? Tzn co to ma wspólnego ze zwiększaniem prędkości transmisjii...
Witam, Próbowałem na podstawie książki "Mikokontrolery stm32 w praktyce" uruchomić na STM32F107 transmisję z wykorzystaniem USART-a. Połączyłem Rx i Tx ze sobą i próbuję wysyłać a następnie odczytywać wysłane dane. Poniżej jest mój kod: int main(void) { SetSysClockTo72(); ...
Witam Wykonałem układ, który komunikuje się z PC przez moduł BTM-222. Komunikacja USART, asynchroniczna 38.400 kbps, 1 bit parzysztości, 1 bit stopu. Jeśli zadeklaruję na stałe, że wielkość bufora wynosi np. 30, i wysyłam z PC 30 znaków, to komunikacja działa bez zarzutu. Problem w...
Ustawiasz bit zezwolenia na przerwanie TXCIE, a gdzie masz procedurę obsługi tego przerwania? Po odesłaniu znaku flaga TXC zostaje ustawiona i ze względu na brak procedury obsługi tego przerwania program najprawdopodobniej startuje od początku. Nie ustawiaj bitu TXCIE lub napisz dla tego...
Witam wszystkich! mam takie małe marzenie :) Posiadam ATXmegę 128A3U i modulik wyświetlacza oparty o ILI9341. Moduł udostępnia magistralę SPI wraz z linią dodatkową D/C. Wpadłem na szatański pomysł, by wykorzystać USART w trybie SPI MASTER do obsługi LCD. Dlaczego USART a nie SPI?...
Próbuję nawiązać połączenie z myszą komputerową. Temat był omawiany tutaj kilka razy, ale zauważyłem, że wiele osób próbuje pisać skomplikowane programy obsługi protokołu 8042. Zastanawiam się, czy nie lepiej skorzystać ze sprzętowego układu USART, który posiadają większe...
A co robię niezgodnie z dokumentacją? Poniższe funkcje znalazłem na stronie internetowej, która wyglądała całkiem poważnie. Obojętne mi z której flagi będę korzystał byle działało :P A skoro w większości przykładów natknąłem się właśnie na wykorzystanie tych flag to tego się...
Hej, nie mogę znaleźć na forum podobnego problemu. Otóż pracuję z mikrokontrolerem STM32F100RB (płytka stm32vldiscovery) i chciałbym wykorzystać przerwanie od USART podczas pracy z FreeRTOS. Problem polega na tym, że nie wiem, w którym miejscu zdefiniować przerwanie. Uruchamiam je funkcją...
Co to niby ma być? USART1->BRR = (24+(0.9216/2))/0.9216; Zmieniłem na: Popatrz, jak zaprogramowałeś DMA - po 8 transferów, miały być 4 po 16 bitów z ADC do pamięci i 8 po 8 bitów z pamięci do USART. Poprawione, usunąłem również priorytety: Założę się na ślepo (a STM32F1...
Chciałbym tylko nieśmiało zauważyć, że ten programowy arbiter plus obsługa DMA - to więcej kodu niż obsługa transmisji na przerwaniach z buforem cyklicznym bez DMA. ;)
Cześć, potrzebuję wytłumaczenia (jak dla debila ;) jak to jest z tym usartem i jak to się ma w przypadku spi / i2c dla xmega. Weźmy na warsztat chociażby SPI. A więc aby "zrealizować SPI", to muszę określić slave, zegar taktujący względem którego będą wysyłane kolejne bity (czyli...
Witam. W przykładach do książki Tomasza Francuza jest obsługa USART w przerwaniach. Kod: [syntax=c] #define MAX_CMD_LEN 10 //Maksymalna długość polecenia w bajtach void USART_init() { PORTC_OUTSET=PIN3_bm; ... //Pin TxD musi być wyjściem USARTC0.CTRLA=USART_RXCINTLV...
Witam, Napisałem program do obsługi USART-a, ale nie chce on poprawnie wysyłać znaków. Atmega8A, 8MHz-kwarc, 19200. W kodzie pokazałem problemy: [syntax=c] #include <string.h> #include <avr/io.h> #include <stdlib.h> void uart_puts(char *s); int main(void) { //...
Witam, poniższy kod przedstawia inicjalizację USARTA1 i USARTA2: Dodano po 57 OK kod był poprawny, po prostu zlącze rx/dx z ktorego korzystałem nie zostało zwarte na płytce NULCEO. Cenna informacja dla potomnych należy zewrzeć SB63 SB62 oraz wylutować rezystory na SB13 i SB14
Witajcie, Potrzebuję pomocy przy STM32F429. Moje pierwsze podejście do rozwiązania docelowego zadania było oparte o biblioteki HAL i była to moja pierwsza styczność z STM. Pomysł fajnie się spisywał, ale później miałem jakąś totalną masakrę, żeby zaimplementować jakiekolwiek klasy....
Poszukuję osoby, która pomoże mi wykonać wirtualny procesor ATmega328p, który emuluje działanie transmiji poprzez USART zgodnie z protokołoem RS232. Potwierdzenie transjmisji ma być w oddzielnym pliku out.txt wraz ze stemplem czasowym. Wymagania: obsługa 'asynchronus normal mode", wiele "baund...
Witam, mam problem z moim urządzeniem, mianowicie... STM komunikuje się z ESP8266 przez USART i wysyła do niego komendy "AT", przy pierwszym włączeniu inicjalizacja ESP (połączenie z wifi, cwmode itd) działa poprawnie i każde polecenie wykonuje się kolejno. Kiedy dojdziemy do programu głównego...
dla Delphi jest taki komponent w necie jak ComPort ale zdaje mi się, że dla C++ Bulider również (poszukaj na sourceforge.net - na pewno znajdziesz). Tak więc na początku zamiast pisać całkowicie samemu obsługę RSa na PC można skorzystać ze sprawdzonego gotowca. Ja go często na szybko używam...
Protokół to jest raczej SPI. W mega48 możesz ustawić USART do pracy w tym trybie (rozdział 19 w pdf), albo lepiej użyć wbudowanego układu SPI. Sygnały ATT i ACK będziesz, tak czy owak, musiał obsługiwać programowo. --- Ups.. autopoprawka. USART może tylko pracować jako master SPI,...
Jako, że od niedawna sam uczę się dopiero C, to proszę bardzo poniżej, najpierw kod do odbiornika RC5. Sprawdzony, krótki i odporny na zakłócenia oraz kody z innych pilotów - działa wyśmienicie i w ciekawy sposób wykorzystuje bit TOGGLE: // zmienne do obsługi kodów IR w standardzie...
Ma ktoś może pomysł jak podłączyć ten wyświetlacz pod UART? Lub chociażby pod "USART in SPI mode ". Z tego co wiem to w tym "USART in SPI mode, piny łączymy: MOSI = TX MISO = RX SCK = XCK A gdzie tu podpiąć SS z LCD? Dodatkowo jest tylko tryb master.
Od kilkunastu dni(nienawidzę i2c) męczę i2c, kolejny krok do poznania atxmegi. Kod napisałem dość długi (biblioteka atmela nie, dziękuje) ale coś nie działa wspomoże ktoś radą, kodem, czymkolwiek. Wstawię mój kod może błąd banalny może przeze mnie ledwie niezauważalny. [syntax=c]#include...
Cześć chcę napisać program obsługujący transmisję pomiędzy komputerem a mikrokontrolerem poprzez RS485. Wykorzystuje do tego celu układ max3483. Czytałem dokumentację ST w której proponowane są dwa rozwiązania co do zarządzania linią sterującą kierunkiem transmisji: 1. Wykorzystanie...
Byłem pewien że jest, ale jak spojrzałem to musiałem z USART'em pomylić (bo w nim jest). W sumie niema sensu aby był taki bit, ponieważ by działał w sumie identycznie jak BSY bo komunikację w obydwu kierunkach inicjuje tylko procesor. W USART może być sytuacja że nadchodzi jakaś informacja...
Witam serdecznie. Od kilku dni walczę z problemem uzyskania prawidłowych odpowiedzi od PAD'a PS2 na STM32F411RE nucleo. Wykorzystuję do tego SPI oraz USART w celu odbierania komunikatów. Częstotliwość zegara mam ustawioną na 8MHz, w konfiguracji SPI prescaler 64 co daje mi 125KHz (lub KBits/s). Pierwszy...
tu jest kod prostego programu który podgląda to co dzieje się na magistrali, filtruje odpowiedź jednego z urządzeń i obrazuje na ekranie to co jest odbierane. jest tam też pomocniczy licznik który pozwala mi analizować ile tych ramek (które są odpowiedzią urządzenia może być pomijane....
Rozumiem że jeżeli nie ustawiasz żadnych bitów w rejestrze UCSRC to format transmisji to: 8 bitów bez bitu parzystości z jednym bitem stopu i takie są ustawienia transmisji w komputerze?. Sama inicjalizacja i obsługa USART wygląda ok. Inna jest kolejność pinów w wtyku RS232 niż podane...
Witam. W związku z tym że port D mam wykorzystany do obsługi LCD nie mogę użyć USART do RS232 (żeby połączyć PC z uK). Dlatego ustawiłem sobie PORTB PB4 i PB5 żeby to działało. Ale niestety nie chce (mimo że z max232 dochodzą sygnały). Więc mam prośbę : -może ktoś zauważy błąd...
Witam, Zastanawiam się, jak zrealizować komunikację o takim schemacie: PC (RS232) <-> Atmega16 <-> 3x Attiny2313 USART? Ale czy nie będzie problemu z obsługą 3 urządzeń przez Megę? Zależy mi na małych opóźnieniach w komunikacji Mega <-> 3xtiny, a nigdy nie programowałem...
Witam. Mam nadzieję, że się nie narażę tym tematem, ponieważ był już wielokrotnie opisywany - jednak uzmysławia to jak wiele problemów może wyniknąć przy obsłudze jednej rzeczy. Sprawa jest prosta, napisany program w WinAVR20070525 nie obsługuje portu USART w mikrokontrolerze ATmega8515....
każda transmisja jest tak upierdliwa, ze jak coś nie działa to może być tysiąc powodów. Po pierwsze sprawdź czy działa transmisja przez max232 aby wykluczyć problem z USB. Sprawdź czy przypadkiem RXD i TXD nie są ze sobą zamienione. Ale nie pojawia się w terminalu nic czy tylko krzaczki?...
Czy konieczne jest ustawienie jakiś fusebitów przy obsłudze USART w atmedze 32?[/quote]
A zastanawiałeś się kiedyś jaki wpływ ma częstotliwość taktowania procesora na prędkość baud rate oraz procent błędów ? To zajrzyj sobie do dowolnej noty PDF dowolnego procka AVR na ostatnią stronę rozdziału USART zobaczysz tam tabele z różnymi częstotl. taktowania oraz możliwymi...
Witam czy może ktoś spojrzeć na ten prosty kod i powiedzieć gdzie tkwi problem. Gdy wysyłam jakiś znak z klawiatury przez Hyper-Terminal, to procesor ma go od razu zwrócić, a on zwraca jakieś dziwne znaczki. Dodam, że w obsłudze przerwania występuje takie ostrzeżenie przy kompilacji: "usart.c:60:...
Może ktoś pomoże, dlaczego usart atmega 128 nie wysyła nic na wyjście RS TxD. Uart jest ustawiony, po wpisie do UDR0 nie wychodzi nic na wyjście TxD, nie wchodzi również w obsługę przerwania od nadajnika. SP. oto program: [syntax[syntax=asm] .nolist ...
Witam, Mam problem z transmisją przez USART. Gdzie tu jest błąd ? [syntax=c] //zegar 1MHz, dla prędkości 9600b/s, 8data, 1stop UBRR0H = 0; UBRR0L = 12; UCSR0A &= ~(1<<U2X0); UCSR0B = (1<<RXEN0)|(1<<TXEN0); ...
Taka obsługa przerwania: [syntax=c] void USART2_IRQHandler(void) { uint8_t a=USART2->DR; //odczyt znaku if (a>=97) a=a-32; //Jeśli mała to duża while ((USART2->SR & USART_SR_TXE)==0); //Sprawdzenie czy usart gotowy do wysyłki (właściwie...
Po pierwsze enkoder możesz obsługiwać sprzętowo na XMEGA - w tym celu konfigurujesz event system na QDEC, a dowolny timer będzie ci zliczał impulsy i pracował jako enkoder. Co do transmisji USART - można paczki odbierać przez DMA, co jest wygodne, można to zrobić w oparciu o przerwania. W...
AVR nie bardzo nadają się do WS2812. Ostatecznie Mega1284 (16 ram), ale kolejny problem to obciążenie procka podczas wysyłania danych do LED. Teraz nie pamiętam ale mimo modyfikacji prologu i epilogu przerwania, w czasie transmisji do LED wykonuje sie kilka/kilkanaście rozkazów. Xmega czy Arm...
Witam, Napisałem program który wysyła kolejno bajty przez USART do drugiego urządzenia i jednocześnie odbiera bajty (taki powiedzmy full-duplex :)) . W zasadzie nic specjalnego program wygląda następująco: . Czy przyczyną są drgania styków? Wcześniej tą komunikacje realizowałem...
Mam program, w którym uruchamiam przerwanie z pinu ICP. I wszystko działa jak należy, program jest przetestowany. Postanowiłem połączyć go z programem do obsługi karty pamięci pobranym z //**************************************... **** MAIN routine FOR Interfacing microSD/SDHC...
Aaa, już rozumiem. W poprzednim wątku źle zrozumiałem obsługę flag. Myślałem, że w przerwaniu ma być wywołanie funkcji i pod koniec funkcji ustawienie flagi na wyświetlacz. Przez to miałem problem z obsługą tego. Teraz już wiem... Wstawię flagę w przerwanie, tak jak dobrze radzisz. Co...
Przerwanie od odbiornika jest wywoływane w momencie kiedy dana jest gotowa w rejestrze, więc ta pętla do while jest niepotrzebna (zresztą ona jest wręcz nie wskazana bo wydłuża obsługę przerwania o nie wiadomo ile czasu). Poza tym proponuję jeszcze w M8 sprawdzac rejestr UCSRA, w nim są...
ON źródło_przerwania nazwa_podprogramu [NOSAVE] gdzie: źródło_przerwania - symboliczna nazwa źródła przerwania, nazwa_podprogramu - etykieta określająca gdzie znajduje się podprogram obsługi przerwania. jako żródło przerwania można: URXC przerwanie układu sprzętowego...
Witam, mam układ na m8L + max232, zasilanie z ~5V DC, kwarc zewnętrzny 3.6864MHz (sprawdzane, że pracuje na zewn. kwarcu), kondensatory 22pF. Maksymalna prędkość jaką jestem w stanie wyciągnąć przy transmisji po serial (minicom, Linux) jest 38400. Powyżej tej liczby zaczynają się problemy...
Mam problem z obsługą transmisji asynchronicznej, tzn. podczas symulacji w MPLAB na wyjściu U1TX w Logic Analyzerze nie można zaobserwować zmian. W tym przypadku jest to wysłanie ciągu bitów 10101010. Fosc=4MHz, prędkość transmisji =31250 kbit/s. Za pomoc z góry dziękuję! ...
Hej, Podłączyłem sobie ATmegę16 do komputera przez RS-232 za pośrednictwem MAX232. Na początek chciałbym zrobić echo - to, co wpiszę w minicomie czy putty ma być przesłane do uC i wysłane z powrotem. Wykorzystane mają być przerwania. Problem jest taki, że procedura obsługi przerwania...
piszesz, że masz zewn kwarc 12MHz - a skąd wziąłeś albo jak sobie ustaliłeś wartość którą zapisujesz do UBRRx - od której zależy prędkość transmisji RS232 i dokładnie jaką prędkość ustawiłeś? po drugie odblokowujesz przerwania a w miejscu gdzie są wektory obsługi przerwań...
Witam Zamiast funkcji getch(); użyj tego: while(1){ while(!RCIF); data = RCREG; printf("switch()"&... switch(data){ case 'a': output_low(LED1); printf("zgaszanie...
Witam. Zrobiłem sobie układzik, który mierzy napięcie i wynik przesyła po RS'ie do kompa. Niestety po zaprogramowaniu nie działał on poprawnie, dlatego postanowiłem sprawdzić komunikację pomiędzy układem a komputerem. Program zmieniłem tak, że uP ciągle wysyła liczbę 15 a terminal...
Witam, szukam programu - terminalu do obsługi portu rs232 na komputerze (wysylanie I odbieranie danych) Znalazłem kilka ale żaden nie pokazuje portu com13 (mam przejście usb<->rs232) Dziękuje za pomoc
Witam, zaczynam (najwyższy czas) bawić sie AVRami i postanowiłem napisać prosty program do wysyłania tekstu przez USARTa. Napisałem własne, krótkie obsługi przerwań bez używania obstukanego loop_until... który blokuje prace uC do czasu wysłania znaku. Jednak w czasie symulacji pojawił...
Co do drivera COM w Windowsie masz rację, ale zawsze można zmienić COM na HID, lub Windows na co innego ;-) Pozostaje faktem, że programowo łatwiej użyć FTDI. Co do problemu to nie siedzę w Atmelach, ale myślę, że problemu nie ma gdyż AIC_EOICR daje sygnał do AIC o końcu obsługi aktualnego...
Witam, zanim zabierzesz się za pisanie własnej obsługi przerwań do RS232 w Bascomie, to może najpierw spróbuj zrobić to w oparciu o dobrodziejstwa jakie daje ci Bascom. nie znasz poleceń INPUT , INKEY czy PRINT ???? do tego jeszcze może Config Serialin bo w powyższym kodzie...
Włączyłeś przerwanie zgłaszane po opróżnieniu rejestru UDR, a nie masz nigdzie procedury jego obsługi. Musisz ją zdefiniować dyrektywą .org adres aby została umieszczona pod odpowiednim adresem w pamięci, który przypisany jest do wektora tego przerwania. Jeśli przerwań nie obsługujesz...
Witam. Próbuje uruchomić program testowy, który polega na tym, że po wysłaniu na RS-a liczby 2 dioda zapala się na okres 1 sekundy i na ten sam czas również gaśnie przez okres 30 s. Wysyłanie na port szeregowy wykonuje za pomocą przerwania z USART. Odmierzanie sekund z przerwania Timera w...
Najciekawsze jest to - jak ty to obliczyłeś czy tam wydedukowałeś, że UDR to 4 bajty ? ;) oczywiście, że to 1 bajt (w uproszczeniu mówiąc, bo wiadomo, że ramka może mieć 9bitów i kilka bitów startu i stopu) - nie mniej jednak gdy używasz ramki np: 8,n,1 - to masz 1 bajt - a to, że...
Kończę właśnie mojego Hexapoda. Rozbudowuje komunikację pomiędzy dwoma atmega16. Jeden to sterownik serw a drugi oblicza kinematykę i struje wyświetlaczem LCD. Otóż problem polega na tym że transmisja jest pełna błędów. Uśredniając to co 5-6 transmisja jest prawidłowa. Ustawienia...
No ja wiem, że by wypadało:) Tylko nie wiem jaką;p W programie korzystam z takich bibliotek: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/crc16.h> #include <util/delay.h> #include <string.h> Jest jakiś plik...
Jedyne co pomaga to sprawdzanie czy dane są odbierane z USART-a. Czyli jeżeli USART odbierze dane to przed wejściem do obsługi wyświetlacza odczekuje chwile. Zapobiega to wejściu w przerwanie gdy jest obsługiwany wyświetlacz.
Witam. Na początku zaznaczę, że jestem początkujący i dopiero zaczynam programować AVRy. Próbowałem napisać program do obsługi RS232, który będzie wysyłał znak z uc na komputer. Niestety w terminalu zamiast wysłanego znaku widzę jakieś krzaki. Siedzę nad tym drugi dzień i nie mogę...
Kolega niech sobie sciągnie coś takiego "CodeVisionAVR Evaluation V2.04.6" masz tam kreatora który za ciebie wygeneruje obsługę RS-232 i tym sposobem się upewnisz co jest nie tak. Generowany kod w 100% pewny. Wydaje mi się że źle inicjujesz parametry transmisji. Poza tym nie piszesz co to za...
Nie ma takiej możliwości. DMA w STM32 nie ma funkcji przerzutu do tokena. Takie coś ma np. DMA zaimplementowany w PIC32. Na twój problem stosuje się specyficzne obejście, tzw. szukacz :] (nie wiem czy jest to nazwane profesjonalnie, ale wiadomo ocb) Sytuacja: 1) DMA jest skonfigurowany...
to ja dodam, że m2560 i 1280 mają po 4 (; (chyba jako jedyne), szkoda że są tak *^&*^$%(()_ drogie obecnie. Drogie- za drogie. Ja też miałem ten problem i kupiłem atmegę 328 w promocyjnej cenie 22.99. Zaletę ma wielką- dużo pamięci na program. W sam raz na program i programowy usart....
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...
Witam. Tak czytam szukam, ale nie bardzo mogę znaleźć i zrozumieć. Widnieją w liście wektorów przerwań pozycje od skończenia odbierania danych. Jaka jest nazwa 'uchwytu' stosowanego w 'funkcji' SIGNAL jak np w obsłudze przerwania przetwornika A/C, aby obsłużyć wydarzenie jakim jest skonczenie...
W założeniu czai się prozaiczny błąd logiczny - skoro klawiatura jest podłączona do PC, to µC nie jest w stanie oceniać, czy dany klawisz jest wciśnięty, może jedynie dostać coś po RS. A co dostaje to już jest kwestia oprogramowania na PC, złożonego z procedur obsługi klawiatury,...
Witam! Chciałem nieco poeksperymentować z moją atmegą i dorzuciłem kwarc. Ustawiłem fuse bity (hFuse: C9, lFuse: FF, Lock bit: 3F) i niestety troszeczkę się coś posypało. Obsługa USARTa, która wcześniej działała teraz jakoś gorzej sobie radzi bez względu na ustawioną prędkość....
Schemat: Nie ustawiałem fusebitów, ale mam pewność, że częstotliwość się zgadza, gdyż odliczanie sekundy z przerwania działa idealnie (kod z jednego z programów autora schematu). Co do kodu do UARTa, oczywiście zmieniłem 8 na 12,5. Generalnie na sprzęcie ładnie hula serwer HTTP,...
Trochę mnie uspokoiliście. W takim razie zrobię tak jak koledzy sugerowali, w przerwaniu od Timer2 ustawię tylko flagę, a resztę obsługi przerwania przeniosę do pętli głównej. A odbiór danych zrobię w przerwaniu. Po południu sprawdzę jak to działa i dam znać. A teraz to już na targi...
No okazało się, że ja nie wiem co to jest polling. Żeby dobrze wytłumaczyć o co mi chodzi, przedstawiam schemat blokowy programu w bardzo dużym uproszczeniu: na czerwono jest zaznaczona główna pętla, w której program znajduje się w oczekiwaniu na flagę. Flaga ta może być tylko ustawiana...
No i sprawa w pewnej części się wyjaśniła sama. :) Okazuje się, że do tej pory - jednak wbrew temu co twierdził Freddie - Flash Loader Demonstrator (wersja 2.2.0) nie obsługiwał żadnych nowszych układów STM32, w tym serii F-2. Wczoraj (!) na forum firmowym STM pojawiła się informacja,...
Niestety nie, ja myślę chyba jednak żeby zostawić tą transmisję, a winę za konieczność stosowania delaya zrzucić na kod obsługi wyświetlania tego co przyjdzie. Porobiłem troszkę testów i tak: ustawiłem bitrate na 230400 i zacząłem zmniejszać wartość delay i tak dla: 1300us -...
Mniesz program do obsługi. Procesor może robić coś innego niż pracować z szynami UART I2c. Np może wysyłać dane rs232 i liczyć impulsy timerem.
Witam mam trywialny problem, ale chciałbym się upewnić: Otóż postanowiłem zrobić sobie wysyłanie danych przez port szeregowy. Mam w związku z tym pytanie odnośnie USART na STM32. Jeśli ustawię sobie przerwanie USARTA na aktywny stan TXE (USART_ITConfig(USART1, USART_IT_TXE, ENABLE);...
Zdaje mi sie że problem nie leży w kablu tylko w obsłudze oraz programie.
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...
Eclipse świrowało przy programie obsługi PCF8583, na lcd wyświetlało dziwaczne rzeczy. Ten sam kod skompilowany w avr studio chodzi w porządku. Nie pogniewaj się proszę, ale Eclipse nie świruje ;) co najwyżej programista może świrować (mówię także o sobie gdy mi się coś nie...
Przesyłam sobie dane przez RS485. Na linii są dwa urządzenia i oba mają mieć możliwość nadawania. W związku z tym, gdy jedno skończy nadawać, powinno wyłączyć układ sterujący linią. Niestety jest problem przy transmisji USARTem przez DMA. Przerwanie transfer complete generowane jest...
Z plików Pana Freddiego utworzyłem sobie plik RCC.c dodałem go oraz katalog hdr. W programie [syntax=c] #include <RCC.c> #define CRYSTAL 8000000ul #define FREQUENCY 168000000ul .... fpu_enable(); pll_s... FREQUENCY);[/syntax] Wszystko się kompiluje bez problemu...
Witajcie, Posiadam płytkę STM32F4DISCOVERY z procesorem STM32F407VG. Używam pakietu Eclipse + linaro + openOCD skonfigurowanego wg opisu Freddiego Chopina. Uruchomiłem również przykładowy program stm32f4_blink_led. Chciałem dołożyć obsługę USART1. Konfigurację napisałem w pętli main. [syntax=c] int...
Czy to nie jest wywarzanie otwartych drzwi, sam posiadam kilka wyświetlaczy 2x20 (fluorescencyjnych) z komunikacją po RS232 5V. Na allegro chodzą po 20 PLN. Rozumiem sens poznawczy i konstrukcyjny ale to się też musi opłacać. Sens poznawczy to raz. Dwa chciałem wykorzystać PIC16F84A, który...
Mam taki o to problem. W przerwaniach Timera0 jest odczyt z DS18B20 i multipleksowanie 4 7Segmentowych wyświetlaczy. No to rzeczywiście masz gigantyczny problem ponieważ ty nie masz czegoś tam w przerwaniach Timer0 :( ..... ty CAŁY program z pętli głównej przeniosłeś do przerwania...
Włączyłeś przerwanie od UARTa a nie masz jego obsługi. Choć to pewnie nie ma wpływu na krzaki na LCD.
... Dlaczego tak się dzieje? :/ Dlatego, że przerwanie ISR(TIMER1_COMPA_vect) jest wywoływane co 128 taktów zegara, a wykonanie procedury przerwania timera1 zajmuje ~200 taktów. Po zakończeniu wykonywania przerwania od timera, gdy uC wraca do programu głównego, ma już ustawioną flagę...
Poniżej źródło w którym mam: -pomiar ADC -pomiar szerokości impulsu PWM wysterowanie przekaźnika -USART Mikrokontroler ma spełniać funkcję sterownika do ledów jako oświetlenie samolotu z wyróżnieniem wszystkich etapów startu jak kołowanie włączenie silników itp. [syntax=c] ...
MODBUS RS485 Adapter i co mamy? A, B, GND. Więc coś nas oszukujesz kolego. No oczywiście, ABB to mała firemka, a ich sprzęt jest nieznany ;P więc może nie widzą co robią TMF, znam oczywiście urządzenia "małej firemki ABB". :) Przytoczone przez Ciebie GND oznacza połączenie z potencjałem...
Witam, mam pytanie dotyczące obsługi przycisków oraz trochę większy problem z obsługą USARTa na uC STM32F107 :P Co do przycisków - mam je sprzętowo podciągane do Vcc, na AVR zawsze ustawiałem piny przycisków na wejścia i ustawiałem jeszcze wewnętrzny pull-up, a tu widzę, że jest...
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...
Witam, mam następujący układ: płytka z atmega128 i ENC28J60 połączenie db15 (taśma 15-sto żyłowa) z płytka z 16x rs485 połączenie RS485 z płytką z atmega32. Z serwera www jest inicjowana transmisja do ENC28J60, m128 za pomocą SPI (Ffreq/2 18432000) komunikuje się z ENC28J60,...
No to masz 4-bajtowy znacznik początku ramki, w dodatku niejednoznaczny, tylko po co? Przy automacie masz zmienną - stan automatu, którą elegancko robi się jaku enum, a dalej switch zapewniający obsługę kolejnego bajtu i przejścia pomiędzy stanami. Do obsługi tego początku, jaki masz,...
Zastanówcie się Koledzy, co się będzie działo, kiedy wrzucicie do UDR ostatni bajt do nadania. Kto i kiedy skasuje zgłoszenie przerwania TXD po wysłaniu tego bajtu? W obsłudze przerwania to nie nastąpi, więc przerwanie pozostanie zgłoszone i będzie obsługiwane na okrągło - patrz granica...
Ustalałeś przyczynę resetu, na podstawie rejestru MCUCSR? problem w tym, że tak jak pisałem, nie istnieje kod odbierający dane z UART. Cały interfejs na potrzeby testów jest całkowicie wyłączony - nie inicjalizuję UART, nie ma żadnej implementacji przerwań związanych z UART (ani rxc,...
Prawdopodobnie nie włączyłeś przerwania odbioru danych w USART - bit RXNEIE w rejestrze CR1. A poza tym . oczekiwanie w procedurze obsługi przerwania to nie jest dobry pomysł, a właśnie to robisz. Masz poniżej tablicę do zainicjowania USART z przerwaniem odbioru w STM32F0 - adresy rejestrów...
Witam, wykonałem układ z ATmega88, który m.in. wykorzystuje wyświetlacz alfanumeryczny VFD. Mikrokontroler poprzez USART wysyła polecenia i znaki w oparciu o następujący kod: USART_Transmit w formie: Send_String w formie: Send_String tablicy znaków powoduje wystąpienie błędu z powodu,...
Ja ogólnie etap migania diodami mam już za sobą zrobiłem parę projektów prostych wykorzystujących TIMERY, Przerwania zewnętrzne, obsługę klawiatury bądź LCD i teraz zamierzam się właśnie dokształcić w interfejsach a doświadczenia w tym temacie nie mam, dlatego też pytam się was. A...
Witam. Proszę o pomoc w zrozumieniu podstaw. Atxmega128 (albo 256 - w tym momencie to nieistotne). Chciałbym przesłać po I2C dane z pilota. Posługuję się kodem: [syntax=c]TWI_MasterWrite(&twiMa... //adres urządzenia Slave &test[0], //dane do wysłania 3);...
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...
A co to jest (w procedurze obsługi przerwania)?: USARTPutChar(USART2, USARTSIM.Stringnew[USARTSIM.StringIndex] = UART4->DR); - to ma szanse działać poprawni tylko wtedy, gdy nigdzie więcej nie ma kodu nadającego coś przez USART2 i szybkość USART2 jest większa od szybkości USART4. Inny...
Czemu nie powinno być dokładnego modelu procka z literką a i dlaczego wszystko inne mi działało przy wpisanej? To nie jest dokładnie tak, jak myślisz, muszą po prostu istnieć odpowiednio nazwane pliki nagłówkowe w katalogu include/avr . Można w ten sposób nawet dodać obsługę dotychczas...
Dzięki za odpowiedzi i uwagi ! Na pewno nastepnym razem zwrócę na nie uwagę, ale szczerze mówiąc teraz zależy mi bardzo na czasie, żeby to jakoś posklejać, jak to się mówi jakoś na ślinę i żebym mógł trochę danych zebrać. (at)BlueDraco: Tu jest aktualny kod odbioru danych GPS: ...
No trochę mi się powoli przejaśnia. Czyli ten kod powyżej to jest do obsługi rs232 przy połączeniu go przez zwykłego COM-a albo przez przejściówkę i nie odpali przy podłączeniu bezpośrednio do USB ? Sory za głupie pytania ale wogóle nie miałem styczności z X-megą tylko się naczytałem...
Dzięki za zainteresowanie. Zapomniałem o selektywnej kompilacji, bo mam w zwyczaju sprzątanie przed kompilacją, i całość się builduje (nawyk z pracy zawodowej w borland c++). Stosowanie dodatkowego parametru kompilacji zamiast dyrektywy i tak, mimo wszystko jest lepsze i w razie co zabezpiecza...
Tekst z pamięci uC jest wyświetlany prawidłowo, umiem wyświetlić teksty i liczby,... Nie jestem tego taki pewien, skoro chciałeś wyświetlać odebrany bajt w nieprawidłowy sposób. W dodatku nieprawidłowo definiowałeś F_CPU, co całkowicie rozwalało obsługę LCD. Wysyłałeś dane...
Nie wiem czy dobrze rozumiem o co koledze chodzi :). Można zrobić to tak: tworzymy flagę, kiedy pobierzesz dane od ade "zapalasz" flagę, jesli flaga zapalona to wysylasz dane do pc i "gasisz" flagę. Biblioteka do obsługi uart'u na PC napisana w C [url=]Link, sam jej używam.
Proponuję użyć przerwań, będzie to działało jak trzeba. Z tego co pamiętam to w tym procesorze jest przerwanie odpowiedzialne za odebranie danych po UART. Wtedy robisz obsługę przerwania i w niej odsyłająsz to co dostałeś albo zapisujesz do zmiennej, ustawiasz flagę i w pętli głównej...
Co do programu na megę328: 1. Niepotrzebnie dołączasz sfr_defs.h 2. O F_CPU w kodzie było już miliony razy na forum. 3. Dla ułatwienia obliczeń prędkości polecam util/setbaud.h 4. W rejestrze UCSR0C ustawiasz bity, które po resecie są ustawione. 5. W UCSR0B nie włączasz przerwania...
Witam, mam problem z komunikacją między UI a portem komunikacyjnym. Zaimplementowałem bibliotekę RXTX do obsługi portu komunikacyjnego w Javie i wszystko ok, wysyła i odbiera dane, problem pojawił się wtedy gdy muszę przekazać dane które otrzymałem na porcie do GUI. Interfejs napisany jest...
No pomyśl, kto wyświetla ten bluescreen. Raczej nie mikrokontroler... Błąd w programie dla uC też jest - nie można wysyłać przez UART danych bez przerwy. Daj jakieś opóźnienie czasowe po wysłaniu łańcucha. Być może kiedy to zrobisz, wadliwy sterownik na PC przestanie wylatywać na...
Jeszcze nie zrozumiałes ze s[5] = "start" nie jest prawidłowe? A dlaczego? Kolega powyzej napisał. if((buffer[i] = receiveByte()) == '\n') powoduje ze buffer nigdy nie bedzie zawierac "start" tylko start\n" czyli warunek w strcmp niegdy nie bedzie spełniony. Nie bedzie on spełniony tez z...
Pokaż program po zmianach. [syntax=c] /* BAUD RATE: 9600 */ #include <avr/io.h> // Załaduj bibliotekę input/output #include <util/delay.h> // Załaduj bibliotekę opóźnień #include <avr/interrupt.h> // Załaduj bibliotekę obsługi przerwań #include "ioinit.h" //...
Możesz użyć programowego uarta do komunikacji z bootloaderem i sprzętowego do obsługi rs485 , można też tak napisać bootloader żeby przy starcie systemu czekał na jakiś znak po rs232 a po chwili przełączał się na rs485 . taką funkcję można zrealizować na układach ttl . Minimalnie...
Witam, Napisałem obsługę UARTA z odbiorem przez DMA. Dane odbieram z ESP8266, tutaj też odbiór działa, pierwsza ramka odbierana jest prawidłowo, ale następna już nie, ponieważ bufor przepełnia się i kawałek ramki jest na początku bufora i na końcu bufora i tutaj pojawia się problem...
Dzięki za szybką odpowiedź. Przy okazji zapytam. Jeśli jest wykorzystywana tablica, to szybciej będzie się wykonywało obliczenia z wykorzystywaniem standardowej obsługi, czy obliczeń na niej z wykorzystaniem wskaźników ?
Bufor cykliczny, inaczej też nazywany kołowym, to najlepsze rozwiązanie do tego co chcesz zrobić. Tym bardziej, że jak zaznaczyłeś danych będzie sporo. Każdy odebrany znak wpisujesz do bufora i przesuwasz wskaźnik zapisu o 1. Możesz to robić przez obsługę przerwania od portu szeregowego,...
Sprytnie używając timera można napisać całkowicie nieblokującą obsługę OneWire z rozsądnym wspomaganiem sprzętowym - jeden kanał timera w trybie compare ze sterowaniem wyjściem w trybie OD, sąsiedni kanał w trybie capture z chwytaniem zboczy narastających. żadnych delay, żadnych problemów...
To jest połączenie trzech koszmarków: - bufor kołowy o wielkości 2 bajty (wtf?!) - chcęć ustawiania wielkości bufora kołowego na 3 bajty (wtf? * wtf?) - if w obsłudze bufora... jest ich więcej, Flagi, od których się roi i najstarsi górale nie wytłumaczą się z subtelnościami...
Pomyśl, ile czasu zajmuje pomiar i jak często przetwornik chciałby wywołać przerwanie. Potem zastanów się, ile czasu zajmuje obsługa przerwania. Samo to nie jest może powodem błędu, który obserwujesz, ale z pewnością nie ma sensu i jest błędem koncepcyjnym projektu. Niezależnie od tego,...
Hej, korzystam z USARTA na STM32L4. Podczas odczytu / wysyłu danych zakładam że szerokość ramki jest stała (4 bajty). Odczyt 4 bajtów jest prosty i z tym nie mam problemu. Projekt zakłada jednak, że raz na jakiś czas dane mogą przyjść niepełne - np. 2 lub 3 bajty. Z obsługą takiej...
Tiny 13 nie ma sprzętowego uarta ,więc programowy uart zawsze będzie blokował wykonywanie pętli głównej programu . Jego obsługę musi wykonać mikrokontroler tak jak program. Żeby to mogło działać to trzeba użyć przerwań i timera do obsługi uarta programowego a w czasie gdy ten liczy...
Witam. Mam problem z oprogramowaniem komunikacji USB na AT91sam7s64 tak aby działała w przerwaniu. Problem w tym że przerwanie po przywołaniu w ogóle się nie wyłącza. Inicjalizuje przerwanie za pomocą standardowych funkcji dostarczanych przez ATMELA void USB_init ( void ) //*...
Witam, mam problem z programem obsługi przerwania od Timera2. Używam biblioteki #include <libopenstm32/rcc.h> #include <libopenstm32/flash.h> #include <libopenstm32/gpio.h> #include <libopenstm32/usart.h> #include <libopenstm32/timer.h> #include <libopenstm32/nvic.h> void...
Witam Zbudowałem sobie na jednej płytce stykowej Dodano po 4 Przeczytałem na stronie radzio.dxp.pl, że w zmiennej znak otrzymuję kod klawisza, a nie kod ascii i po to jest plik scancodes.h aby sobie zamienić kod klawisza na znak. Jednak dla przykładu: SPACE - hex:0x20 znak klawisza:29,...
Witam, uczę się pisać w Bascomie dopiero od niedawna, umiem już pisać podstawowe programy. Zainteresowałem się ostatnio interfejsem DMX512, chciałbym napisać program do odbioru sygnału w standardzie DMX512. Niestety moja wiedza nie wystarcza mi jeszcze na napisanie takiego programu samodzielnie....
Sprzęt dostarcza zamawiający. Bibliotekę obsługi łańcuchów tekstowych dostarcza zamawiający Serwer komunikacyjny dostarcza zamawiający. Opis protokołu wymiany danych dostarcza zamawiający. ............................ sterownika: Praca z wykorzystaniem...
:arrow: robiw Jaki jest cel generowania tego impulsu? Zapobieżenie drganiom styków, tzn. żeby obsługa zdarzenia nie została wywołana kilka razy? Jeśli tak, to stan klawiszy możesz zczytywać w pętli i po wykryciu naciśnięcia wrzucać opóźnienie. Żeby nie "wyłożyć" transmisji możesz...
Witam Znalazłem na naszym szanownym forum kod w C do obsługi portu RS232 (na PC): #include <windows.h> #include <stdio.h> int main() { HANDLE hCom; //uchwyt portu DCB dcb; //konfiguracja portu BOOL fSuccess; //flaga pomocnicza BYTE RS_buf;...
Jestem początkujący w programowaniu mikrokontrolerów i mam problem z obsługą przerwań w Atmega8. Mam taki oto, bardzo prosty program znaleziony w sieci: #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #define F_CPU 1843200 #define USART_BAUDRATE...
markosik20 - A czy próbowałeś przerobić ten kod na jakiś inny AVR? np M8 lub M32? Czy to tylko teoretyczne założenia? Podałeś dokładnie tą samą instrukcję w usuniętym przez moderatora temacie, próbowałem wtedy korzystając z tej instrukcji uruchomić to na M8, potem też na M32 i lipa....
Mnie wychodzi, że to nie jest tryb CTC tylko normalny. Po drugie na przerwanie compare trzeba zezwolić w rejestrze TIMSK - bit OCIE0 - masz < zamiast << stąd problem. Jak masz jakieś wątpliwości co do konfiguracji, to użyj symulatora AVR Studio. Można sobie w nim też ustawić tryb...
Może konflikt pinów z LCD i SPI. Musisz pokombinować. Zresztą, zrób sobie pusty projekt dodaj fatfs i ten plik, napisz obsługę SPI i powinno działać. A i uzupełnij sobie funkcje int _write(); np. tak żeby korzystała z USART, będzie ci działać printf();.
Silicon Labs prezentuje nowe układy Happy Gecko należące do rodziny energooszczędnych mikrokontrolerów EFM32. 32-bitowe mikrokontrolery Happy Gecko charakteryzują się najniższym jak dotąd poborem energii. Oparte o rdzeń ARM Cortex-M0+ oferują krótki czas wybudzenia i przełączenia...
W zasadzie tak. UDR to jest dosyć szczególny rejestr, bo jakikolwiek jego odczyt sygnalizuje procesorowi odebranie znaku z USART-a i wtedy automatycznie dzieje się kilka rzeczy, m. innymi gaszona flaga RXC, załadowanie do UDR następnego przyjętego znaku, jeśli zdążył się pojawić (jest to...
Ja jakoś nie miałem większego problemu z niczym a używałem większości peryferiów z bibliteką 2.03 Jeden znany mi błąd do którego sam doeszedłem to wkompilowana wartość kwarcu 8Mhz w starej bibliotece - co oznacza, ze przy innej wartości kwarcu nie mozna uzyskać poprawnego baudrate'u...