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...
Witam, w poniższym programie występują niepożądane resety, sprawdzałem już wartość rejestru MCUCSR i tuż po resecie ma wartość 0 czyli jest to reset programowy. zorientowałem się, że źródłem jest wywołanie instrukcji odpowiadającej za przerwanie komparatora analogowego (w oknie disassembly adres 0x00000020), które jest wyłączone... nie wiem co powoduje...
Witam, od kilku dni próbuję wygrać nierówną walkę z programowym pwm i usartem na atmedze8. Wysyłam z nadajnika dane za pomocą USART (sprawdzane wielokrotnie na bank są dobre) do płytki z atmegą i serwomechanizmem. Jeżeli serwo jest sterowane bez ingerencji danych z USART to wszystko działa jak trzeba, w momencie gdy chcę wysłać gotowe dane do płytki...
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....
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....
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.
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.
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(...
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...
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,...
programowy usart atmega programowy rozdzielczość programowy
dodatkowy wzmacniacz anteny prądniczka tacho amica wyłącznik pompy wodnej
vaillant kondensat telewizor manta led5501
Domyślne hasło administratora telefonów Cisco Czerwony trójkąt w Claas Axion 200 KM - przyczyny i rozwiązania