Tablica char str[3]; jest za mala (ma tylko 3 elementy) a Ty odwolujesz sie do 4.
Niby nie trzeba pchać na usart ale jak wtedy debugować? Bardzo prosto : USART przeznaczyć na komunikację z układami ( np. ESP8266 ) a ewentualne debugowanie puścić na programowy "port szeregowy". Konwertery TTL/USB są tanie jak barszcz a w takich sytuacjach są jak znalazł.
Kolejny raz widzimy to samo. Zamiast dobrać kontroler do zadania, to próbujesz na siłę dopasować zadanie do kontrolera leżącego w szufladzie. Tutaj o tyle gorzej, że nawet się nie zastanowiłeś ile zasobów potrzebujesz, tylko od razu przyjmujesz 2 albo 3(!) kontrolery do w sumie bardzo prostej aplikacji. Moim zdaniem wszystko zrobisz na jednym uC i może...
Z tym akurat nie mam problemu. Piny 0 i 1 wykorzystuję w programie i jest OK. Z tego co wiem to USART trzeba aktywować w programie. Dodano po 15 Ale tak po przemyśleniu lepszym rozwiązaniem jest Watchdog odpowiednio ustawiony. Programowy reset wymaga aktywowania w przerwaniu i żeby to zadziałało musiał bym aktywować odpowiedni pin. Jeśli miało by to...
Ta obecna działa z PICem przy 2,5V. W picu może usart jest programowy i aktywny poziom wysoki a nie niski. Spotykałem takie rozwiązania. Dzięki temu , w czasach RS232C, do konwersji poziomów wystarczał rezystor.
Wartość kalibracji masz wpisaną fabrycznie w układ , więc czytasz i wpisujesz albo w program , albo jak potrafisz ją przeczytać bezpośrednio , bo tak też się da , to czytasz to co producent wpisał i wpisujesz do odpowiedniego rejestry i masz jak dobrze pamiętam 0,1% błąd więc uart programowy działa jak powinien , chyba że ustawisz jakąś kosmicznie dużą...
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. Taniej, niż za tamte atmegi.
zgadza sie!, skąd wiedziałeś? Ale chce zaprogramować do tego celu mikrokontroler Atmega8 który ma dogadać się ze sterownikiem. Ma on programowy USART i musze jakoś go ustawić aby miał te same parametry co sterownik silnika.
Zedytowałem pierwszy post - usunąłem zbędny kod i wprowadziłem poprawki. USART zadziałał ale...no właśnie, ale nie działa gdy działa programowy PWM. Zakomentuję linię z init_timer1(); i USART działa. Wtedy nie mam PWM, którego również potrzebuję. Dlaczego tak się dzieje? :/
Witam ponownie, Po tamtych eksperymentach zabrałem się do realizacji zaplanowanego projektu do sterowania wentylatorem w łazience. Do sterowania wybrałem Attiny13A. Wentylator będzie załączany w zależności od wilgotności powietrza, zapalenia światła oraz czujnika odległości, który będzie sprawdzał czy ktoś usiadł i na jak długo na sedesie (domniemanie...
Mi naprawdę nie zależy na prędkości, to będzie max 5 komend lub wyników na s. Programowy usart raczej kiepsko będzie ożenić z nadawaniem na przerwaniach. AVR mają mało RAM i może zabraknąć pamięci na bufor. W takiej sytuacji w czasie nadawania program główny czeka na zakończenie transmisji. Jeśli transmisja będzie wolna, to może się okazać, że 100%...
Były to programy na Windowsa Podn Windę nie odwołujesz się bezpośrednio do układów peryferyjnych. Robisz to za pośrednictwem sterowników. Otwierając COM nie interesuje Cie czy to VCOM na USB, port na PCI itp. Nie konfigurujesz rejestrów układu, np SPI czy I2C. Inaczej było pod DOS. Myślę że dał bym radę zaprogramować zamiennik. Kwestia czasu. Arduino...
Czy jest konieczność aby transmisja trwała nieprzerwanie? To transmisja video czy może odczyt kilku bajtów co sekundę? Czy nie można użyć przerwań od slave i wtedy realizować krótkie transmisje? No dokładnie. W takim razie po co komukolwiek będzie potrzebne to 1.3Mb/s na bit bangingu? Przecież wszystko to można zrobić na sprzętowym TWI? Jaki jest sens...
Niestety nie mogę wykorzystać wbudowanego bootloadera ponieważ CAN USART USB są już zajęte. Jeśli chodzi o problem związany ze skryptami linkera to wgrywałem soft do procesora w opcji (kompiluj + programuj) co nie uwzględniało zmian w skryptach!!! Po przebudowaniu całego projektu skrypty wprowadzały zmiany w alokacji sekcji.
HA! I ponoiwnie BINGO!!! :) przejżałem dokumentacje pod kątem tego co napisałes i dośc przypadkowo (bo chciałem sie dowiedziec cos i wysciu CLK eby zmierzyc ewentualnie rzeczywiscta czestotliwosc na tym wyjsciu, z jaka pracuje zegar..) i znalazłem taki fuse bit jak CKDIV8.... ktory fabrycznie był włączony!!! jest to preskaler czestotliwosci zegara......
Robisz transmisję USART i nie wiesz co to jest UDR? To do licha, jak udało ci się zrobić tą transmisję? Nie mam pojęcia, jestem inżynierem mechanikiem a nie elektronikiem/programistą. Udaje mi się tym sposobem przesyłać bezbłędnie całe kilobajty ale gdy próbuje jedna liczbę to jest problem. Nie bardzo rozumiem co znaczy "wychwyci zmiany na RX". Stosujesz...
Miały byc jakies fotki czy filmy ale jeszcze nie ma. Spokojnie, skoro nie chcesz podjąć rękawicy i przyjechać, to wstawię :) Jak sie niepotrafi izrobić programowo, to sięga się po sprzęt. To pewnie nie sa tanie konstrukcje, jak uC jest otoczuny dziesiątkami układów, które sa zbędne. Tak? To po co sięgasz po ARMa? PO co Ci 2 i więcej magistral I2C czy...
slawek-matyl -> dopiero w drugim poście napisałeś, że chodzi ci o transmisję RS232 ale w torze radiowym 433MHz - a to robi wielką różnicę ;). A właśnie to jest twoim problemem a nie dobieranie kwarca zewnętrznego. Bo nawet przy stosowaniu kwarca "przyjaznego" dla RS232 - będziesz miał te same probelmy. Wynikają one z tego, że te proste i tanie pary...
Cze, Od jakiegoś czasu rozwijam swoją konstrukcję sterownika do stacji pogodowej. Projekt robi się coraz większy i większy i w końcu dotarłem do etapu, w ktorym rozważam użycie jakiegoś RTOSa. Mam dużą bibliotekę własnego kodu obejmującą takie rzeczy jak kompleksowa obsługa komunikacji po USART czy I2C, mam pełną obsługę konsoli tekstowej. Do tego używam...
Diody na pewno poprawnie, dołączyłem na samym końcu po stwierdzeniu że występują resety, stan rejestru MCUCSR sprawdzałem początkowo przez debug, później wyciągnąłem na diody. po uruchomieniu/aktualizacji programu pokazuje reset zewnętrzny/JTAG, po niespodziewanym resecie gasną wszystkie (domyślam się że o to chodziło przy pytaniu o kierunek podłączenia...
Więc próbowałem odfiltrować to 13 ale niestety dalej ten sam efekt. Widocznie BTM222 w momencie odbioru wymaga CR i nie przekazuje go do atmegi (tak mi się wydaje). Jedyne co zaobserwowałem to fakt że gdy zapiszę kod nadawczy w ten sposób: [syntax=c] //... ISR(TIMER2_COMP_vect) { if(analog1 > 225) //analog1 to sygnal ktory chce wyslac USART_SendByte('q');...
Zacznij od określenia protokołu transmisji - w jaki sposób będziesz przesyłał te dane (znakowo/binarnie), jaka jest ich długość, po czym program może je rozpoznać, czy i jak sprawdzać poprawność transmisji. Zastanów się nad strukturą oprogramowania - same przerwania, RTOS, czy (w ostateczności) jakaś pętla zdarzeń? Potem dopiero planuj programową obsługę...
1. Lutowanie tragedia. 2. Używasz sprzętowego USART'a czy programowego? Na płytce lutowanej to chyba programowy USART? 3. Podłączenie samego konwertera RS i Atmegi bez zasilacza nic nie da. Konwerter podłączony do PC'ta nie może zasilać układu; nie ma takiej możliwości. Trzeba mu podać zasilanie. To, że Leda świeci to chyba jakieś prądy błądzące. 4....
O problemach z nadawaniem 485 pisałem w innych moich postach. Właściwy moment przełączenia nadajnika w tryb odbierania danych jest najważniejszy. Dlaczego mając do dyspozycji sprzętowy usart używasz programowego? Flush _chyba_ nie działa na programowym a rozwiązuje problem na sprzętowym.
Wyprowadzenia 2 i 3 slave, czyli DE/RE też muszą być sterowane odpowiednio z procesora, bo twoje slave będą także odpowiadać. Gdyby slave tylko nasłuchiwał, to możesz podłączyć to na stałe, tak, aby odblokowany był tylko odbiornik. Na generatorze wewnętrznym to raczej nie pójdzie za dobrze, szczególnie jeśli to ma pracować w szerokim zakresie temperatur....
W przypadku braku modułu USART/UART można zrobić transmisję programowo. Zwykle do szybkości 9600 da się zrobić.
Możesz niemal z każdego gpio zrobić programowo USART. Jedynie musisz sam zadbać o jego obsługę.
Funkcja (w takiej ostatecznej formie jak przedstawiona przez Ciebie), wygląda na poprawną, tzn. powinna działać tak jak tego oczekujesz, chociaż sprawdzałem pobieżnie i głowy nie dam :D "Poprawność" rozumiem tu w sensie użytej sekwencji instrukcji. Przypuszczam, że kłopot może wynikać z zależności czasowych. Robisz dużo operacji na LCD. Być może użyte...
Co do schematu - dałbym jednak zewnętrzne pullupy na przyciski - w środowisku o dużych zakłóceniach, wewnętrzne mogą mieć zbyt duży opór. Podobnie 1-wire - p[roponowałbym jakoś zabezpieczyć pin procesora, a nie puszczać go bezpośrednio na magistralę. Przy okazji - w tak rozbudowanym ukłądzie unikniesz sporo problemó robiąc obsługę OW nie na pinach IO...
Attiny 85 nie ma modułu USART. Trzeba byłoby transmisję USART realizować całkowicie programowo. Poza tym ten konwerter wymaga 4 wyprowadzeń procesora, pytanie czy Ci wystarczy, bo zostają dwa do użycia (zakładając że rezygnujesz z resetu).
Skoro Rx jest wyjściem, a wyjść, które nie są OC się nie łączy to twój układ jest błędny. Nadawanie z RPi będzie ok, lecz nadawanie z ATMega nie zadziała - nastąpi konflikt. Rozwiązaniem jest zrobienie tak, żeby Rx były typu OC - jednak w ATMedze bezpośrednio tego nie zrobisz - stąd trzeba zastosować bramki z wyjściem OC lub zrobić to na elementach...
Dałem linka do schematu, tam jest wszystko. Ok, dzięki za odpowiedź. Jak będę miał chwilę to poszukam coś o tym programowym USART. Ostatecznie są jeszcze 2 wolne miejsca w porcie C, więc jak co to spróbuję przerobić płytkę tak, żeby przełożyć to z PD0(rdx) i PD1(tdx) na PC1 i PC2.
Atmel udostępnia gotowe noty katalogowe z opisem i kodem (w asemblerze, ale to nie problem) realizacji programowego USART. Swoją droga po co się w to bawić, nie prościej wybrać procka, który ma więcej USARTów?
Zewnętrzny układ we/wy możesz podłączyć przez dowolny interfejs szeregowy, zwykle jest to I2C, SPI albo 1-Wire. Wszystkie wchodzą w grę, przy czym ostatniego nie znajdziesz w atmedze, pozostaje realizacja programowa. Do tej pory nie wpadły mi w ręce żadne układy we/wy działające z USART-em, na upartego dałoby się taki zrealizować przy użyciu jakiegoś...
Moim zdaniem jest prostsza metoda. Tworzy się dwa indeksy i tablice buforującą. Oprogramowanie zapisuje znaki to bufora i zwiększa pierwszy indeks (umownie indeks programowy). Po takim zapisie przed wyjściem zezwala na przerwanie. Przerwanie z kolei jak wykryje, że bufor programowy jest różny od drugiego buforu (umownie bufor sprzętowy) to z aktualnie...
Jedyny wymóg dla Tx to taki że pin musi być skonfigurowany jako wyjście. Jeśli w dalszej części programu nie zmieniasz go przypadkiem na wejście to musi działać. Tak się składa że mam Atmegę 162 i nie zauważyłem żadnych problemów z poprawnym działaniem obu USARTów. Zastanawia mnie samo wyjście Portu PD1 które jest w stanie niskim mimo programowego ustawienia...
5. Czy powinienem włączać linie SCL i SDA jako wyjścia lub wejścia poprzez ustawieniea w DDRC? Przy sprzętowej obsłudze TWI dzieje się podobnie jak przy sprzętowej obsłudze USART. Czyli włączenie mechanizmu sprzętowego powoduje automatycznie zmianę funkcji odpowiednich pinów transmisyjnych i wymusza ich działanie. Tylko przy programowej realizacji...
Config Powermode = Powerdown działa tak jak powinno. Artykuły Dondu czytałem bardzo dawno i nie wiem czy wspomniał a tym że w tym trybie pin TX USART pozostaje w stanie aktywnym wysokim. Potem przez niego zasilają się różne rzeczy. Możesz oczywiście na niego wpłynąć programowo, ale nie przez DDRD bo kontrolę nad pinem przejął USART. Myślę, że prostym...
Jak używasz sprzętowego USART to nie musisz w zasadzie liczyć czasu jaki jest potrzebny na odbiór/nadanie bajtu. USART robi to sprzętowo i ładuje do bufora, a można go tak ustawić że po odebraniu bajtu zgłasza przerwanie, i wtedy odpowiednio reagujesz. Co innego z programowym, tu już timingi mają znaczenie.
Robiłem w swoim urządzeniu dla czujnika temp DS18B20. Pewnie master programowy? Jak tak to dlaczego w programie nie rozdzieliłeś pinu nadawania od odbioru? Pinów w procku brakowało? Procek to xmega. Master może być programowy, lub sprzętowy - USART. Aktualnie soft jest w trakcie pisania i master jest programowy, a docelowo będzie sprzętowy na usarcie.
Szkoda, że nie napisałeś, jakiej wydajności CPU potrzebujesz? I organizacji 8, 16, 32 bit. Ja bym polecał 16 bitowe układy rodziny MSP430Fxx. Krótka charakterystyka na przykładzie MSP430F4xx: Napięcie zasilania 1.8 – 3.6V Ultra niski pobór mocy: W trybie aktywnym 280uA dla 1MHZ 2,2V Pięć trybów uśpienia Wybudzienie z trybu uśpienia, 6us 16-bitowa...
Programowo nie da się jej zmienić....... Weź chłopie daj wszystko jak było, tylko BAUD daj 4800 i sprawdź, czy przy takiej prędkości działa #define F_CPU 1000000ul #include <avr/io.h> #include <util/delay.h> #include <avr/signal.h> #define FOSC 1000000 #define CZYT 50 #define BAUD 4800 #define MYUBRR FOSC/16/BAUD-1 void USART_Init(...
ATTiny ma moduł USI, w zależności od konfiguracji działa jako USART, SPI, I2C z lekkim wsparciem programowym.
Jak kolega wyżej słusznie zauważył, potrzebna jest funkcja operująca na RAM. Domyślam się że korzystasz z przykładowych kodów z książki "AVR. Praktyczne projekty"? Nie ma tam buforowanej funkcji UART czytającej stringa umieszczonego w RAM, a więc trzeba sobie taką funkcję dopisać (można też zmodyfikować istniejącą korzystając z tzw named address spaces)....
Ten procesor nie ma wystarczającej liczby peryferiów, w praktyce musiałbyś UASRT symulować programowo, lub użyć semisprzętowy USART (USI), ale za to programowo symulować I2C. I gdzie się nie zakręcisz będzie problem. Do tego tylko 4kB FLASH, nie znając projektu trudno powiedzieć czy wystarczy. Dlatego sugerowałem ci zmianę procesora, jeśli USB nie jest...
Ja tak trochę z innej beczki. Przymierzam się też do czegoś takiego, ale jak do Atmegi8 podpiąć i GPS i GSM? Usart 1 nadajniki 2 :) ? Do megi8 możesz podpiąć, tylko jeden USART będziesz musiał napisac programowy. Lepiej oczywiscie wybrać uC z dwoma USARTami, np: ATMega162.
Poza sprzętowym uartem masz jeszcze możliwość użycia programowego uarta , możesz też użyć modułu BT z interfejsem SPI . albo użyć mikrokontroler który ma dwa układy uart np. ATMEGA162 . Jest sporo układów posiadających więcej niż 1 uart możesz je szybko znaleźć na stronie atmela używając selektora
Faktycznie głupio popisałem :) Rezystor do resetu powinien zostać. Podciąga od dodatkowo (pewniej) do plusa sygnał resetu. Co do złącza programowania - faktycznie przekładanie procka skończy się po kilku razach. Moim zdaniem w minisumo nie ma miejsca na takie coś, bo program poprawia się setki razy. Ale jest na to metoda. Możesz wgrać bootloader i komunikować...
A ja tradycyjnie odeślę do literatury: Piotr i Paweł Gałka - "Programowanie mikrokontrolera 8051", ale w sumie to Ci niepotrzebne no bo komunikaja n RS to prosta sprawa, nioe musisz nawet kupować sterownika USART - możesz to zrobić programowo.
Właśnie tu jest pies pogrzebany ;-) Na gotowej płytce mam już układ PDIUSBD11 . Nie mogę użyć FT232 lub CP2102 bo wszystkie USART'y w ATmega128 mam już zajęte. Teoretycznie mogłbym użyć jakiegoś multipleksera np. 74HC244 do przełączania portu USART lub na innych portach programowo zrobic USART, ale płytkę mam już gotową, elementy przylutowane i to,...
AVE... Lepiej w C/Basic programować. Zwłaszcza do takiego zadania. Assembler jest dobry do zadań czasowo krytycznych. No i kod wyższego poziomu łatwiej przenosić na różne układy... Aż się prosi zrobić z tego uniwersalny interfejs USART dla wyświetlaczy tekstowych, z możliwością programowego wybierania wielkości wyświetlacza... Wstaw zdjęcia gotowego...
Z tym generatorem 36kHz to proponuje zrobic generator 36kHz na układzie CMOS 4047 sterujący diodami nadawczymi IR, a przebieg modulujący podawac na wejscie zezwalający na generację - zrobić kluczowanie tego przebiegu. Czyli tak (wersja jedna z możliwych wielu) - PC nadajnik MAX232>>TX na kluczowanie generatorka np na 4047>>do wzmacniacza nadajnika...
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, a Ty potrzebujesz slave. Zatem tylko wbudowany interfejs SPI.
Nie mówiłem o USART tylko o RS232, a to nie to samo.
Dodam, że sam program bootloadera reaguje na przycisk, zapala diodę a jak dodałem na chwilę programowe echo dla USART to również działało więc hardware jest RACZEJ ok. BOOTSZ mam ustawiony na największy rozmiar (nie pamiętam już jaki).
Nie wiem co masz za przejściówki, ale ważne jest sterowanie nadawanie/odbiór. W przypadku pc, zdarza się że jakieś CTSy (dodatkowe linie) są używane. Skoro masz tam kontroler, to weź dowolny scalaczek który z rs232 ttl robi rs485 i ogarnij programowo sterowanie nadawanie/odbiór. Przykład: SN65HVD82, SN65LBC184 jest tego więcej.
Tutaj popełniasz dosyć poważny błąd. Po odebraniu pierwszego bajtu zatrzymujesz transmisję na SPI na stosunkowo długi czas potrzebny na przesłanie tego bajtu poprzez USART. Nie to jednak jest najgorsze. Po dokładniejszym przeanalizowaniu noty ADIS16100 zauważyłem dwa dosyć ważne problemy. Pierwszy to taki, że stosunek czasu trwania stanu wysokiego...
Ofkoz ze tak. Blokowanie w funkcji wsadzajacej znak do bufora imho jest paskudne/straszne/przerazajace/odpychaja... Nawet w najwolniejszym procku zawsze warto implementować programowe FIFO o wielkości nawet tylko 16 bajtów, a sam tx realizować tylko i wyłącznie w przerwaniu... Jak ma się wykonywać pseudowielowątkowo...
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. ;)
Prawie całe ;-) Jesteśmy zgodni co do tego, że da się obojętnie jaki. Ale co przemawia za PNP, a nie zostało jeszcze wspomniane to to, że w układzie z NPN potrzebny jest rezystor kolektorowy, chyba,że możemy odseparować masę nadajnika i MCU. To dodatkowy element i dodatkowe straty. Oczywiście nie jakieś kosmiczne, ale trzeba je uwzględnić gdy robimy...
Najprostszym rozwiązaniem będzie chyba zrobienie jakiegoś małego bufora komend. z tym buforem tak jak napisał TMF, to nie takie hop-siup :D Bo oczywiście, że mógłbym komendy wysłać ciągiem, w końcu korzystam z cyklicznego buforu programowego USART, one by się tam gromadziły, a ja bym zapomniał o wszystkim. Tylko, że ja po każdym wysłaniu komendy sprawdzam...
Tak, jeśli w ATMega dwa moduły współdzielą dany pin to nie mogą się "dogadać", na czas działania jednego musisz wyłączyć drugi. Swoją drogą jak chcesz na jednym pinie połączyć funkcje SPI i PWM? Rozumiem, że MOSI ci nie jest potrzebny? To zrób SPI programowo, albo przełącz USART w tryb SPI.
procek pracuje z zewnętrznym kwarcem 4MHz, modul podpiety jest do procesora przez programowy USART, cala komunikacja miedzy modulem a procesorem wydaje sie byc poprawna poniewaz podglad mam na sprzetowym usarcie i widac ja w oknie terminala. Predkosc transmisji to 4800 i jest ustawiana w procedurze GSM_Init(): void GSM_Init() { LED1_OFF; LED2_OFF; GSM_COMMAND...
Cześć, mam takie zadanie, w sumie nie tyle chciałbym żeby ktoś mi je rozwiązał co poprowadził. Korzystam z AT90USB1287 ale nie ma to dla mnie większego znaczenia później przełożyć taki program jeśli propozycje będą na inne :) Jestem totalnym amatorem na poziomie migiania diodek, więc proszę o wyrozumiałość. ----------------------------------------...
Chyba każdy usart jest synchronizowany podczas bitu startu - poto ten bit. Wydaje mi się, że problem błędów polega na transmisji ale po stronie usb gdzie procesor ma naprawdę dużo do przemielenia danych a nie po stronie uart gdzie procesor nic nierobi programowo.
Wielokrotnie była o tym mowa - w ATMega generator RC nie ma wystarczającej stabilności, aby bez dodatkowych procedur kalibracyjnych wykorzystać go do transmisji UART. Oczywiście może to działać, ale zapewne efekt będzie taki, że raz działać będzie, a raz nie. Gdzie się takich bzdur naczytałeś Tomku po wpisaniu w odpowiedni rejestr wartości kalibracji...
Witam. Fuse bit (prescaler /8) istniejący (włączony) fizycznie w mikrokontrolerze chcesz usunąć (wyłączyć) programowo ? Tak to zrozumiałem z Twego postu.
Co do pisania kodu na opóźnieniach i pętlach to masakra. Zwłaszcza, że z: [syntax=c]#define F_CPU 96000000 [/syntax] wynika, ze AVR pracuje na 96MHz! W tym kodzie nie ma to specjalnie dużego znaczenia ale gdybyś chciał obsłużyć USART czy w zasadzie każdy inny układ peryferyjny synchroniczny to nie skorzystasz z wielu dobrodziejstw plików nagłówkowych....
W moim układzie, w którym pracuje MAX232CPE prawidłowo do 230400 bps, na pompkach ładunkowych mam 4µ7 tantalowe, a pozostałe 10µ. Jeśli masz pod ręką woltomierz, to po prostu sprawdź napięcie na 6 wyprowadzeniu, powinno wynosić co najmniej -8V (względem GND), a jeśli jest -10V to jest wręcz idealnie. Prościej byłoby sprawdzić transmisję z...
Pierwszy problem - to brak synchronizacji. Nadawane dane muszą mieć taką postać, żeby łatwo było zauważyć początek ich porcji. Może to być np. kod końca wiersza lub spacja pomiędzy liczbami. Użycie DMA do odbioru danych jest zdecydowanie złym pomysłem, przynajmniej dla początkujących. Dobrym pomysłem za to jest zrobienie wszystkiego w przerwaniu, pod...
Ale przecież LIN to prosta magistrala, którą można realizować całkowicie programowo, lub semisprzętowo przy pomocy USART/USI. Nie potrzebujesz żadnego procesora z w pełni sprzętowym LIN, tylko praktycznie dowolną ATMegę/ATTiny. Ba, nawet masz gotowce Atmela: AVR322: LIN v1.3 Protocol Implementation on Atmel AVR Microcontrollers. Ściągasz do tej noty...
Po 5 latach chyba kolega sobie poradził:) Temat do zamknięcia. PS.Do sterowania nadajnikiem MAX3485 w STM32 kluczem jest poszukanie w RMie informacji o fladze TC a następnie programowe sterowanie odpowiedniego GPIO w przerwaniu od UARTu.
Poza tym nie trzeba wcale mieć timerów ani zadnego supervisora, jeśli masz gwarancję, że dane przetworzysz szybciej, niz przychodzą. A parser i obróbka może się mielić najzwyklej w pętli głównej. Ja tutaj patrzę od razu pod kątem podpięcia takiego odbioru pod strumienie (czyli FILE, scanf() itd.), które z racji swojej asynchroniczności generalnie potrzebują...
Działa w wersji programu bez: Open "comd.7:9600,8,n,1" For Input As #2 czyli co 1 sekundę aktualizuje pozycje na LCD i jest OK Dołożenie drugiego ( programowego ) portu USART: Open "comd.7:9600,8,n,1" For Input As #2 powoduje, że LCD nic nie wyświetla, naciśnięcie Enter powoduje aktualizację wyświetlania na LCD, jeśli naciskam...
MAX232 jest tylko i wyłącznie konwerterem poziomów napięć i trudno go jakoś specjalnie programowo obsłużyć. To co chcesz oprogramować nosi nazwę UART albo USART i pod tym kątem szukaj na forum i w googlach bo temat był wielokrotnie wałkowany.
AVE... MCP2551 konwertuje sygnał z (E)USART na wartości logiczne przyjęte w sieci CAN. Tu się nic nie konfiguruje, konfiguruje się w mikrokontrolerze (E)USART do pracy w trybie CAN. Jak mikrokontroler obsługuje to sprzętowo, to masz stosowne dane w nocie katalogowej przy tym module pokazane. Programowo jak chcesz to realizować, to albo napisz własny...
Witam, szukam informacji o programowej współpracy pomiędzy sim300 a atmegą. Moje pytanie to jak, przy komunikacji usart'em, należy zainicjalizować sim300. Rozumiem, że za pomocą komend AT moge sprawdzić czy moduł pracuje i się z nim komunikować ale co należy zrobić na początku? Drugi pytanie to jak włączyć tryb teksotwy na sim300 aby wyeliminować konieczność...
Pomyłka. Sprawdzać trzeba nie UDRE, ale TXC. W dodatku trzeba go kasować programowo, jeśli nie używasz przerwania Od TXC. Spróbuj tak: unsigned char USART_Receive( void ) { while ( !( UCSRA & (1<<TXC)) ); UCSRA = 0x40; while ( !(UCSRA & (1<<RXC)) ); return UDR; }
www.microchip.com tam znajdziesz noty aplikacyjne i specyfikacje wszystkich modułów wewnętrznych procesora (min modułu MSSP i USART). Pozatym zastananów się jak działa transmisja SPI, można ją całkiem wydajnie zrobić programowo na dowolnych wyprowadzaniach cyfrowych procesora.
Schematu nie widzę. Napisałem Ci już jakie tranzystory możesz tam zapakować. Kosztują <0,50PLN/sztukę w TME, więc tanio. W dokumentacji do wyświetlaczy sprawdź maksymalny prąd i na początek ogranicz prąd maksymalny do tej wartości (prawdopodobnie 20-60mA). Program do napisania od nowa. 1. Po co zewnętrzny prescaler, jeżeli licznik TIM0 ma wbudowany...
Poszedłem na browarka, wróciłem, podłączyłem troche zmieniłem i zadziałało. Po prostu Print i Input. Zmieniłem tylko w odbiorniku zmienną na String * 5. Jedyne co, to na wyświetlaczu odbiornika wyświetla sie z przodu dziwny znak, pewnie każdy wie o co chodzi. Pozatym wszystko działa. Jak go usunąc programowo?
A z jakiego modułu GPS korzystasz ? Jeżeli używasz zew. oscylatora zobacz w datasheet-cie jaki jest błąd dla niego. Ludzie standardowo używają kwarca 8Mhz gdzie trochę kłopotliwy jest przez błędy występujące przy danych prędkościach. W tabeli są zaznaczone dla GSM 115.2kb/s i dla GPS-u 9600kb/s. Widać że są różnice dość spore. http://obrazki.elektroda.pl/5437484700_1...
Możesz do tego celu użyć sprzętowego interfejsu USART. Jeżeli nie masz na tym pinie dostępnej takiej możliwości to będziesz zmuszony zaimplementować programowego UARTA. Należy do tego wykorzystać timer z przerwaniem. Częstotliwość przerwań powinna być przynajmniej 4x większa niż Twój bitrate (a najlepiej to x16) co w przypadku 1200bod/s nie będzie problemem.
Dobra wyszukiwarke ma Microchip. Linka nie idzie wkleic, wiec na microchip.com w products wybierz jakas kategorie i u gory po lewej kliknij 'Parametric search'. PIC16F688 ma USART, ale w 14pinowej obudowie. Mozesz jeszcze sprobowac obsluzyc port szeregowy programowo, ja tak zaczynalem i nie jest to tak trudne, jak mogłoby sie wydawac.
Witam, Może wiecie gdzie znajdę opis znaczenia poszczególnych bitów specjalnych rejestrów Atmega8 - chodzi mi przede wszystkim o bity i znaczniki przerwań od USART'a (flagi) i Timerów - w pdf'ie tego nie widziałem? I jeszcze jedno, skoro ta Atmega posiada sprzętowy I2C to czy Bascom korzysta z programowej obsługi tego protokołu tak jak w przypadku 89C2051...
A jak wygląda u Ciebie procedura inicjalizująca USART'a? Jeśli chodzi o odbieranie pojedynczych znaków to tak właśnie działa. Bufor w Atmedze np. Atmega8 jest jedno bajtowy. Najprostszym rozwiązaniem jest stworzenie programowego bufora.
A jak nadejdzie krótsza a potem nic? Dalsze komplikowanie, jakies timeouty - po co? DMA jest wygodne i użyteczne do pewnych celów a do innych nie. Nie przesadzaj. Robi się to właśnie timeoutami i działa całkiem nieźle. DMA odbiera ciągiem (w trybie circular z przerwaniem od połowy i całego transferu), masz też przerwanie okresowe (albo timer programowy)...
Czyli pierwsze co muszę zrobić to odwrócić sygnał REQ? Skoro w Twoim przypadku nie ma opcji w rejestrze UARTu to faktycznie albo sprzętowo odwrócić np. tranzystorem z opornikami czy transoptorem. Można też zrealizować ""programowy inwerter" korzystając z EXTI na jakimś pinie jako wejście (może nawet wręcz na pinie TX) a wyjściem może być inny dowolny...
No tak, to się wywali, bo podniesie na 115200. Jak zacznę komunikację z modułem ESP-01S z prędkością inną niż 115200, to nie idzie się z nim dogadać. Trzeba wystartować z 115200 i obniżać. Niestety moja sekwencja Jeśli serial jest programowy to nic dziwnego, ze nie działa. Mega328PB ma dwa sprzętowe USART.
Zgadzam się z kolega rpal. Zdarza mi się popełniać konstrukcje w których wykorzystuję 2 x UART, najczęściej właśnie na ATmega162. Spokojnie można zrobić oprogramowanie nawet szybkich transmisji (rzędu 460kbps i więcej, zależnie od zastosowanej częstotliwości zegara), bez ryzyka utraty danych. Odbiór robisz na przerwaniach, w procedurze obsługującej...
Oczywiście wszystkie przerwania maja wpływ na programowy UART. Nie wiem co Ci tam przeszkadza. Już chociażby buforowany UART jest na przerwaniach. Kiedy więc ESP jeszcze coś tam dosyła to już może bruździć. Jeśli Ci na tych dosyłanych potem danych nie zależy to możesz, zamiast globalnego Disable Interrupts, wyłączać poszczególne przerwania aż dojdziesz...
To raczej tak nie działa, bo po USART wysyła znaki, albo pojedyncze bity, więc raczej ciężko będzie. A przejściówka emuluje najczęściej port COM. Chociaż jak się bardziej zastanowiłem, to programowa emulacja protokołu może mieć sens. Grunt to pilnować timingów.
Ja nie widzę problemu w izolacji 1WIRE, trzeba użyć 2 szybkich transoptorów (np. 6N137) i 2 linii mikrokontrolera - osobnych do nadawania i odbioru. Można wykorzystać USART, co dodatkowo uprości obsługę magistrali od strony programowej. Oczywiście dodatkowo potrzebna będzie izolowana przetworniczka DC/DC do zasilania czujników i elektroniki za transoptorami....
To może z kompilacją coś nie tak. A w makefile masz wybrany poprawny typ procesora? Tek przykłady które Ci podaliśmy teoretycznie powinny chodzić bez problemu :). Oprócz dodatkowego rejestru PRR0 nic innego nie wpływa na deaktywację SPI. Nie powiedziałeś, czy program Ci się zawiesza w momencie sprawdzania flagi SPIF czy idzie dalej. Może spróbuj tą...
Skoro masz w ukłądzie kwarc 32768 Hz to tykorzystaj go do kalibracji programowej generatora RC, lub prościej do wyliczenia rzeczywistej wartości częstotliwości RC, na podstawie której określasz baudrate USART. A skoro to ma być energooszczędny zegarek to weź XMEGA np. E5, która raz, że może działać z USART bez kwarcu, dwa, ma stabilny generator 1kHz...
[url=http://www.ftdichip.com/Support/Doc... znajdziesz w miarę aktualną dokumentację do tego układu. Na stronie 30. masz schemat podłączenia do dowolnego uC. Nie potrzebujesz żadnych konwerterów napięć, ponieważ wszystko jest na poziomie TTL. Jest możliwość, aby podłączyć atmega8 bezpośrednio do portu USB, ale nie...
Jak np mam kilka innych procedur które zabierają dużo czasu. Np pomiar ds18b20 albo wyświetlanie na LCD a chciałbym je wykonywać co pewien ściśle określony czas. Wariantów masz co niemiara: Chcesz czytac ADC co jakis czas to w timerze wyzwalasz tylok pierwsza konwersje reszte robisz w przerwiniu ADC, anolicznie i2c lub usart. Jak masz procedury, ktore...
Trudno nazwac bledem ciagle naplywajace dane np poprzez USART... W praktyce sprzetowe skasowanie flagi I rozni sie od programowego, sprzetowe nie ma wplywu na kolejke przerwan, programowe uniemozliwia wywolanie przerwania ktore wystapilo w trakcie obslugi poprzedniego przerwania. Bynajmniej takie wnioski moge wyciagnac z mojej praktyki. Co do twojego...
Tu kolega ma chyba na myśli sterownik do urządzenia, które byś zrobił - zakładając, że zrobisz je w oparciu o USB. Tak, dlatego że współcześnie nie ma już game portów w komputerach. Trzeba mieć zewnętrzny interfejs MIDI na USB lub kartę dźwiękową z takim interfejsem. Jak budować od podstaw to od razu urządzenie na USB. Powodem niech będzie choćby latencja....
Spróbowałem z UARTem programowym. Kod wygląda tak: [syntax=c]#include <avr/io.h> #include <util/delay.h> void setUpSerial(); void sendChar(char c); void sendString(char *text); char usart_receiveByte(); int main(void) { /* PC3 (TXD0) as output. */ PORTC.DIRSET = PIN3_bm; /* PC2 (RXD0) as input. */ PORTC.DIRCLR = PIN2_bm; setUpSerial(); while(1)...
programowy usart atmega programowy rozdzielczość programowy
impulsowy potencjometr phobya thermopad karta pamięci xperia
peugeot expert schemat lenovo restartuje zamiast wyłączać
Termet Silver Pro 20 kW - Zawór trójdrożny i koszty Testowanie wentylatora Skoda Octavia 3-pin