Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 sie 2019, o 08:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 13 sie 2019, o 17:45 
Offline
Nowy

Dołączył(a): 05 cze 2013
Posty: 9
Pomógł: 0

Cześć, dzień dobry wszystkim :)

Tworzę projekt małego "sterownika" do kamerki cofania w samochodzie.
Założenia są takie, że po włączeniu biegu wstecznego ATMegama zacząć wysyłać poprzez UART kilka komend aby wysunął się fabryczny wyświetlacz Volvo RTI oraz ustawiać tryb wysoki na jednej z nóżek aby zasilić kamerkę.
Dopóki układ był na płytce stykowej i ATMedze16 to wszystko działało w porządku. Zdecydowałem wtedy o przeniesieniu układu na PCB i mniejszą ATMegę 88, która akurat miałem w zapasach.
Większość kodu (nie najpiękniejszego zresztą) działa poprawnie poza tym nieszczęsnym UARTem. Jakiegoś zaćmienia dostałem lub jest jezcze jakaś konfiguracja, o której zapomniałem.
Poniżej także kawałek testowego kodu (również nie rusza) aby sprawdzić czy w ogóle USART w tej ATMedze jest sprawny.
Dodam na koniec, że oscyloskop po podłączeniu do nóżki TxD pokazuje cały czas stan wysoki/idle.
Poniżej także załączam schemat (układ już polutowany na PCB)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2019, o 18:43 
Offline
Nowy

Dołączył(a): 05 cze 2013
Posty: 9
Pomógł: 0

Starałem się pisać kod właśnie w oparciu o datasheet.

Składnia: [ Pobierz ] [ Ukryj ]
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ć ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2019, o 18:50 
Offline
Nowy

Dołączył(a): 05 cze 2013
Posty: 9
Pomógł: 0

Z początku myslałem, że zegar źle ustawiłem, ale gdy zrobiłem testowy program, który w pętli głównej zmieniał mi tylko stan jednego pinu (500ms) to oscyloskop elegancko wskazał 1Hz. Częstotliwosc ustawiona na 8MHz i jest ok.
Poniżej fusebity.

ObrazekObrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2019, o 19:49 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1401
Pomógł: 53

Bartq napisał(a):
Starałem się pisać kod właśnie w oparciu o datasheet.

Składnia: [ Pobierz ] [ Ukryj ]
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ę?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2019, o 20:09 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24710
Lokalizacja: Szczecin
Pomógł: 924

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

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2019, o 20:28 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24710
Lokalizacja: Szczecin
Pomógł: 924

No i co z tego - jak na Blogu pokazuję jak się należy to robić ;) poprawnie dla KAŻDEJ prędkości

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2019, o 20:59 
Offline
Nowy

Dołączył(a): 05 cze 2013
Posty: 9
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO