f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/page_header.php on line 343
And-Tech :: Zobacz temat - USART - krzaki na wyjściu

Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
USART - krzaki na wyjściu
Autor Wiadomość
piopon 

Dołączył: 23 Sty 2011
Posty: 1
Skąd: GdaĂąsk
Wysłany: Sro Maj 18, 2011 6:03 pm   USART - krzaki na wyjściu

Witam wszystkich serdecznie.
Napisałem bardzo prosty programik do testowania działania rs232.
Kod:
#include <avr/io.h>
#include <avr/delay.h>
#include "LCD/lcd44780.h"

#define BAUD 115200
#define _UBRR ((F_CPU/(16*BAUD))-1)

void USART_Transm(unsigned char data);
void USART_Init(unsigned int baud);

int main(void){
    lcd_init();
    lcd_str("RS232 wysyl 'A'");

    USART_Init(_UBRR);
    while (1){
        USART_Transm('A');
        _delay_ms(1000);
    }
}

void USART_Transm(unsigned char data) {
    while (!(UCSRA&(1<<UDRE)));
    UDR=data;
}

void USART_Init(unsigned int baud){
    UBRRH = (unsigned char)(baud>>8);
    UBRRL = (unsigned char)baud;
        /* Enable receiver and transmitter */   
        UCSRB = (1<<RXEN)|(1<<TXEN);
        /* Set frame format: 8data, 1stop bit */   
        UCSRC = (1<<URSEL)|(3<<UCSZ0);
}

myślę, że nie wymaga on komentarza, tym bardziej, że jego fragmenty są wzięte żywcem z noty katalogowej mikroprocesora ATmega32. Nie wykonałem żadnych połączeń, ponieważ EvB 4.3 v4 posiada wewnętrznie połączone piny D0 i D1 (RXD i TXD) z układem RS232. Generalnie wydawać by się mogło, iż wszystko jest w porządku, a jednak na wyjściu zamiast litery A otrzymuję krzak, jak to pokazałem na rysunku. Przedstawiłem także konfigurację PUTTY (port COM2, prędkość i ustawienia transmisji się zgadzają).
Proszę o pomoc - co zrobiłem źle ???

Snap2.png
Plik ściągnięto 16703 raz(y) 8,81 KB

Snap1.png
Plik ściągnięto 16703 raz(y) 26,34 KB

 
 
     
paw3lx

Dołączył: 27 Cze 2011
Posty: 3
Wysłany: Pon Cze 27, 2011 8:56 pm   

Mam do Ciebie pytanie. Od dzisiaj mam płytkę evb, co trzeba zrobić żeby osiągnąć taki efekt, zeby cokolwiek się wyświetlało w terminalu. Podłączasz jakiś kabel pod com? Czy ten com2 jest wirtualny (czyli tak naprawde to usb)? Chciałbym pobawić się trochę tym łączem szeregowym i nie wiem czy w ogóle to przez ten wirtualny port com jest możliwe.
 
     
paw3lx

Dołączył: 27 Cze 2011
Posty: 3
Wysłany: Wto Cze 28, 2011 9:58 am   

Też mam teraz taki sam problem. Na wyjściu w komputerze zawsze dostaję coś takiego:
Kod:
Data received: 00111100 00000000 11111100
Data received: 00111100 00000000 11111100
Data received: 00111100 00000000 11111100
Data received: 00111100 00000000 11111100

bez względu na to jaki znak wysyłam. Czy ktoś wie jaki może być powód tej złej transmisji. Parametry transmisji:
9600, brak bitu parzystości, 1 bit stopu.
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Wto Cze 28, 2011 10:06 am   

Tak, USB jest widziane jako wirtualny port COM i normalnie procujemy z nim po prostu podłączając kabel USB (bo układ ft232rl jest już połączony z procesorem na stałe).
Co do problemu, to jaki kolega ma kod i jakiego terminala używa?
_________________
http://www.piotr94.net21.pl/
 
     
paw3lx

Dołączył: 27 Cze 2011
Posty: 3
Wysłany: Wto Cze 28, 2011 10:14 am   

Kod:
#include <avr/io.h>
#include <avr/delay.h>


#define BAUD 9600
#define _UBRR ((F_CPU/(16*BAUD))-1)

void USART_Transm(unsigned char data);
void USART_Init(unsigned int baud);




int main(void){

   /* lcd_init();
    lcd_str("RS232 wysyl 'A'"); */
   
    USART_Init(_UBRR);
    while (1){
        USART_Transm('3');
        _delay_ms(1000);
    }
}

void USART_Transm(unsigned char data) {
    //PORTD &=~(1<<7);
    while (!(UCSRA&(1<<UDRE)));
    UDR=data;
    //PORTD |=(1<<7);
}

void USART_Init(unsigned int baud){
sei();
    UBRRH = (unsigned char)(baud>>8);
    UBRRL = (unsigned char)baud;
        /* Enable receiver and transmitter */   
        UCSRB = (1<<RXEN)|(1<<TXEN);
        /* Set frame format: 8data, 2stop bit */   
       UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
       
       
}


To jest kod. Terminal: 232Analyzer. Próbowałem już kilku jednak w każdym są jakieś krzaki. Może powinienem użyć jakiegoś innego? Albo zmienić coś w ustawieniach tego wirtualnego portu COM? sam nie wiem..
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Wto Cze 28, 2011 11:00 am   

A F_CPU masz poprawnie ustawione w opcjach projektu?
Spróbuj może takiego obliczania UBRR:
Kod:

#define __UBRR F_CPU/16/UART_BAUD-1

EDIT: Choć wychodzi na to samo...
_________________
http://www.piotr94.net21.pl/
 
     
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
Wysłany: Sob Lut 15, 2014 11:54 am   

piotr94 napisał/a:
Tak, USB jest widziane jako wirtualny port COM i normalnie procujemy z nim po prostu podłączając kabel USB (bo układ ft232rl jest już połączony z procesorem na stałe).

Trochę odświeżę wątek. Na płytce, przynajmniej tej która mam, jest układ MAX 485. Chcąc z niego korzystać mogę rzucić go na drugą linię USART1, ale jak się uprę żeby podłączyć go do USART0 to czy mogę to zrobić po prostu "rozdzielając" TX/RX?
Wiem, że komunizacja po rs232 jest do jednego, jednak nie wykorzystywałbym ft232 do komunikacji w tym wypadku.
Czy takie rozwiązanie jest w ogóle możliwe?
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Sob Lut 15, 2014 12:02 pm   

Jest możliwe o ile nie podłączymy się w tym czasie (czasie komunikacji przez RS485) z układem FT232RL z poziomu komputera - w przeciwnym razie transmisja nie będzie działała a ponadto w skrajnym przypadku możemy uszkodzić jakieś urządzenie.
_________________
http://www.piotr94.net21.pl/
 
     
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
  Wysłany: Sob Lut 15, 2014 9:49 pm   

To pytanie ma po testach które wykonałem. Wysyłam na USART0 na zmianę a i b. Korzystając z wirtualnego COM dostaję to co ma być.
"Rozdzielając" sygnał na dwa porty zakładałem, że dostanę na obu to samo. Okazuje się, że na porcie dodatkowym dostaję O na zmianę z '. Na wirtualnym cały czas jest OK. Podejrzewałem że "rozdzielenie" ma zły wpływ.

Po zmianie w programie na USART1 (czyli w zasadzie zmiana wpisów z 0 na 1) dostaję na dodatkowym porcie O i '.

Realizuję tylko i wyłącznie wysyłanie. Nie powinno tu być konfliktów.
Dodatkowy port w komputerze zrealizowany jest na przejściówce USB na rs232. Po stronie uC nie mam MAX 232, tylko bezpośrednio wrzucam to na port. Z tego co przedstawia mirekk36 na swoim kurcie o ADC (http://www.youtube.com/watch?v=JbLHXkFZwsE) nie ma sensu stosować układu max232 gdyż sygnał USB ma 5V (brak niezgodności napięć).

jakieś sugestie?
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Nie Lut 16, 2014 6:33 pm   

Pokaż jaką masz tą przejściówkę, bo jeśli to USB <> RS232 (wtyk DB9) to spore szanse, że uszkodziłeś takim połączeniem procesor...
O rzetelności tej informacji wolę się nie wypowiadać...
_________________
http://www.piotr94.net21.pl/
 
     
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
Wysłany: Nie Lut 16, 2014 9:08 pm   

piotr94 napisał/a:
Pokaż jaką masz tą przejściówkę, bo jeśli to USB <> RS232 (wtyk DB9) to spore szanse, że uszkodziłeś takim połączeniem procesor...
O rzetelności tej informacji wolę się nie wypowiadać...

Dokładnie tak jak napisałeś to USB <> RS232. W poprzednim wpisie podałem zły link. Podaję prawidłowy https://www.youtube.com/w...63B4626A2145EC. Chodzi o 11:55 minutę.

Nie spodziewałbym się tutaj raczej uszkodzenia procesora. Pomimo moich działań COM wirtualny bardzo ładnie odbiera (chart, string - jak leci)

Przejściówka to Profilic USB-to-Serial Comm Port.

Zastanawiam się bardziej czy problem nie leży po stronie połączenia pinu TX z pinem RX w przejściówce. Ja podłączyłem bezpośrednio TX do RX. Natomiast znalazłem schematy takowych połączeń które pokazują że po stronie wtyczki piny 1,6,4 jak również 8,7 powinny być ze sobą zwarte.
http://hobby.abxyz.bplace...08_schemat2.png
Są oczywiście też takie na których to połączenie jest wykonane tak ja ja to zrealizowałem.

czy ewentualnie jakieś inne sugestie poza uszkodzeniem? :neutral:
 
     
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
Wysłany: Pon Lut 17, 2014 6:05 pm   

Zrobiłem jeszcze test wszystkiego co montuję pomiędzy portem USB a uC (konwerter USB<>RS232, kabele własnej produkcji). Próba ECHA na loopbacku przechodzi bez zająknięcia.
Sprawdziłem również Piny TX,RX USART1 (PD2, PD3) czy nie są przypadkiem do czegoś podłączone jak to ma miejsce dla USART0 (PD0, PD1) - USART1 jest "czysty".
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Pon Lut 17, 2014 7:54 pm   

Niestety rady tego Pana, po tym co usłyszałem odradzam...
Przejściówka USB<>UART ma wyjścia w standardzie TTL, natomiast przejściówki USB<>RS232 (z wtykiem DB9) działają w standardzie +-10/12V (no chyba, że mamy strasznego pecha i trafimy na chińszczyznę)...
_________________
http://www.piotr94.net21.pl/
 
     
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
Wysłany: Pon Lut 17, 2014 9:06 pm   

Postawiłem MAX232. No i teraz jest ładnie.

Potwierdzam, że można sygnał rozdzielić przynajmniej Tx na więcej portów - coś w rodzaju podsłuchu co się dzieje na linii. Nie próbowałbym jednak Rx, bo to pewnie uszkodzić procek :wink:
Dzięki za pomoc i do następnego wątku.
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Pon Lut 17, 2014 10:17 pm   

Pawlo napisał/a:
Postawiłem MAX232. No i teraz jest ładnie.

Widzisz, niestety ten Pan, jakkolwiek ma wiedzę, to czasem wyraża się nieprecyzyjnie i wręcz zakrawa na szarlatana, co prawie kosztowało Cię procesor (bo gwarantuję, że tak MOŻNA uszkodzić uC)

Pawlo napisał/a:
Potwierdzam, że można sygnał rozdzielić przynajmniej Tx na więcej portów - coś w rodzaju podsłuchu co się dzieje na linii. Nie próbowałbym jednak Rx, bo to pewnie uszkodzić procek

To też potwierdzam.
_________________
http://www.piotr94.net21.pl/
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group