Chce skomunikować swój mikrokontroler Atemga8 z komputerem na którym jest Linux. Na razie to dopiero chce sprawdzić czy to działa, a następnie się nauczyć obsługiwać rs232, więc chce cokolwiek wysłać z avr i odczytać na PC. Jednak otrzymuje nie to co powinienem.
Tak właściwe to nie wiem na 100% czy dobrze ten układ inwentera zrobiłem jest tam kilka kondensatorów do max232 wlutowane. Jednak sprawdzałem wielokrotnie ze schematem to powinno być raczej dobrze.
Po pierwsze czy ustawiłeś odpowiednio prędkość ATmegi ?
Po drugie czy odpowiednio skonfigurowałeś parametry transmisji UART ?
Po trzecie nie używaj w pętli głównej for( ;; ) instrukcji putc(); lepiej użyj ją za instrucją uart_putc((unsigned char)c);
Moim skromnym zdaniem niepotrzebnie zawracasz sobie głowę tą biblioteką, co komplikuje tobie poznanie zasad programowania µC. Podstawa to nota katalogowa...
Co do "IDE" to ja osobiście używam kate do edycji i terminala do kompilowania( z udziałem Makefile).
Najprostszy kod - echo:
Kod: text
Zaloguj się, aby zobaczyć kod
BTW. Polecam używanie kwarców z częstotliwościami dopasowanymi do transmisji RS232. W moim przypadku na topie jest 11.0592MHz.
Po długiej przerwie z rs232 wziąłem się do pracy i udało mi się odebrać z atmegi to co oczekiwałem. Oto program:
Kod: C / C++
Zaloguj się, aby zobaczyć kod
Z tym, że nie zawsze otrzymuje to co chce i muszę resetować i wtedy zależy jak się trafi. To pewnie sprawa błędów. Z tego co czytałem to powinienem dobrać odpowiedni kwarc do atmegi. Jaki polecacie? Potrzebuje zrobić przez rs232 pomiar temperatury przy pomocy układu DS18B20, oraz odczyt z enkodera to będzie taki jak są w lego MINDSTORMS.
Z tym, że nie zawsze otrzymuje to co chce i muszę resetować i wtedy zależy jak się trafi. To pewnie sprawa błędów. Z tego co czytałem to powinienem dobrać odpowiedni kwarc do atmegi. Jaki polecacie? Potrzebuje zrobić przez rs232 pomiar temperatury przy pomocy układu DS18B20, oraz odczyt z enkodera to będzie taki jak są w lego MINDSTORMS.
Z tym kwarcem to jakiś "mit" którego temat był poruszany już wielokrotnie na tym forum. Przy prędkości 4800 i Q=1Mhz błąd wynosi 0.2% i jest "osiągalny" w normalnych warunkach użytkowanie uK.
Co to znaczy, że "nie zawsze otrzymuje to co chcę i muszę resetować".
Co do błędów wystarczy zaimplementować sobie na komputerze procedurę obliczania CRC, nie musisz nawet jej implementować w uK ponieważ DS sam ją wyliczy. Wystarczy tylko odebrać wszystkie dane od DS i wysyłać je do komputera. Następnie sprawdzić czy CRC się zgada, jeżeli nie zignorować otrzymane dane i po zabawie. Jednym słowem bajka.
Co do zwierania pinów we wtyczce RS to osobiście robię to tak
Link
PS. Co ma robić jeszcze ten procek? Bo jeżeli nic to Atmega w tym przypadku to lekka przesada.
Pozdrawiam