Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

polaczenie USB-COM ( prolific PL-2303 )<-> atmega8

22 Lis 2007 14:48 5490 10
  • Poziom 11  
    Mam problem z ukladem PL-2303 firmy prolific. Pochodzi ze starego kabla do telefonu nokia z USB po stronie PC oraz rs po stronie wyjscia ( 3 kabelki, GND,rx,tx). Testowalem go robiac null - modem, przy uzyciu programu COM Terminal .NET na windows vista ( vista wgrala drivery z netu dla tego ukladu ). Dzialalo swietnie! Dostawalem echo. Układ emulował port COM. Nastepnie wzialem zasilanie z tego samego portu USB do zasilania atmega8. Kolejny sukces - null - modem dzialal, atmega mrugala dioda ( krotki program testowy ). Uklady nie przeszkadzaly sobie. Problem pojawil sie gdy chcialem przeslac bajty poprzez UART. Podczepilem TX z pl-2303 do RX atmegi8, a RX pl-2303 do TX atemagi8. Nie dostawalem echa. Malo tego, podczas proby zamkniecia portu na PC program COMterminal dostawal zwiechy. Po wyjeciu przelotowki z USB port nadal pozostawal w menadzerze urzadzen. Pomogl tylko rest komputera.

    Code:
    #include <avr/io.h>
    

    #define F_CPU 1000000
    #define USART_BAUDRATE 9600
    #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)

    int main (void)
    {
       char ReceivedByte;

       UCSRB |= (1 << RXEN) | (1 << TXEN);   // Turn on the transmission and reception circuitry
       UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes

       UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
       UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register

       for (;;) // Loop forever
       {
          while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been recieved and is ready to be read from UDR
          ReceivedByte = UDR; // Fetch the recieved byte value into the variable "ByteReceived"

          while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
          UDR = ReceivedByte; // Echo back the received byte back to the computer
       }   
    }


    Ustalielm ze taka beznadziejna sytuacja dzieje sie gdy podczepie TX atmegi8 z RX pl-2303. W sytuacji gdy nadaje PC a atmega8 odbiera program sie nie zawiesza, ale tez atmega8 nie odbiera danych ( ustalielm to piszac program oparty na powyzszym, na bajt 'a','b' atmega miala gasic/zapalac diode.
    1. W czym jest problem ? Atmega8 pracuje na 1MHz, A COM Terminal na 9600 8n1
    2. Czy te uklady dzialaja tylko z jakas okreslona predkoscia ?
    3. Czy to jest normalne ze ten uklad tak dziwnie reaguje ?
  • Sklep HeluKabel
  • Poziom 24  
    Ten układ tak reaguje...

    Miałem taką przejściówkę do programatora AVR i szlak mnie chciał wziąć... więc kupiłem AVR Dragona i moje problemy się skończyły.

    Dokładnie miałem takie objawy jak Ty. Nie przejmowałem się tym jednak. Komunikacja samego RS232 przebiegała mi poprawnie przy takich parametrach jak Ty, ALE chyba było 8n2 do poprawnej komunikacji.

    Więcej nie pomogę ... mogę tylko współczuć :(
  • Sklep HeluKabel
  • Poziom 21  
    Witam. Z mojej trony tylko tyle, iż nie mam problemów z przejściówką na tym samym układzie. Wykorzystuję ją na co dzień z uC AVR. Ustawienia z jakich korzystam to 9600br 8n1 i 19200 8n1.
    To mi wygląda raczej na to, że masz zamienione RX z TX. Masy oczywiście połączone? Oznaczenia często mogą mylić. Jest napisane RX i TX, ale nie jest napisane od której strony. Czy od strony układu, czy czegoś co się do niego podłącza.

    pozdr, JnS
  • Poziom 24  
    Nie jest możliwe pomylenie RxD z TxD ... ja miałem podłączone poprawnie(transmisja czasem działa OK), a mimo tego działy mi się takie rzeczy... może jakiś bubel mam :(
  • Poziom 23  
    Zapytam, może dla niektórych głupio, ale Zastosowałeś układ np MAX232?
    Nigdzie o tym nie wspominasz, pytam dla pewności.
    Ja osobiście nie mam żadnych problemów z taką przejściówką.
    Działa dobrze już od długiego czasu.
    Zdarzały się zwiechy terminala, w momencie kiedy mialem ustawiony Handshake na RTS/CTS, a nie był on używany.
  • Poziom 24  
    Układ ten(jak można przeczytać w dokumentacji) ma wyjścia TTL kolego "Mad Bekon" ;)
  • Poziom 23  
    O Ciup. Mnie się to skojarzyło z przejściówką na RS-232, ale w środku pewnie leży jeszcze jakiś dodatkowy bonus.
    W każdym razie, jak już pisałem, żadnych problemów.

    Gdzie dostać taką wersję z samymi TTL? Kable GSM?
  • Poziom 24  
    Kable gsm ... ja mam od motorolii ;) Ale wybierz dowolny z tym konwerterem na kablu ... otwórz jego obudowę, ściągnij sterowniki od producenta chip'u i jazda ;)
  • Poziom 11  
    Cytat:
    To mi wygląda raczej na to, że masz zamienione RX z TX. Masy oczywiście połączone? Oznaczenia często mogą mylić. Jest napisane RX i TX, ale nie jest napisane od której strony. Czy od strony układu, czy czegoś co się do niego podłącza.


    ..zadzialalo :) niestety na 1MHz i badu rate 9600 slalo mi smieci, po zmianie na bd na 300 chodzilo ladnie. Postanowilem zmienic zegar na zewnetrzny kwarc(7.32XX MHz) z 2 kondensatorami 22pF. Musialem zmienic fusebits. Uzylem polecen na zewnetrzny kwarc do 8MHz, zgodnie ze strona http://www.tkdami.net/~voytek/programy/intro_p.html#mozTocId444236
    Code:
    uisp -dlpt=0x378 -dprog=bsd  --rd_fuses
    
    uisp -dlpt=0x378 -dprog=bsd  --wr_fuse_l=0xef

    Program zwrocil "sukces". Niestety chcialem zaladowac zmodyfikowany program i teraz avrdude nie wkrywa mi polaczenia ( nie moze zainicjowac ).Czytalem ze mozna zablokowac sobie uC bawiac sie fuse bitami:/. uC zmienil czestotliwosc taktowania poniewaz diody mygaja szybciej. Czy mam teraz programowac z podlaczonym kwarcem ( narazie przsadzam uC do podstawki programujacej zlutowanej na pajaka z wtyczka LPT polaczonych 1 m skretki)? uzywam atmega8L
  • Poziom 24  
    Z podłączonym kwarcem....

    Mi też już działa... zawieszał się przez wadliwą wtyczkę do Delphi oraz AVR Studio 4.

    Ustawienia:
    ATmega16
    kwarc 16MHz
    9600
    8b
    parzystość
    2 stopy
    brak kontroli przesyłu

    Śmiga, aż miło... czasem tylko nowa wtyczka do Delphi szaleje i nie może się podłączyć do niego, ale chwile potem jest OK :)
  • Poziom 11  
    ok tereaz dziala wszystko wysmienicie, programuje uC z podczepionym kwarcem. te uklady (pl-2303) sa jednak spoko :)