sorex86 --> nie przesadzajmy, to nie jest jakaś tajemna i wielka znowu wiedza, to raczej podstawy i dlatego o tym piszę, żeby ktoś skorzystał. A jak już jest ta wiedza, to i czasu nie trzeba tyle poświęcać na odpalanie tak prostej rzeczy jak transmisja RS232 i to bez żadnego kwarca zewnętrznego. Bo jak sam widzisz, tutaj problemem nie jest kwarc.
Piszesz DS1820 a czytasz dokumentację DS18B20, a te czujniki różnią się rozdzielczością. DS1820 ma 0,5 stopnia.
Mega16 będzie działać nawet przy częstot. 20-pare MHz, ale producent nie daje gwarancji, że stabilnie. Domyślam się, że te tabele z UBR są po prostu przedstawione jako uniwersalne dla AVRów, a niektóre z nich mają maks. częstotliwość producenta 20MHz.
Ja właśnie myślę, że nie trafiłeś z prędkością transmisji. Być może wszystko inne jest okej. *) W dokumentacji HC-05 piszą o dwóch prędkościach domyslnych - to jest 9600 i 38400 - w Twoim przypadku ustawiłeś sobie bez skonfigurowania moduł na 19200. Tak BTW - jaki masz kwarc? Z jaką częstotliwością skonfigurowałeś Atmegę? *) Czy na pewno procedura inicjacji...
Build started 6.4.2014 at 00:25:04 avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Proba_10.o -MF dep/Proba_10.o.d -c ../Proba_10.c avr-gcc -mmcu=atmega16 -Wl,-Map=Proba_10.map Proba_10.o -o Proba_10.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature...
Witam forumowiczów, Sytuacja wygląda tak, że z jednostki nadrzędnej słane są ramki danych, Po każdej ramce jest szczelina czasowa tak aby nasza ATmega zdążyła odpowiedzieć, Mamy Atmega16 kwarc 16MHz i transmisje 57600 (w przybliżeniu), Gadamy przez RS485 tak, że między ramkami jeszcze przełączam linie bufora, Steruje równocześnie buforem wejścia i wyjścia...
Jeśli wysylasz male porcje danych i rzadko mozesz zastosowac takie roziwazanie. W inym przypadku proponuje wykorzystac przerwania i zrobic jakis buforek nadawczy/odbiorczy.
Jak czytałeś lub nie :) karta ma sekwencje "startu" , nie pamiętam teraz jaki ma format, jest to jakiś 5bit znak, ja najpierw z czytuje cały bitstream od czytnika i potem funkcją szukam startu jak nie znajdę to "przekręcam" bufor (znaczy ostatni bit staje się pierwszym w strumieniu) i jeszcze raz szukam znaku startu, potem już tylko na podstawie tablicy...
Jeszcze jedna sprawa... Zmienna zliczanie jest typu unsigned char więc ok... Ale jak ją odbierasz...? Jeżeli terminal odbiera wszystko jako ascii to wyskakują krzaki bo traktuje to co wysyłasz jako kody znaków ascii... Np. kropka to 46... Więc albo odbieraj jako liczbę albo przed wysłaniem zamieniaj liczbę na ciąg znaków i tak puszczaj...
UBRRL=0x33; UBRRH=0; //ustawienie prędkości transmisji dla 9600 bps Mnie tam sie to nie podoba za bardzo ;>
Nie wiem czy to aby to ale sprobuj wstawic ';' w petle while(1)
Specyfikacja RS232 nie dopuszcza dwóch urządzeń podłączonych jednocześnie do tego samego portu. Musiałbyś stworzyć specjalny protokół i dostosować odpowiednio układy. Proponowałbym przejść na RS-485/RS-422. Wystarczy podłączyć do USART układ SN75176B lub MAX485 i możesz wykorzystywać do 32 urządzeń. http://obrazki.elektroda.pl/7530139300_1...
Problem leży tu: SIGNAL(USART_RXC_vect) { if(UDR=='$') zapis=1; if((i<14)&&(z... { buf[i]=UDR; i++; } if(i>=14) { k=1; zapis=0; i=0; } } Otóż odczyt z rejestru UDR powoduje jego wyzerowanie a następnie załadowanie następnego odebranego znaku (jeżeli...
Witam, szukam już od dłuższego czasu programu do odbioru i nadawania znaków na atmege16 do WINAVR w języku C, ale wszystko co znajduje to albo nie działa albo widać nie jest dostosowane tylko odbioru (np. stosowane są sbi, a WINAVR tego nie zna). Czy ktoś mógłby skrobnąć kod wzorcowy, nawet dla potomnych, żeby od razu zadziałał na ATMEGA16 z rezonatorem...
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 USARTu: UBRRL=0x33; UBRRH=0; //ustawienie prędkości transmisji dla 9600...
A gdzie konfiguracja DDR dla portu B?
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(...
Problem w tym, że ta prędkość nie jest do uzyskania na tym kwarcu. Dla UBRR = 6 błąd wynosi ponad 7%. Na moje oko prekompilator wyliczy UBRR = 5 (jak zaokrąglimy wynik działania w dół). Dobierz inny kwarc bo będą na pewno problemy z tą prędkością. Sprawdź z inną niższą prędkością czy działa (4800 dla UBRR=12 - 0,2%ERR). A i jeszcze jedno: można ustawić...
Witam. Od dłuższego czasu siedzę nad komunikacją USART synchroniczną pomiędzy ATmega16 i AT90CAN128 i nie potrafię dojść dlaczego nie działa. ATmega16 taktowany jest zewnętrznym kwarcem 3,686400 MHz, a AT90 z wewnętrznego oscylatora RC 8MHz. Docelowo będzie taktowany z pinu OC1A w atmedze, dlatego zdecydowałem się na transmisję synchroniczną. Atmega...
Z tresci HELP "AVR TOOLS USER QUIDE" AvrStudio m.in. o tym problemie: "Device specific issues Notes for ATmega16 The USART's UBRRH and UCSRC registers share the same I/O address. Writing to one of the registers will cause both registers to contain the new value, regardless of the value of URSEL. Reading these registers do not work as described in the...
Witam Od pewnego czasu buduję urządzenie typu Pick&Place w oparciu o mikrokontroler Atmega16 oraz program sterujący PC w C#. Niestety, pomimo że wszystko działa błędy występujące w komunikacji USART uniemożliwiają przeprowadzenie dokładnego sterowania. Przesyłam dane z komputera w pakiecie 8x8 bitów bez żadnych zabezpieczeń. Niestety nie miałem do czynienia...
Witam, Mam następujący problem. Podłączyłem telefon komórkowy siemens M50 do uprocesora atmega16. Usart został ustawiony na prędkość 9600: #define MYUBRR 103 void USART_Init( unsigned int ubrr) { UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char)ubrr; UCSRB = _BV(RXCIE)|_BV(RXEN)|_BV...
Witam, Chciałbym się komunikować z uK za pomocą portu COM (RS232). Komunikacja miałaby przebiegać w stronę PC->ATmega16. Do komunikacji ma służyć Terminal. ATmega na podstawie odebranego znaku ASCII, czyli kodu klawisza klawiatury, ma wykonać jakieś zadanie. Podłączyłem Atmega16 do PC według schematu: http://obrazki.elektroda.net/48_12149859...
0xFF, to brak transmisji, ale 0xC0 świadczy o pewnym przesyle. Było by miło, gdybyś podłączył oscyloskop, bo mogli byśmy wyeliminować błędy transmisji. Połącz RxD z TxD mikrokontrolera i zobacz czy odbierasz to co wysłałeś.
USART atmega16 posiada podwójny buffor odbiorczy ("two Buffer Registers operate as a circular FIFO buffer") oraz pojedynczy rejestr odbiorczy przesuwny ("receiver Shift Register can now act as a third buffer level"). W każdym rejestrze mieści się jeden bajt więc w układzie można przetrzymać 3 odebrane bajty.
spróbuj z AVRLIB http://www.mil.ufl.edu/~chrisarnold/comp... to zestaw bardzo wielu gotowych rozwiązań dla AVR na stronie www.societyofrobots.com masz tutoriale jak odpalic usart przy pomocy AVRLIB
Wyświetlacz jest z allegro sprzedający nic o nim nie wie zamiast 5v podałem 12v i kursor mruga w pierwszym znaku pierwszej lini ale nic na nim nie mogę wyświetlić próbuje sterować przez USART z atmega16 ale nic z tego czy ten układ ADM232 może przeszkadzać jeżeli stany so na poziomie TTL?
1/ jak kolwiek brakuje Ci w kodzie wywolania usart_init() 2/ brakuje tez brakuje zalaczenia przerwan: asm volatile("sei"::... 3/ kolejna sprawa, to ze niewiem, czy zmienna "events" jest z atrybutem volatile - jesli nie, to: while(!events) { }; skompiluje sie do czegos takiego: if(!events) while(1)...
Witam. W kodzie przydałaby się inicjalizacja USART'a; jakieś baudy do transmisji, włączenie USART'a.
Nota katalogowa -> zakładka USART -> Examples of Baud Rate Setting i juz wszystko jasne ;)
program pod mega8, zegar 3.6864MHz; należy zamienić litery >>x<< numerem telefonu. Komunikat: hello hello czy jakoś tak.. właśnie - upewnij się, czy wysłanie komunikatów do PC-ta via max232 idzie bez zakłóceń.. Układ jest prosty, więc to jakieś drobne przeoczenie jest przyczyną problemów.. #define PRINT(x) usart_puts(x) #define...
No dobrze ale czy usart to nie jest tylko komunikacją między komputerem, a uc. Jeżeli nie to jakich komend muszę użyć i jak to podłączyć. Rx jednego uc do tx drugiego uc?
Na początku pliku port.h masz #define __AVR_ATmega168__ i to determinuje jaka zawartość pliku jest dostępna. A tak nie powinno być. Robisz projekt, w opcjach projektu (ATMEL STUDIO lub ECLIPSE) wskazujesz docelowy uC np. Atmega16 i po tym wyborze jest dostępna zawartość dla wybranego uC. Wybierzesz inny uC to wszystko zmienia się pod ten inny. A Ty...
Sorka :) troszke zaspany byłem Tak To ATmega16 a jeśli byś mógł Mi jeszcze powiedziec jak się wysyła ten 9bit ?? W Język C
Spakuj załącznik czymś normalniejszym niż rar. A problem leży zapewne w częstotliwości - 1 MHz to za mało dla większości "bibliotek" OW. Przy tym taktowaniu jedna instrukcja to co najmniej 1 us - czyli długo i zaczyna się wszystko rozjeżdżać. Najpierw więc sprawdź czy to działa dla taktowania 8 MHz. Jeśli używasz 1 MHz to najprościej jest użyć USART...
Nie wystarczy Ci naprzykład ATtiny26 ? Usart ma naperwno a I2C chyba też. A jak nie to ATmega16 ma i jedno i drugie napewno. I cały sprzęt masz gotowy.
WItam, czy możliwe jest zrealizowanie komunikacji między procesorem atmega 8 pracującym z wew oscylatorem 8mhz Jak już ci napisano w przypadku ATMegi nie jest zalecana praca z generatorem RC, potrzebny jest kwarc. Chyba, że... zastosujesz synchroniczny interfejs USART. Wtedy oprócz Tx i Rx masz jeszcze linię CLK. ATMega to całkowicie wspiera, a USART...
Witam ponownie, dzięki za pomoc, udało się program skompilować i nawet wszystko działa. Jednak jedynie na symulatorze, mam problem z przeniesieniem tego na procesor. Po uruchomieniu procesor przesyła jedynie powitanie: "FatFs R0.07d test monitor for AVR\n", natomiast na każdą próbę wysłania komendy odpowiada jedynie echem i nie wykonuje żadnych operacji....
Hej niestety oprócz tego, że bit USART Transmit Complete w UCSRA jest ustawiony, to nic to nie dało. Nadal nic nie otrzymuje na rsie, ściągnąłem sobie jakiś super podgląd rs'a i widzę, że tylko linia txd (w pececie) mi chodzi. pzdr
Ok, uporałem się jakoś z tym projektem, tak że wreszcie działa. W końcu użyłem tego gotowego przykładu: http://mikrokontrolery.blogspot.com/2011... i jakoś "ręcznie" dodałem biblioteki ASF od TWI. Było kilka niezgodności, ale się z tym uporałem. Tak więc program działa i wymienia dane z kompem. Mam...
Witam Mam taki problem. Grzebiąc po archiwach elektrody znalazłem gotowe funkcje do inicjalizacji USART i transmisji danych. Niestety, w HyperTerminalu wyskakują mi "śmieci" zamiast tego, co chciałem przesłać. Domyślam się, że może być problem z dobraniem argumentów przy inicjalizacji. Dodam, że komunikacja odbywa się prawidłowo, gdy piszę w Bascomie,...
temp powinno być volatile. Inaczej się optymalizuje w pętli głównej, spójrz na wygenerowany kod asemblerowy. Dodano po 1 Zarówno "temp" jak i "i" powinny być volatile. i nie musi. Jest wykorzystywane tylko w przerwaniu. Za to powinno być zadeklarowane jako static w funkcji obsługi przerwania. Dzięki za szybką odpowiedź, ale to chyba nie jest problemem......
Domyślne ustawienia modułu GPS: 4800, 1 stop bit, none parity #include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 8000000UL #include <util/delay.h> #include "lcd.h" volatile unsigned char buf[15],i,j; //--------------------------------------...
Niektóre piny portu C są fabrycznie ustawione do obsługi Napisałem, że podpinam go pod wyprowadzenia portu D :D Oto fragment kodu programu Config Portd = Output Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5 Config Lcd = 16 * 2 Cls Czyli nic niesamowitego... powinien ruszyć. Tym bardziej,...
Witam, myslę że nie warto w tym przypadku bawić sie w RC5 - przy implementacji są z tym problemy, do pilotów jest to dobre ale nie do transmisji ciągłej. sugerowałbym użycie sprzetowego USARTa i podłaczenie do wyjścia TX diody nadawczej poprzez tranzystor PNP a do wyjscia generatora PWM na którym będzie przebieg prostokątny 36kHz tranzystora NPN. W...
No dobrze, nie byłem zbyt precyzyjny, mea culpa. SS tak, bo w masterze SS nie jest de facto obsługiwane przez sprzęt. Tak, mogłem o tym napisać. Jeżeli chodzi o USART, to jednak nie masz racji: • TXD – Port D, Bit 1 TXD, Transmit Data (Data output pin for the USART). When the USART Transmitter is enabled, this pin is configured as an output...
Nie wiem dokładnie co robie źle. Ale mam brak komunikacji. Pewnie chodzi tu o te porty, ale ja za bardzo nie wiem jak je zainicjować. Jeszcze raz proszę o wszelkie porady. Pozdrawiam Chyba zapomniałeś wywołać w MAIN funkcji UART_init() . Odpowiednią wartość argumentu, jaką trzeba podać funkcji znajdziesz w Datasheecie ATmegi, w dziale przykładowych...
A co poprzedni kolega ma na myśli mówiąć o klamrach? Poewnie chodziło o { i } :idea: Ok, pobawiłem się malloc-iem, i przyznaję że bez efektów. Mały przykład.. int funkcja() { int stan=0; char *danee = malloc(140*sizeof(char))... memset(danee,'1',140); //memset(danee,'\0',140); //strncat(danee,"blablabla"...
Pozwoliłem sobie uczytelnić kod dla pokazania jak można sobie ułatwić pisanie kodu - zmieniamy w jednym miejscu, a zmiany są uwzględniane w całym kodzie... Daje to bezbolesną możliwość dowolnego przepięcia linii sygnałowych pod inne wyprowadzenia µC przy minimalnych zmianach w kodzie (podobnie jak w językach wyższego poziomu). #include <m16def.inc>...
"Wie ktoś co to może być" - tak, ja spekuluję.. a tak na poważnie: 1/ Używaj predefiniowanych stałych, bo to co napisałeś nie napawa do odpisywania (tylko ciekawość zmusiła mnie do sięgnięcia do dokumentacji) 2/ stan wysoki na pinie TxD jest oznaką poprawną - usart nic nie wysyła, utrzymuje się stan jałowy 3/ RxD jest pinem wejściowym, pullup na nim...
usart atmega16 atmega16 przerwania usart usart atmega16 przerwanie
pikanie radia citroen silnik inverter silnik trójfazowy uszkodzenie
ładowarka milwaukee bateria parkside
Wzmacnianie cichego nagrania w dyktafonie – Audacity, Adobe Podcast, AI, redukcja szumu Xiaomi Redmi Buds 6 Lite - brak sterowników Win 7