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



Teraz jest 26 sty 2025, o 22:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 29 gru 2013, o 21:12 
Offline
Nowy

Dołączył(a): 05 kwi 2013
Posty: 12
Pomógł: 0

Witam,
Mam problem z komunikacją USART <=> PUTTY. Nie widzę w PUTTY'm znaków 'A' które chcę wysłać z ATmega 644P.
Poniżej kod

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


Parametry komunikacyjne 9600,8,n,2 ustawione w Com26, PUTTY i ATmega(w USART_Init)
Ustawienia w Hardward Target: MCU TYPE ATmega644P MCU clock freq. 11059200 czyli przyjazny dla RS232
Program się kompiluje bez błędów i wgrywa do ATmega
Proszę o pomoc w rozwiązaniu problemu
Pozdrawiam

------------------------ [ Dodano po: 4 minutach ]

Przjściówka wbudowana w ATB 1.03



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 21:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Może się tak zapytam
(bez ironii wiem po swoich doświadczeniach :))

czy fizycznie masz podpięty taki kwarc i czy fuse ustawione

W funkcji main() zdefiniowałeś funkcję USART_Init (co jest błędem)
przenieś ciało tej funkcji poza main() zrób tak jak z funkcją USART_Transmit

a w funkcji main tylko ją wywołaj



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 22:39 
Offline
Moderator
Avatar użytkownika

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

Zaba napisał(a):
W funkcji main() zdefiniowałeś funkcję USART_Init (co jest błędem)


To nawet nie powinno się kompilować :(

------------------------ [ Dodano po: 7 minutach ]

niestety w programie jest KUPA błędów - począwszy od czegoś tak kosmicznego:

#include <avr/iom644p.h>

poprzez tą nieszczęsną próbę zdefiniowania funkcji inicjalizacyjnej wewnątrz main() .... rzeczywiście wygląda że się kompiluje bez problemu - i nawet warninga ale to tylko dlatego że po prostu optymalizator WYWALA w diabły tą kosmiczną funkcję w brzuchu main jako ciało obce ;)

a ty nawet nie próbowałeś jej wywołać :( stąd brak błędów w kompilacji

tak się zapytam - posiadasz Bluebooka ?

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

bo jeśli tak? to się dziwię, że coś takiego mogłeś napisać :( a jeśli nie .... to może spróbuj chociaż gdzieś wypożyczyć tę książkę z biblioteki uczelnianej może ? .... warto jednak poznać obsługę USART od podstaw nie wspominając o mega podstawowych zasadach w C ... a ciężko to wszystko ot tak w jednym poście wyjaśnić - skoro zajęło mi to ponad 400 stron w książce

_________________
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: 29 gru 2013, o 22:49 
Offline
Nowy

Dołączył(a): 05 kwi 2013
Posty: 12
Pomógł: 0

Zaba napisał(a):
Może się tak zapytam
(bez ironii wiem po swoich doświadczeniach :))

czy fizycznie masz podpięty taki kwarc i czy fuse ustawione

W funkcji main() zdefiniowałeś funkcję USART_Init (co jest błędem)
przenieś ciało tej funkcji poza main() zrób tak jak z funkcją USART_Transmit

a w funkcji main tylko ją wywołaj


w mkAVR mam wybrane >8MHz
przeniosłem funkcję poza main i wywołuje ją w ten sposób USART_Init(baud); co wywołuje błąd



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 22:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

USART_Init(baud);
baud=???
Brak wartości

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 22:57 
Offline
Nowy

Dołączył(a): 05 kwi 2013
Posty: 12
Pomógł: 0

IUVOit napisał(a):
USART_Init(baud);
baud=???
Brak wartości

baud=9600 tylko gdzie wstawić



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 23:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

USART_Init(9600);

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 23:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Ustawienia w projekcie muszą się zgadzać z ustawieniami w procku
mam na myśli częstotliwość taktowania i wartości Fusebit-ów
to ,że Ty tylko w projekcie wpiszesz wartość taktowania to nie wystarczy
musisz odpowiednio do tego skonfigurować procka.

Druga sprawa
Jeśli do rejestrów UBRR0H i UBRR0L wpiszesz bezpośrednio
wartość baud będzie to totalnym nieporozumieniem
baud trzeba wyliczyć według Datashet-a
w rozdziale o Uart znajdziesz potrzebne info

Zajrzyj na blog Mirka do np. do tego artykułu
http://mirekk36.blogspot.com/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

No i to co radzi Mirek Blue Book z tej książki naprawdę wiele się dowiesz
(mogę to powiedzieć z własnego doświadczenia )


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 23:23 
Offline
Moderator
Avatar użytkownika

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

IUVOit napisał(a):
USART_Init(9600);


proponuję zwrócić uwagę co kolega autor tematu wyprawia :( ... to na pewno mu nie pomoże ....

do tej funkcji trzeba przekazać wartość UBRR ... a nie baud rate .....

------------------------ [ Dodano po: kilkunastu sekundach ]

o kolega wyżej mnie uprzedził ;) i słusznie zresztą

_________________
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: 29 gru 2013, o 23:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Faktycznie, nie zwróciłem uwagi co jest w ciele funkcji! Sorki za złą podpowiedz, zmyliła mnie nazwa zmiennej baud. No tak, na podstawie baud trzeba wyliczyć UBRR i dopiero tą wartość wstawić do rejestrów UBRR. Myślałem, że program jest przekopiowany i chce podstawić wartości.

Zaba napisał(a):
Zajrzyj na blog Mirka do np. do tego artykułu
http://mirekk36.blogspot.com/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

No i to co radzi Mirek Blue Book z tej książki naprawdę wiele się dowiesz
(mogę to powiedzieć z własnego doświadczenia )


Tak jak podpowiada Ci Żaba, w 100% ma rację. Tam masz wszystko w 100% wytłumaczone krok po kroku...

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 17:40 
Offline
Nowy

Dołączył(a): 05 kwi 2013
Posty: 12
Pomógł: 0

Zaba napisał(a):
Ustawienia w projekcie muszą się zgadzać z ustawieniami w procku
mam na myśli częstotliwość taktowania i wartości Fusebit-ów
to ,że Ty tylko w projekcie wpiszesz wartość taktowania to nie wystarczy
musisz odpowiednio do tego skonfigurować procka.

Druga sprawa
Jeśli do rejestrów UBRR0H i UBRR0L wpiszesz bezpośrednio
wartość baud będzie to totalnym nieporozumieniem
baud trzeba wyliczyć według Datashet-a
w rozdziale o Uart znajdziesz potrzebne info

Zajrzyj na blog Mirka do np. do tego artykułu
http://mirekk36.blogspot.com/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

No i to co radzi Mirek Blue Book z tej książki naprawdę wiele się dowiesz
(mogę to powiedzieć z własnego doświadczenia )


Witam ponownie,

Faktycznie

link do http://mirekk36.blogspot.com/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

jak i strona 264 w bluebook okazały się pomocne w rozwiązaniu problemu

dzięki za pomoc i wyrozumiałość :D

zamykam temat



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: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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