Po pierwsze - czy ustawiłeś prawidłowo fusebity, aby procesor pracował na zewnętrznym oscylatorze? Po drugie - w karcie katalogowej jest informacja, że rejestr UBRRH i UCSRR znajdują się pod tym samym adresem, więc instrukcją UCSRC|=_BV(UCSZ1)|_BV(UCSZ0&... wpisujesz tak naprawdę wartość do rejestru UBRRH! Aby wpisać ilość bitów danych...
1. Korzystasz z różnych przerwań ale nie uruchamiasz ich globalnie - sei() 2. Aktywujesz przerwanie od pustego bufora - UDRIE - ale nigdzie nie obsługujesz tego przerwania. 3. Obsługujesz przerwanie od zakończenia nadawania - TXC - ale nigdzie nie aktywujesz tego przerwania. 4. UCSRC - to co uruchomiłeś to transmisja z dwoma bitami stopu. Czy na pewno...
Mam maly problem z komunikacja miedzy at902313 z atmega8. Prubuje wyslac z 2313 dane z predkoscia 1800 do atmegi i nic. Pisze w asm-ie i mam takze problem z dwoma rejestrami w atmega UBBRH i UCSRC. Majat en sam adres i jeden bit ktory decuduje o dostepie do tych rejestrow. W emulatorze nie moge sie osobno dostac do rejestrow. Z gury dziekuje za ewentualn...
setbaud.h je ustala. EDIT. Już wiem. Przy zapisie do UCSRC brakuje zapisu bitu URSEL.
Nie wiem dlaczego czytasz informacje "z drugiej" ręki, zamiast skupić się na dokumentacji ? Mam tu na myśli książki i jakieś poradniki. Wszystko jest tam idealnie opisane. Nie sprawdzałem tego kodu. Jeżeli nie chcesz przerwań i wystarczy Ci tzw. "polling", to jeszcze prościej. Zakładam zegar na 16 MHz. Inicjalizacja USART0 dla 9600 b/s, 8N1, jako interfejs...
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ś.
Oto jeden z kodów który wymodziliśmy: program testing; var received_byte : byte; channel : byte; procedure Recived; org URXCaddr; //Procedura obsługująca odbieranie bajtu begin inc (channel); if UCSRB.FE = 1 then channel := 0; received_byte := UDR; if channel = 2 then PORTA := not received_byte; end; begin UBRRH := $00;...
A mógłbyś to jakoś opisać kodem ? [syntax=c]#define BAUD0 9600 //BaudRate (bps) #define MYUBRR0(F_CPU/16/BAUD0-1) //Przerwanie co 0.1s ISR(TIMER1_COMPA_vect) { uint8_t key; static uint8_t lkey=0; key = (PINC & (1<<3)); //przycisk NPN na PC3 if(!key && lkey) UDR='k'; //wyślik "k" jako znak, że wciśnięto przycisk lkey = key; } //przerwanie...
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...
Ponawiam temat. Bo nie wiem, co może być przyczyną, że nie mogę wpisać nic do rejestru UCSRC. Programuje przez JTAG. I czy to ATmega 16,czy 32 to zawsze UCRSC==0x00 Kod: 90: UCSRC = _BV(URSEL)|_BV(USBS)|_BV... +00000C07: E88E LDI R24,0x8E Load immediate +00000C08: BD80 OUT 0x20,R24 Out to I/O...
Masz błąd w funkcji usart_init(). Brakuje Ci ustawień starszegi bajtu danych UBBRH oraz jednej najważnejszej rzeczy nie ustawiłeś ramki danych tzn bitów stopu, kontroli parzystości oraz wielkości ramki :) Funkcja usart_init() powinna wyglądać mniejwięcej tak: void USART_Init() { /* Ustawianie prędkości*/ UBRRH = (unsigned char)(UART_CONST...
Znalazłem błąd w programie czytając datasheeta jeszcze raz! Wszystko działa! Chodziło o to że brakowało (1 << URSEL) przy wpisywaniu wartości do rejestru UCSRC a ten rejestr dzieli adres z innym i trzeba tą jedynkę wysłać! Dzięki za wszelkie próby pomocy! Pozdrawiam
Mówiąc uboga mialem na mysli to, ze do ATmegi8 czy ATmegi16 dokumentacje sa znacznie bardziej dokladne, np. rejestr UCSRC w ATmedze8 jest dobrze opisany, a do ATmegi48 znlazlem tylko tyle, ze nazywa sie UCSR0C... , ale mniejsza o to. no ale właśnie nie żadna mniejsza o to, tylko zassij sobie pełnego PDF'a gdzie wszystko masz dokładniusieńko opisane....
w tej chwili to programuje troszke po omacku, na podstawie znalezionego w necie kodu. korzystam z ponizszego: #include <avr/io.h> #define CPU_Hz 8000000 // częstotliwość zegara w Hz #define OSC 8 // częstotliwość zegara w MHz #define BAUD 9600 // prędkość transmisji po RS232 #define MYUBRR CPU_Hz/8/BAUD-1 /// **** fukcje dla RS232 **** void UART_init(unsigned...
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(...
Jeśli zapisujesz coś do UCSRC to zawsze bit URSEL musi być ustawiony. Poza tym niepotrzebnie obciążasz procesor obliczaniem zawartości rejestrów UBRRH i UBRRL. Jeśli zapisujesz coś do rejestru to zapisz to jednym rzutem, a nie rozbijasz to na naście linijek. Zapisy typu "UCSRC |= (0<<USBS);" nie mają sensu. Taka operacja nic nie zmienia: 0|0=0...
Czyli co, musze zmienić adres w <io/avr.h>? Nie. Tak ma być. Patrz datasheet. Masz błąd w UCSRC |= (1<<URSEL)|(1<<U... Co tam robi 3? powinno być: UCSRC |= (1<<URSEL)|(1<<U... Albo zapisz od razu cały bajt. W twoim przypadku będzie: UCSRC...
Stworzyłąem sobie urządznie które ma gadać z Pecetem za pośrednictewem RS 232. Napisałem prosty program, zaprogramowałem procka, ale cały czas jest cisza. Sparwdzałem połączenia, poziomy napięć na max 232 - wszytsko się zgadza. Wszystko wskazuje że musi byc coś nie tak z kodem programu. Jest jedna rzecz , która nie daje mi spokoju. Otóż jak symuluje...
Witam, mam problem z połączeniem po USARCIE tych dwóch procesorów. Sprawa wygląda następująco: atmega1284p ma być docelowo masterem, wysyła ramkę i w odpowiedzi dostaje ramkę zwrotną od atmega8. Obsługa ramek nie jest jeszcze napisana, na razie wysyłam 8 bajtów atmegą1284p i jeżeli wszystkie bajty zostają poprawnie odebrane, to atmega8 odsyła mi 11...
Jeśli chodzi o programowanie to sobie poradziłem. Rzeczywiście chodziło o to, że to zaprogramowania potrzebny jest jakiś zewn. kwarc. Mam natomiast roblem z działaniem układu. Ma sie on komunikować z komputerem za pośrednictwem RS232 - ale ciągle jest cisza. Jak sobie sprawdzam działanie programu w AVR studio to podczas inicjowania wszystkich rejestrów...
a co na to symulator?
Witam kod do nadajnika może wyglądać tak: #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> #include <avr/interrupt.h> //set desired baud rate #define BAUDRATE 1200 //calculate UBRR value #define UBRRVAL ((F_CPU/(BAUDRATE*16UL)&... //define receive parameters #define SYNC 0XAA// synchro signal...
A jesteś świadom dzielenia tej samej przestrzeni adresowej UCSRC / UBBRH ? Jak się czyta z UCSRC ? http://www.elektroda.pl/rtvforum/viewtop... - było... ;)
Witam. Mam taki problem. Próbuję skomunikować ze sobą dwa uC. Docelowo będą one skomunikowane po RS485, ale teraz w fazie testów próbuję je połączyć normalnie po UARCie. Skrosowałem TXD i RXD dwóch Atmeg. Wysyłam z Atmega162 znak 0x3A, natomiast na Atmedze32 włącza się przerwanie od odebrania (dioda niezależna od znaku odebranego się zapala ) ale nie...
Ja mam u siebie troche inaczej. Ale najlepiej skorzystać z datasheeta bezczelnie kopiując kod. Po co Ci to L po określeniu taktowania? Piszesz w WinAVR czy czymś innym? Init: #define FOSC 8000000// Clock Speed #define BAUD_GPS 9600 #define MYUBRR_GPS FOSC/16/BAUD_GPS-1 ////////////////////////////////////////... void USART_Init( unsigned...
Najlepszy manual to dokumentacja megi32 dostępna bezpośrednio u atmela na stronie. Tak szybko patrząc, at90s2313 ma rejestry UDR/UCR/USR, ale tam jest prosty UART. Mega32 posiada USART, który posiada więcej rejestrów, które dostępne są poprzez UDR, UCSR void UART_init(void) { // ustaw prędkość transmisji UBRRH = (unsigned char)(UART_CONST...
BłęDne wartości odbieranych bajtów wskazują na błąd szybkości nadawania. Akurat przy FCPU 1 MHz i szybkości 4800 tego błędu być nie powinno, ale AVR mają mało precyzyjny oscylator wewnętrzny, więc nie można tego wykluczyć. Sprawdź na innym egzemplarzu uC. W procedurze inicjującej UART najpierw go włączaszm, a potem ustawiasz tryb pracy - błąd; zamień...
witam, mam problem z odbiornikiem GPS FGPMMOPA4 mianowicie przy pomocy programu #include <avr/io.h> #include <util/delay.h> #include <avr/signal.h> #define FOSC 1000000 #define CZYT 50 #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1 volatile char buf[CZYT],i=0,j; volatile unsigned char flaga=0; //--------------------------------------...
Już sobie poradziłem. Poprawna inicjalizacja usart dla atmega, może się komuś przyda: #define BAUD 1200 #define MYUBRR 11059200/16/BAUD-1 . . . unsigned int ubrr; ubrr = MYUBRR; while (!(UCSRA & (1<<UDRE))); UBRRL = (unsigned char) ubrr; // ustawienie UBRRL UBRRH = (unsigned char)(ubrr >> 8);...
Zmniejszyłem ilość błędów i nie wiem co zrobić z resztą: http://screenshooter.net/6254402/biyuder chodzi tu napewno o odwołanie do [syntax=text]static void USART_Init( unsigned int baud ) { /* Set baud rate */ UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; /* Enable Receiver and Transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN);...
Witam! próbuje przesłać dane z komputera, na atmege i wyświetlić je binarne na LCD. Problem tkwi w tym że wyświetlane dane nie zgadzają się z tym co wysłałem z PC. Używam Atmegi 16 na kwarcu 16 Mhz.Oto kody programów od strony PC i Atmegi: PC using ... namespace RS232 { public partial class Form1 : Form { public Form1() {...
Jak usunąłeś to #define __AVR_ATmega168__ to zdeaktywowałeś w drugim pliku tą część: #if defined (__AVR_ATmega168__) UCSRC |= ucUCSRC; Tu też doklej wszystkie uC tej "rodziny", no i jak używasz UART0 to w tym samym miejscu możesz dodać 328PB lub jako kolejny #elif. Niestety biblioteka jest tak napisana, że jak użyjesz uC nie ujętego w tym miejscu to...
Probuje zrobic uart miedzy mega32 i mega162. 162 ma wysłać jeden znak do 32, a 32 ma go wyswietlic na wyswietlaczu. Niestety zamiast poprawnego znaku na wyswietlaczu pojawiają się jakieś dziwne znaczki i zapełniają caly wyświetlacz ;/ Oto program dla megi32 [syntax=c]#include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h>...
Dondu, Twój skrypt ze strony http://mikrokontrolery.blogspot.com/2011... działa. Na jego podstawie poprawiłem ten mój nieszczęsny i też zaczął działać :) Zmieniłem[syntax=c]UCSRC = (1<<USBS)|(3<<UCSZ0);[/synta... na [syntax=c]UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);[/syntax] oraz...
Wczoraj z kolegą posiedzieliśmy i udało nam sie wychwycić kilka bugów, zarówno sprzętowych jak i softwarowych. Wieczorkiem udało mi sie nawiązać połączenie pomiędzy komputerem a sterownikiem (nie udało sie ustabilizować transmisji, ale przynajmniej od strony sprzętowej zadziałało tak jak trzeba - impulsy elektryczne o właściwych wartościach). Dziś zlokalizowałem...
wiem wiem też zauważyłem ten błąd ale dalej nie działa ;/ Dodano po 3 robie coś takiego Dodano po 1 Próbowałem jeszcze tak sie wbić ale tez nie działa Dodano po 1 PRobuje zrobic teraz tak :/ i dalej nie działa oto co mam dla megi32 [syntax=c]#include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h>...
Witam serdecznie, mam problem z połączeniem atmegi z pc za pośrednictwem przejściówki Prolific, podobno ma działać a nie działa. Czy może ktoś zweryfikować moją inicjację USART i funkcję ślącą? F_CPU to 8MHz prędkość ustawiona na 9600 bodów. W terminalu żadnego znaku, myślałem że pomyliłem TxD z RxD ale próbowałem zamiany i dalej nic masa wspólna z...
Witam wszystkich. Podczas dzisiejszej zabawy z Atmegą32a napotkałem 2 problemy. Jeden, to dziwnie działający UART: Przy takim kodzie: [syntax=c]#include <avr/io.h> #include <util/delay.h> #define PWM_A (1<<PD4) #define PWM_B (1<<PD5) int a = 0; #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((8000000UL / (USART_BAUDRATE *...
Witam. Zrobiłem sobie układzik, który mierzy napięcie i wynik przesyła po RS'ie do kompa. Niestety po zaprogramowaniu nie działał on poprawnie, dlatego postanowiłem sprawdzić komunikację pomiędzy układem a komputerem. Program zmieniłem tak, że uP ciągle wysyła liczbę 15 a terminal powinien mi ją odebrać. Niestety tak się nie dzieje. Oto co dostaję 80...
Oki. Już rozumiem o co chodzi z tym bitem URSEL. Musi być ustawiony gdy wpisujemy do UCSRC. Gdy URSEL=0, to wpisujemy do UBRRH. Dzięki za pomoc Dodano po 1 A na marginesie, też chętnie bym się nauczył jak kompilować program z kilku plików. Możecie polecić jakiś kurs lub tutorial jak to zrobić w AVRStudio??
A oto prosta funkcja (kompiluje się w najnowszym AVRStudio) :D : #include <ATmega8535.h> .include "m8535def.inc" ; Prohibits use of non-implemented instructions (ATmega8535) #define XTAL 11059200 #define USART_BAUD 19200 #define _UBBR(_X,_X_BAUD) ((_X/(16*_X_BAUD))-1... #message "_UBBR =="...
UCSRC = (1<<URSEL)|(1<<U... // z manualna Atmegi zapożyczone:) i działa jako 8b czyli UCSZ0 = 1 oraz UCSZ1 = 1 ;) (3 << UCSZ0) to jest 11 przesunięte o miejsce w rejestrze bitu UCSZ0 Dodano po 8 01 to raczej 7b po mojemu:]
Witam Zaczelem sie bawic transmisja szeregowa miedzy atmega a komptuerem. Mam taki problem, ze jak pisze w asemblerze to wszystko dziala, a jak ten kod przerobie na C to wychodza jakies krzaki, czy ktos moze wie gdzie popelnilem blad program asm: .INCLUDE "m32def.inc" ldi r17, high ((16000000 / (9600 * 16)) - 1) ldi r16, low ((16000000 / (9600 * 16))...
Witam wszystkich. Chciałem napisać program który odbierze znak po rs232 i go odeśle. Kod pochodzi z datasheeta atmegi16. Port w komputerze jest dobrze skonfigurowany. Do komunikacji używam terminala v1.8. Atmega niestety nie odpowiada. #include <avr/io.h> #define F_CPU 8000000L // zegar w Hz #define RS_BAUD 4800 #define RS_UBRR F_CPU / 16 / RS_BAUD...
Witam dopiero uczę się programować mikrokontrolery i wystąpił u mnie następujący błąd: zamierzam wysłać przez uart tablicę play niestety w real terminalu zamiast jej zawartości widzę następujące wyniki: 7EFFD08081F7EF albo BE06038081F7EF dodam że moduł z którym chce się skomunikować (dfplayer mini wysyła prawidłowe komunikaty) a gdy przy tej konfiguracji...
Witajcie Mam problem. Zrobiłem układ który wysyła do wyświetlacza TFT dane za pomocą funkcji opisanej w datascheet Atmegi16. Działa super: void USART_Transmit( unsigned int data ) { while ( !( UCSRA & (1<<UDRE))); UCSRB &= ~(1<<TXB8); if ( data & 0x0100 ) UCSRB |= (1<<TXB8); UDR = data; } zrobiłem też odbiór i tu się zaczynają...
Witam proszę o pomoc po dłuższej przerwie wracam do prckow AVR (ATMEGA 32) Próbuje uruchomić UARTA >> plus terminal na konwerterze po USB. Wyświetlam sobie testowo literę 'Z' a zamiast tego leci mi ")" nawias. Kombinowałem już z wszystkim podmianą kwarcu , zmianą taktowania , sterowników, do przejściówki USB > RS232 (HL340) pod WIn7 Nie wiem...
Witam, Od niedawna jestem szczesliwym posiadaczem zestawu ZL3AVR z Atmega32. Podczas proby uruchomienia komunikacji Atmega <=> PC (za posrednictwem adaptera Prolific Technology, Inc. PL2303 Serial Port). Udaje mi sie wysylac dane (otrzymuje w terminalu komunikat "Witam!"). Natomiast wogole nie dziala mi przerwanie USART_RXC_vect. Czestotliwosc...
W/w procku rejestry UCSRC i UBRRH współdzielą adres, rozróżnia się je poprzez najstarszy bit URSEL. Jak konfiguruje Uart'a: UCSR0A=0x00; UCSR0B=0x10; UCSR0C=0xA6; UBRR0H=0x00; UBRR0L=0x47; a potem symuluje w AVR Studio to on zamiast wpisywać do jednego danego rejestru wpisuje naraz do dwóch, zamiana miejscami wpisywania do rejestrów nie wnosi żadnych...
nie no tarnsmisja działa jeśli chodzi o stronę sprzętu gorzej z oprogramowaniem dla atmegi (sterownika) które też działało i w miarę rozwijania jego możliwości umarła mu komunikacja po rs 232 który z czasem miał być zastąpiony na rs 485 a zmiane konfiguracji rs - a wykonywałem poprzez zmiane wpisów w rejestrach ubrr i ucsrc 'komendy ustawiajĻce...
Witam, Na dwóch ATmegach chciałem zrobić komunikację za pomocą UARTu. Miałoby to działać na zasadzie: jeśli ATmega odbierze string (hasło) np.: "1234" to wykona jakieś zadanie Kod nadajnika działa prawidłowo, potrafię wysłać string (kod w załączniku) Mam problem z kodem odbiornika, kod działa tak że reaguje tylko na znak, nie potrafi odebrać stringa....
Coś mi tu taj nie pasuje UBRRH = (unsigned char)((F_CPU/16UL/baud-1)... UBRRL = (unsigned char)(F_CPU/16UL/baud-1); raczej powinno być tak: UBRRH = (unsigned char)(((F_CPU/(16*ba... UBRRL = (unsigned char)((F_CPU/(16*baud...
Witam próbuje skomunikować dwie atmegi (ATmega32A i ATmega32) po uarcie, ale nie do końca mi to wychodzi. Mianowicie problem wygląda następująco: Posiadam dwa moduły do komunikacji bezprzewodowej [url=http://www.ars.info.pl/produkt/mifa... oparte o ATmege32 oraz płytkę stykową z ATmegą32A. Pojedynczy znak za pośrednictwem [url=http://mikrokontroler.info/bray-ter...
Witam Spróbuj zrobić tak jak jest w nocie nie poprzez zmienne a przez stałe. [syntax=c] #define UART_OSCYL 11059200// Clock Speed #define BAUD 9600 #define MYUBRR UART_OSCYL/16/BAUD-1 void uart_open1(unsigned long baudrate) { UBRRH=(unsigned char) (baudrate>>8); UBRRL=(unsigned char) (baudrate); UCSRB=0b00011000; // UCSRB=0x18; UCSRC=0b10000110; //...
Witam Port mikrokontrolera RS232 z komputerem działa w obie strony, czyli uC wysyła mi ramkę, jeżeli w Hyperterminalu wcisnę przycisk to wywoływane jest przerwanie USART0_RXC. Z telefonem niestety komunikacja jest tylko w jedną stronę czyli uC wysyła, ale nie dostaje odpowiedzi. Wysyłane ramki są prawidłowe, bo wysyłając je z Visual Studio telefon od...
[syntax=c]/* * FreeModbus Libary: AVR Port * Copyright (C) 2006 Christian Walter <wolti(at)sil.at> * - Initial version + ATmega168 support * Modfications Copyright (C) 2006 Tran Minh Hoang: * - ATmega8, ATmega16, ATmega32 support * - RS485 support for DS75176 * * This library is free software; you can redistribute it and/or * modify it under the...
Napisałem najprostsze możliwe funkcje do komunikacji po RS232. void usart_init(void) { UCSRC = _BV(URSEL) | _BV(USBS) | _BV(UCSZ1) | _BV(UCSZ0); UBRRL = 51; UCSRB = _BV(RXEN) | _BV(TXEN); } void wyslij(char dana) { while(bit_is_clear(UCSRA, UDRE)); UDR = dana; } uint8_t odbierz(void) { while(bit_is_clear(UCSRA, RXC)); return UDR; } Niestety nie działa....
zakładam ze masz kwarc 16 Mhz, zmien częstotliowść własnie na taką i zobacz, mnie to pomogło. Dodano po 4 a druga sprawa to procedura inicjalizująca void USART_Init ( unsigned int ubrr) // inicjalizacja UARTU { UBRRH= (unsigned char)(ubrr>>8); UBRRL= (unsigned char)(ubrr); //ustawienie prędkości transmisji...
Podłączyłem nadajnik do ATmegi32 kabelkami kod: #include <avr\io.h> #include <stdio.h> #include <inttypes.h> #include <util/delay.h> #include "rs.h" #include "harddef.h" int main(void) { ////////////////////////////////////////... // Inicjacja portu szeregowego RS_SET_BAUD(DEF_BAUD);...
Wcześniejszy zapis włączał transmisję synchroniczną 6 bitów i ustawiał opadające zbocze zegarowe dla transmisji synchronicznej. Masz na myśli ten zapis: UCSRC = (1<<USBS)|(3<<UCSZ0); a dokladniej: UCSRC = (3<<UCSZ0); To w takim razie, co ustawia UCSRC = (3<<UCPOL0);
Skoro nikt mi nie potwierdził że schemat jest dobrze to ja sam potwierdzę (jest dobrze, przetestowałem na żywo). Atmega16, zewnętrzny rezonator kwarcowy 16MHz. Rzeczywiście max to 1Mbps. Teraz kolejne pytanie. Transmisja asynchroniczna działa bez problemu, natomiast jak chcę przesłać dane wykorzystując transmisje synchroniczną to odbierane są krzaki......
Witam, Chciałem skomunikować ATmege128 z komputerem PC. Korzystając z manuala do tego kontrolera uzyskałem funkcję inicjalizującą: void USART_Init( unsigned int baud ) { /* Set baud rate */ UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; /* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN); /* Set frame...
Witam Próbuję połączyć dwa uC za pomocą komunikacji UART. Attiny ma za zadanie nadanie jednego znaku ASCII natomiast Atmega powinna go odebrać i wyświetlić na wyświetlaczu lcd. Niestety kontrolery nie mogą się dogadać, programy realizujące to zadanie są praktycznie wklejone z not katalogowych Atmela, ale zamieszczam je niżej bo może coś pokręciłem....
#include <avr/io.h> #define F_CPU 16000000L #include <util/delay.h> #include <float.h> #include <inttypes.h> #include <math.h> #include <stdio.h> #define stop1 PORTA|=(0<<PA3); PORTA|=(0<<PA4) #define lewo1 PORTA|=(0<<PA3); PORTA|=(1<<PA4) #define prawo1 PORTA|=(0<<PA4);...
Witam, Chciałbym zwrócić się do was z problemem, z którym walczę już od jakiegoś czasu. Zaprojektowałem sterownik do wytrawiarki, w którym między innymi znajduje się ATMega32 i czujnik temperatury LM32. Gdy zacząłem pisać program i uruchomiłem ADC okazało się że wynik bardzo mocno skacze. Pomyślałem że źle zaprojektowałem płytkę i podłączyłem owy czujnik...
UCSRC i UBRRH to jeden rejestr. Jeśli zapisujesz do niego wartość z zerem na bicie 7 - to zapisujesz UBRRH; jeśli z jedynką - zapisujesz UCSRC. Przykład z katalogu właśnie to ilustruje. Zapisujesz wartość z zerem na b7 - i zapis idzie do UBRRH, następnie zapisujesz wartość zawierającą 1 << URSEL - i zapis idzie do UCSRC. Zwróć uwagę, że obie nazwy...
Mam problem z tranmisja AVR->PC. Uzywam ATmega32-16PU(at)10MHz, zew. krysztal. Fusy ustawione highbyte 0xC9, lowbyte 0xFF. Zasilanie 5V, kowerter poziomow to MAX232N, piny podpiete tak ATMEGA MAX232 input MAX232output PC RS TXD T2IN T2OUT RX ( pin 2) RXD R2OUT R2IN TX (pin3) GND (pin5) Kod programu testowego: #define BAUDRATE 64 // 9600 at 10MHz...
Witam. Mam kod, w którym Atmega ma wysłać na kompa dane dopiero wtedy jak komp wyśle ramkę 0b01111111. Zatrzymanie wystąpi po wysłaniu z kompa 0b00000000 (stan początkowy Atmegi, nic nie wysyła). Komenda 0b1xxxxxxx oznacza odczyt konkretnego urządzenia. Każda przesłana komenda ustawia odpowiednią flagę, która sygnalizuje działanie. Odbiór z kompa (Rx)...
W datashecie 2513K–AVR–07/09 Atmegi 162 jest taki kod: #define FOSC 1843200// Clock Speed #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1 void main( void ) { ... USART_Init ( MYUBRR ); ... } void USART_Init( unsigned int ubrr ) { /* Set baud rate */ UBRRH = (unsigned c?ar)(ubrr>>8);...
Mylisz rejestr z jego mapowaniem do przestrzeni adresowej. To są oczywiście dwa oddzielne rejestry, najstarszy bit określa, który z tych rejestrów jest aktualnie zmapowany do przestrzeni adresowej, czyli do którego z nich zostanie przesłanych pozostałych 7 bitów.
Witam Podjąłem pierwszą próbę skomunikowania mikrokontrolera Atmega16A z PC. Wysyłam z Atmegi znak i chciałbym go odebrać w terminalu. Niestety coś robię nie tak i w terminalu nic się nie pojawia. Proszę o pomoc. Do komunikacji wykorzystuję konwerter UART->RS485(MAX485): https://core-electronics.com.au/ttl-uart... Oraz...
Witam wszystkich, Mam taki układ: ATmega16L taktowana kwarcem 8MHz, do tego podłączony jest układ L9637D do komunikacji z samochodem. Dodatkowo nóżka RXD procesora jest podciągnięta rezystorem 330Ohm do +5V (zasilanie). Bez tego rezystora w ogóle nie udało się połączyć z komputerem samochodu. Okazało się, ze teraz (temp +5C) nie ma komunikacji... sprawdzałem...
Witam, Posiadam moduł http://www.gotronik.pl/www/modul_avr.htm... Procesor ATMEGA16L, kwarc 16MHz Podłączyłem TxD, RxD do 1 i 0 pinu portu D. Program #include <avr/io.h> #include <avr/interrupt.h> #define CPU_Hz 16000000 #define BAUD 9600 #define UBRR CPU_Hz/16/BAUD-1 void UART_init(unsigned int ubrr) { UBRRH = (unsigned...
W putc spróbuj tak: UCSRB = (1<<RXEN)|(1<<TX... UCSRC = (1<<URSEL)|(3<<U... Dodano po 2 źle gadam, nie w putc tylko w init()
Witam, jest to mój pierwszy post więc proszę o wyrozumiałość :) Problem jest następujący - chciałem napisać sobie programik mierzący napięcie(potem bedę mierzył poziom napięcia na akumulatorze) więc zaczełem od napisania programu z ADC w trybie FREE RUN, czyli jak raz go uruchomilem to calyc czas wysyłał wyniki konwersji przez rs232, następnie postanowilem,...
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...
proponuje cos takiego: #include <avr/io.h> #include <avr/delay.h> #include "io.h" void USART_Init( unsigned int baud ) { //ustawienie portu DDRD &= 0xFE ; DDRD |= 0x02 ; PORTD |= 0x03 ; /*set baudrate*/ UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; /*enable receiver and transmitter*/ UCSRB = (1<<RXEN)|(1<<TXEN);...
Odwrotnie już testowłem i oba rejestry się same kopiują. Proszę o jakiś Prosty przykład programu który by sczytywał wszystko z RS i wyświetlał na LCD. W kompilatorku C++ mi się udało ustawić wszystko śmiga a w AVR studio niestety nie działa.
Witam. Bawię się dzisiaj już prawie cały dzień próbując pogodzić moją ATmege32 z Konwerter USB - RS232 TTL nowy, Prolific PL2303HX , niestety kolegami raczej nie zostaną... Dane z mikro-kontrolera są odbierane przez komputer jednak gdy próbuje wysłać coś odwrotnie mega tego nie widzi. Podpoiłem konwerter krosując kable RxD-TxD, TxD-RxD. Dioda od odbioru...
Witam. Chciałem sobie wgrać bootloader z tematu do ATMEGA324P i mam problem. Zmieniłem dane na: // Parametry do modyfikacji przez użytkownika: .INCLUDE "m324Pdef.inc" ; SEGMENT DEKLARACJI .EQU OSC_FREQ= 16000000; częstotliwość pracy w Hz .EQU RS_BAUD= 115200 ; prędkość transmisji dla RS-232 [bps] .EQU TYP = 24 ; typ procesora /*...
witam, napisałem taki oto program, który ma za zadanie zaznajomienie mnie z usartem i późniejsze wykorzystanie. Większość skopiowałem z noty, kompilator nie wykrywa błędów, program sprawdzał mi też kolega który jest lepszy w programowaniu ode mnie. Problem polega na tym, że atmega nie wysyła danych (tego 0) ani nic innego. Czy kod jest na pewno całkowicie...
Poprawiłem tytuł na bardziej zgodny z regulaminem p. 3.1.15. LordBlick Mam problem z ustawianiem czasu i daty na mojej płytce testowej na której umieściłem układ zegara DS1307 na Atmega 16. Nie wiem jak to zrobić w c.proszę o pomoc i przykłady dołączone do działającego programu zegara ale wyświetlającego mi po wgraniu wcześniej zdefiniowany czas i...
Witam mam nastepujacy problem: w swoim projekcie musze skorzystac z interfejsu RS485, zbudowalem odpowiednia " infrastruktore " oraz uzylem dwoch procesorow AT162 i 8. w ramach sprawdzenia czy wszystko gra, napisalem programik gdzie: AT162 sluzy mi za "mastera" i wysyla polecenie do At8 alby zapalil diode oto kod: At162: char *fifosio[]; //wskaznik...
Po kolei inicjalizacja bit U2X w rejestrze UCSRA co by dobrać wstępny dzilenik do kwarca - , potem /* Set baud rate */ UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char)ubrr; /* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TX... /* Set frame format: 8data, 2stop bit */...
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...
Co robisz nie tak? Nie czytasz dokumantacji. Poświęcone temu zagadnieniu jest półtora strony (160 i 161). Przeczytalem od 145 do 172, a takie komentarze świadczą źle o tobie. Nie napisałeś nic mądrego, więc lepiej nic nie pisz...
Witam, o tyle o ile wysyłanie danych z uC do PC poprzez interfejs szeregowy USART działa prawidłowo to już z ich pobieraniem jest spory problem. Postanowiłem napisać prosty program typu "Echo" który pobierze dane z PC i wyśle je z powrotem do PC, co potwierdziło by poprawność działania. Istotne fragmenty programu: [syntax=c] void USART_Init( unsigned...
Mam następujący problem: Zadaniem docelowym jest wysyłanie wiadomości sms przez podłączony do ATmega32 terminal GSM przez RS-232. Problem polega na tym, że modem nie odpowiada na komendy AT wysyłane z ATmegi. PARAMETRY UKłADU: - Terminal Siemens MC55: - Atmega32, zewnętrzny kwarc 8MHz. Komunikacja Terminal GSM -> PC działają poprawnie. Wysyłająć...
witam Zaczynam z atmega128 i na wstępie mam problem z uart avrstudio i asembler problem mam mianowicie z dostępem a raczej z wpisem do rejestrów UBRRH UCSRC z tego do czego doszedłem po paru godzinach to to ze avrstudio pokazuje mi te rejestry jako NA . Dodam ze fusebit jest wyłaczony M103 może ktoś mógł by mi to jakoś objaśnić bo nie czaje jak się...
Cześć, w końcu postanowiłem pobawić się modułem Wifi, który jest prosty w użyciu, jest doskonale udokumentowany i generalnie nie ma najmniejszych problemów z jego uruchomieniem. No cóż... nie. Po kilku godzinach kminienia, czemu nie działa komunikacja z użyciem komend AT dowiedziałem się, że trzeba go odpowiednio zflaszować. Hura, komendy działają,...
Witam, postanowiłem do Atmega 16A podłączyć po module USART następujący moduł: http://electropark.pl/moduly-komunikacji... . Po podłączeniu VCC do 3,3 V oraz GND do masy zapaliła się migająca czerwona diodka, natomiast po skomunikowaniu ze smartfonem czerwona dioda przestała migać tylko cały czas się palić....
Ok, postaram się sprecyzować: W docelowym podejściu wykorzystany uC to ATmega32a. Kod do inicjalizacji interfejsu USART to raczej standard w postaci: http://obrazki.elektroda.pl/6646316500_1... Kodu nie zamieszczam bo przy wyłączonym interfejsie USART właściwie go nie ma. Jest jedynie pętla w aplikacji na PC-cie, która wysyła bajty na...
$crystal = 8000000 $regfile = "M16def.dat" $hwstack = 128 Tu zmieniasz wg wlasnych parametrow '- deklaracja zmiennych dla usart ---------------------------------------- Dim Index As Byte 'kolejny znak w buforze odbioru Dim Odebrano As Bit 'flaga ustawiona po odebraniu znaku Dim Buf(10) As Byte 'bufor wejsciowy - 10bajtow '- konfiguracja...
Witam, od paru dni walczę z postawieniem komunikacji po modbusie RTU, przez RS485 przy pomocy biblioteki freemodbus v1.5. Po wielu próbach i przeglądaniu forum w poszukiwaniu informacji udało mi się poprawnie skompilować i wgrać program, jednak przy próbie skomunikowania się z atmegą (odczytania rejestru o adresie 1000 lub 1001) albo nie odpowiada wogóle...
To: ldir16,(1<<RXCIE0) | (1<<RXEN0) | 1<<TXEN0 Nie powinno być w nawiasie? Nie wiem jaki to kompilator, może ten nie akceptuje tego bez nawiasów. I tutaj: ldir17,0x00 ldir16,USART_Speed ;transmisja 4800 b/s ldir16,0x00 stsUCSR0A,r16 ldir16,(1<<RXCIE0) | (1<<RXEN0) | 1<<TXEN0 stsUCSR0B,r16 ;włączenie odbiornika RS...
Witam, Również mam kłopot z połączeniem ATmega8 z komputerem. Kombinowałem na różne sposoby ale jakoś mi nie wychodzi. Proszę pomoc. Układ mam połączony w/g poniższego schematu. Mikrokontroler zaprogramowałem wg/g poniższego kodu. W komputerze ustawiłem Hyper Terminal : Liczba bitów: 9600 Bity danych: 8 Parzystość: Brak Bit stopu: 2 Sterowanie: Brak...
Witam serdecznie. Piszę program, w którym muszę zliczać przychodzące impulsy z licznika energetycznego do procka. Aby nie zliczać impulsów pochodzących od drgań styków wymyśliłam takie rozwiązanie. Jeśli na INT0 przyjedzie zbocze opadające, włącz licznik T0. Gdy licznik przepełni się- minie 32ms i w tym miejscu będzie poziom niski na pinie, to atmega...
Momentami odnoszę wrażenie, że nie wiesz co piszesz. Do pomiaru długości nie potrzebujesz dodatkowego timera oprócz tego t0. Wystarczy, że będziesz sprawdzał co określony czas, jeśli na wejściu będzie ten sam stan co poprzednio, to będziesz zwiększał pomocniczą zmienną. Jeśli stan się zmieni, to dopiero zapiszesz wartość do np.tablicy, żeby później...
poleceniem config ... Z tego co wiem bascom ma problem z usartem, Gdzie kolega to wyczytał? Jakiego typu problem? W wersji 1.11.8.5 zostało zmienione podejście do U(S)ARTów: - reworked the uarts. each uart is defined by a model number in the dat file model 0: basic uart, with UDR,USR and UCR registers ,ubrr=0-255 model 1 : basic uart with udr and MP...
1. Powinieneś się zdecydować, albo obsługujesz odbiór w przerwaniu, albo w procedurze rec() . Obie metody na raz powodują, że procesor będzie wisiał cały czas w procedurze rec() ( RXC będzie zawsze wyzerowane po wyjściu z przerwania), 2. Następna sprawa - nie używa się już #include <avr/signal.h> , tym bardziej jednocześnie z #include <avr/interrupt.h>...
bascom ucsrc atmega atmega rs232 komunikacja atmega atmega
wymiana turbo pralka mastercook instrukcja obsługa zasilacz anteny televes
technika radiowa technika radiowa
Ekspres Bosch CTES30: Komunikat "Obróć wylot kawy" Jak ominąć nagrzewnicę w Kia Sportage?