Tablica char str[3]; jest za mala (ma tylko 3 elementy) a Ty odwolujesz sie do 4.
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...
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ę.
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ę...
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.
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.
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....
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).
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?
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ł.
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....
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...
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.
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.
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...
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...
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,...
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.
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...
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.
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...
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ś...
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.
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? :/
ATTiny ma moduł USI, w zależności od konfiguracji działa jako USART, SPI, I2C z lekkim wsparciem programowym.
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...
Co do publikacji w języku polskim to naprawdę będzie cięzko. Co jak co ale musisz sie przekopać przez kilka(naście?) dokumentów po angielsku żeby pojąć podstawy. Osobiście uważam iż dokumentacja NutOSa jest naprawdę przystępnie napisana, do jej lektury Cie zachęcam. Ze strony ethernuta jest do ściągnięcia wiele działających przykładów (od prostych do...
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 moich obliczeń wynika że cos nie tak masz z częstotliwością taktującą AVR-ka. Jeśli założyć, że wartość początkowa timera1 jest 0xd908 i stan niski jest w momencie osiągniecią przez timer1 wartości 0xdafa i trwa on do momentu osiagnięcia 0xFFFF. To mamy że w 1 okresie (no prescaling) stan niski trwa 0x2505 cykli a wysoki 0x1F2 cykli. Daje to na 1...
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.
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.
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.
Nie mówiłem o USART tylko o RS232, a to nie to samo.
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...
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...
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.
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ć...
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.
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%...
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...
1. Jakie prędkości masz po obu stronach? 2. Nie możesz tego zrobić sprzętowo? 3. Programowo robisz odbiór i nadawanie na przerwaniach i przepisujesz z jednego bufora dane do drugiego... 4. Jakie funkcje ma pełnić Atmega? Czy ma to być tylko monitor połączenia czy co?
Pisząc że dowolny podałem pierwszy lepszy bo oczywiście że może być jeden i drugi. Jest w tym racja że npn może wciąż przewodzić gdy nie nadajemy a ty pisałeś nawet o potrzebie oszczędności, ca ja przeoczyłem, przyznaję. Ale nie ma zaraz co drzeć szat i rozpaczać ;) bo co za problem wyłączać nadajnik programowo po nadaniu ramki danych, albo go włączać...
Nie wiem jaki to UPS, ale niektóre UPSy mają regulowane programowo napięcie zadziałania tzn. jeśli napięcie zasilające jest poniżej np.195V to pracuje z baterii, jeśli wzrośnie powyżej przykładowych 195V, to pracuje z sieci. Pytanie: jaki jest próg przełączania twojego UPS i jakie napięcie pod obciążeniem daje twój agragat?
Lepsza opcja to timery programowe https://github.com/adamdunkels/uip/blob/...
Witam. Fuse bit (prescaler /8) istniejący (włączony) fizycznie w mikrokontrolerze chcesz usunąć (wyłączyć) programowo ? Tak to zrozumiałem z Twego postu.
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...
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...
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...
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
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?
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.
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...
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.
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...
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.
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 serdecznie, Mam pewien program sterujący wentylatorem w łazience, który już działa dobrze. Ten program ma pewne parametry, które nim sterują. Niby mogę te parametry wpisać jako stałe do programu i w wypadku ich zmiany zaprogramować mikrokontroler ponownie. Ale ja chciałbym je wpisać do EEPROM i korygować ich wartości przez USART bez konieczności...
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...
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. ;)
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....
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(...
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.
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...
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...
Poogladaj sobie AvrLib. Tam jest ladnie zrobiony dhcp Ewentualnie jeszcze uIP. Gdzie znalezc -> Google :)
Po wykryciu startu kolejne bity są kompletowane w rejestrze szeregowym. Jak ostatni bit zostanie wpisany do rejestru szeregowego to cały bajt jest przepisywany do bufora danych z, którego można go programowo odczytać.
Sprawdż do jakiego portu-pinu podłączyłeś magistralę 1Wire. Jeżeli używasz portu alternatywnego RXD TXD warto wyzerować programowo bity UART Reset UCR.3 Reset UCR.4 Miałem kiedyś podobny problem W rejestrze UCR (UART Control Register) bity 3 i 4 nie są standardowo ustawiane, co oznacza że końcówki TXD i RXD nie są używane przez UART. Nie jest to jednak...
mirekk36 dziękuję za bardzo wyczerpującą odpowiedz! Przy transmisji(elementy na płytce stykowej) przy prędkości transmisji 1200 baudrate i wysyłaniu ramki co 50ms, coś już zaczyna działać, jak już kupiłem te moduły to będę męczył się z częścią programową, może coś z tego uda się wykombinować Pozdrawiam
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ą...
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....
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...
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...
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...
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.
Ja zamierzam złożyć podobny układ jako sterownik elektrycznego boilera + monitor temperatury w piwnicy + sterownik oświetlenia, a wszystko sterowane przez nadrzędny komp, myślę nad wyborem uIP ale za bardzo nie wiem jak to rozwiązać programowo, a na necie nie znalazłem kodów źródłowych dla takiej aplikacji.
Jeśli procedura obsługi przerwanai ma tylko ustawiać znacznik, to znaczy, że nei jest ona w ogóle potrzebna - żeby zostało zgłoszone przerwanie, sprzęt ustawia najpierw jakiś znacznik, i ten znacznik można testować programowo bez potrzeby zgłaszania przerwania. Przerwanie, które tylko ustawia znacznik - to fatalna technika programowania.
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...
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ść. ----------------------------------------...
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ą...
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...
Tak, w każdym procesorze, z wyjątkiem starych '51 silną jedynkę można wymusić ustawiając 1 na wyjściu pinu. Co do USART - pamiętasz, że piny można remapować? Dzięki. Faktycznie o remapowaniu zapomniałem (jeszcze tego nie robiłem dotąd). Ale na razie zostawię, jak jest(programowo), bo raczej to wystarczy po zmianach bloków atomowych.
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.
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.
Ale Kolego, SPRZĘTOWY bufor nadawczy/odbiorczy tego procesora ZAWSZE ma rozmiar 1 bajta. Tego nie da się zmienić - tak jest z punktu sprzętu i koniec. Aby stosować większe bufory musisz zastosować przerwania (RX_vect, UDRE_vect), bufory kołowe i zrealizować teoretycznie ograniczony tylko dostępnym RAM'em bufor programowo. Załączam kompletny przykład...
Witam Czy w mikrokontrolerach ATMEL występuje instrukcja która pozwala na realizacje krosowania wejśc-wyjść bez udziału programu, przerwań. Chodzi mi o to że chcę np. aby linie PA0 - PA1 wewnętrznie były połączone. To co wchodzi na PA0 żeby wychodziło na PA1. Programowa obsługa tych wejść nie wchodzi w rachube z powodu obsługi przerwań od USART i braku...
Z tym że kolega w xmedze wykorzystywał zapewne sprzętowy USART a z tego co zrozumiałem kolega "jaskol" zrobił to programowo a to trochę inny poziom abstrakcji moim zdaniem :) Oj nie, to akurat tez sprzetowo. UART sprzetowy nadzwyczajnie dobrze dzialal ;) Za to obrazilem sie kiedys na I2C, bo nie dzialal poprawnie, pozniej znalazlem errate, ale niesmak...
dla Fzeg = 8MHz i 9600b/s UBRR = 51 . sprawdź czy tyle Ci wylicza. Nie wiem czy dobrze odczytuje to wartość UBRR, ale zrobiłem to w ten sposób: PORTB=MYUBRR; Następnie przeliczam sobie wartość z binarnych na dziesiętne. Problem w tym ze wychodzą jakieś głupoty bo UBRR=98 z czego wynikałoby, że proc nie ma 8MHZ tylko jakieś nietypowe 15 z hakiem jeśli...
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...
Warto jednak pamiętać, że w cenie NM7010A można zmontować prosty system z ATmega128 i RTL8019. Programowy stos jest trochę kłopotliwy, ale można przecież zastosować gotowe biblioteki np. uIP. Pozatym uważam, że nikt poważny nie będzie używał Bascoma do programowania aplikacji sieciowych...
AVE... Nie obejdzie się bez jednego op-ampa, dwóch tranzystorów, jednej diody i jednego rezystora. Myślałem o użyciu tanich transformatorków LT-44. Ponieważ uzwojenie wtórne jest w nich dzielone, można wybrać przekładnię za pomocą jednej zworki zależnie od potrzeb sieci. Wtedy starczy jedna para ze skrętki ethernetowej, będzie to zbalansowane i galwanicznie...
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...
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...
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...
Dać się da, ale jeżeli ma być sprawdzane CRC to i tak trzeba będzie to robić programowo (CRC można liczyć sprzętowym modułem ale i tak trzeba programowo wyszukiwać początek ramki i wstawiać to do modułu liczącego CRC). Więc DMA pomoże jedynie częściowo. Najprościej było dy dane puścić po CANie, Tam jest całkowicie sprzętowe nadawanie i odbiór wraz z...
nie działa tak jak zakładasz. To się wykona raz po czym procesor wejdzie w martwą pętlę. Zgadza się, u siebie mam oczywiście poprawnie tylko tutaj zapomniałem umieścić pętli while(1), już poprawiłem w pierwszym poście. Druga sprawa - jeśli odbierasz śmieci to znaczy, że masz źle ustawione baudrate. Jak taktujesz MCU? Baudrate jest raczej ok bo tak...
Zadziałało w ten sposób: zassałem z podanej przez Ciebie strony wsady .hex (dla wersji z AVRDUDE - dla tej drugiej nie chciało działać), zaprogramowałem nim Atmegę90. Atmel Studio 6,2 zobaczył programator AVR ISP MKII ale wciąż nie chciał zobaczyć Xmegi po PDI. Otworzyłem poprzednią wersję AS i w niej udało się wyczyścić zawartość Xmega po PDI. Teraz...
naprawić drukarkę programowo przerwa usart usart wskaźnik
oring filtr schemat silnik delphi zasilacz złącze 20pin 24pin
ekspres naprawa żarówka szeregowo
Zwrotnica 3-drożna Scan-Speak 18W/4531G01, 12MU/8731T00, D3004/660000 – wartości elementów LR2 Kod EEC 8385 w Scania - Problemy z SCR i NOx