ATNEL tech-forum https://forum.atnel.pl/ |
|
UART nie do ruszenia - ATMega88pa-AU https://forum.atnel.pl/topic22491.html |
Strona 1 z 1 |
Autor: | Bartq [ 13 sie 2019, o 18:43 ] |
Tytuł: | Re: UART nie do ruszenia - ATMega88pa-AU |
Starałem się pisać kod właśnie w oparciu o datasheet. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Z tego fragmentu zrozumiałem, że istotny jest tu rejestr UBRR0, który składa sie z L oraz H, do którego wpisujemy nasz ubrr. Ja UBRRu nie liczyłem, pobrałem go w formie dziesiętnej z tabelki na końcu rozdziału. Oraz dla predkości 8MHz oraz 2400 baud = 207 Stąd taką wartość wpisuję do niższego rejestru. Kolejnym krokiem jest chyba ustawienie formatu ramki danych. Jeśli dobrze odczytałem z datasheet to domyslnie jest to 8 bitów danych , bit stopu i brak parzystości. Z takiego ustawienia korzystam, dlatego pominąłem tę część kodu. Mam wrażenie, jakby ten UART miał ochotę ruszyć, ponieważ mimo wszystko stan na linii TxD się podnosi do 5V ale niestety brak tam więcej oznak życia. W przypadku błędnych ustawień miałbym pewnie dużo śmieci ale cokolwiek powinno się pojawić ? |
Autor: | MirkoT [ 13 sie 2019, o 19:49 ] |
Tytuł: | Re: UART nie do ruszenia - ATMega88pa-AU |
Bartq napisał(a): Starałem się pisać kod właśnie w oparciu o datasheet. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. A jak masz ustawione taktowanie w projekcie? I jak popędzasz tą swoją ATMegę? |
Autor: | mirekk36 [ 13 sie 2019, o 20:09 ] |
Tytuł: | Re: UART nie do ruszenia - ATMega88pa-AU |
Patrząc na całość zdecydowanie polecałbym koledze Bartq zacząć od porządnej książki: https://atnel.pl/mikrokontrolery-avr-jezyk-c.html a jeśli chodzi o np takie "herezje" Bartq napisał(a): #define FOSC 1843200 // Clock Speed #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1 to chociaż jak nie ma książki to bloga poczytać np to: https://mirekk36.blogspot.com/2013/01/r ... trick.html |
Autor: | mirekk36 [ 13 sie 2019, o 20:28 ] |
Tytuł: | Re: UART nie do ruszenia - ATMega88pa-AU |
No i co z tego - jak na Blogu pokazuję jak się należy to robić poprawnie dla KAŻDEJ prędkości |
Autor: | Bartq [ 13 sie 2019, o 20:59 ] |
Tytuł: | Re: UART nie do ruszenia - ATMega88pa-AU |
Dziękuję wszystkim za podpowiedzi. Te 'herezje' pochodzą z noty katalogowej uC i w moim kodzie nie są wykorzystywane. Uznałem swój program za tak mały i nie wymagający tak wielkiej dokładności i elastyczności że zdecydowałem się wykorzystać gotowy obliczony UBRR - stąd takie mniej eleganckie rozwiązanie. Trick z makro Oraz bluebooka już znam, bardzo dobra skarbnica wiedzy. Udało mi się natomiast namierzyć problem(y). 1. Omyłkowo jakimś magicznym sposobem w kodzie włączyłem tryb synchroniczny 2. UDR0 musi być ciągle uzupełniane. Myślę że po dokonaniu transmisji rejestr ten jest czyszczony. Czy ktoś jest w stanie to potwierdzić ? Na ten moment program testowy działa, wiem już że sprzętowo wszystko jest w porządku. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |