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



Teraz jest 14 mar 2026, o 06:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 26 gru 2014, o 00:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 gru 2013
Posty: 366
Lokalizacja: Wałbrzych
Pomógł: 7

Witam wzorując się bluebookiem napisałem sobie prostą funkcję do wysyłania bajtu po rs232 problem z tym że wysyłane są tylko znaki 00 w puty nic nie przychodzi. Te znaki widać w terminalu terminate 3.1
Poniżej kody plików main.c uart.c uart.h

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


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



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

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 01:06 
Offline
Moderator
Avatar użytkownika

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

driver0207 napisał(a):
Witam wzorując się bluebookiem napisałem sobie prostą funkcję do wysyłania bajtu po rs232

Uwierz, że nie zrobiłeś zgodnie z Bluebookiem ... na 100% w książce nie ma czegoś takiego:

uart_init(9600);

to jest twój pierwszy podstawowy błąd ....

poczytaj też to:

http://mirekk36.blogspot.com/2013/01/rs ... trick.html

jako uzupełnienie do tego tematu

_________________
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: 26 gru 2014, o 01:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2012
Posty: 238
Pomógł: 5

Oraz upewnij nas że połączenia sprzętowo masz prawidłowo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 01:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 gru 2013
Posty: 366
Lokalizacja: Wałbrzych
Pomógł: 7

Połączenie sprzętowe jest ok .
Programuje w bascomie i gdy wgram sobie podstawowy program na wysyłanie stringu to nie ma problemu.
Poprostu uczę się w c bo bascoma mam już dość.

------------------------ [ Dodano po: 13 minutach ]

Ok .Już wszystko gra:)
Po prostu zapomniałem o przeliczeniu .
Dziękuję bardzo:)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 12:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 gru 2013
Posty: 366
Lokalizacja: Wałbrzych
Pomógł: 7

Mam takie pytanie jeszcze w jaki sposób są wywoływane przerwania USART_RX_vect oraz USART_TX_vect bo nie bardzo rozumiem. Wiem że przerwania mogą być wewnętrzne i zewnętrzne wywoływane .
Wewnętrzne wywoływane przez licznik, timer.
Zewnętrzne przez pin procesora.
A tej nazwy przerwania nie rozumiem.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 12:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2013
Posty: 288
Ostrzeżenia: -2
Pomógł: 23

A nie czasem USART_TXC_vect czyli przerwanie od wyslania ramki danych.
Zgłoszone po jej wysłaniu.

Za to przerwanie odpowiada modul UART



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 12:57 
Offline
Moderator
Avatar użytkownika

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

RX następuje wtedy gdy moduł sprzętowej obsługi RS232 odbierze bajt

do wysyłania masz DWA różne przerwania

JEDNO występuje gdy bufor nadawczy jest pusty
DRUGIE występuje gdy cały bajt został wysłany

(wszystkie te trzy przerwania to przerwania wewnętrzne ponieważ wywoływane są przez wbudowany moduł sprzętowej obsługi UART)

_________________
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: 26 gru 2014, o 13:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 gru 2013
Posty: 366
Lokalizacja: Wałbrzych
Pomógł: 7

Teraz już rozumiem .

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 15:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 gru 2013
Posty: 366
Lokalizacja: Wałbrzych
Pomógł: 7

Mam jeszcze pytanko.


Mamy funkcję uart_getc która odbiera znak z portu i zwraca nam znak w formie kodu ascii
Chciał bym napisać funkcję która odbiera znaki zamienia je na znaki tekstowe(litery) ,szereguje i zwraca nam jako zmienną tekstową do puki nie odbierze cr , lf .
Czyli wysyłają do uP napis "TEST CR+LF" otrzymujemy znaki kolejno 0x54 0x45 0x53 0x54 0x0d 0x0a a w zmiennej tekstowej otrzymujemy napis TEST

Nie wiem jak to można by było zrobić.
Mam jeszcze troszeczkę nawyki z bascoma i ciężko mi się jest przestawić na inny sposób myślenia

_________________
sig off ;(



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

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