ATMEGA64 i konwerter USB<->UART

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Skrzydlaty
Użytkownik
Posty: 126
Rejestracja: 23 wrz 2007, 21:08
Lokalizacja: Krak

ATMEGA64 i konwerter USB<->UART

Post autor: Skrzydlaty » 03 gru 2012, 18:46

Witam
Od niedawna jestem posiadaczem konwertera USB<->UART a mianowicie ZL1USB_A
Link
Nota

Jeśli dobrze wyczytałem to wykorzystuję dwa piny TxD oraz RxD.
Dla sprawdzenia połączyłem TxD z RxD i tutaj zaczynają się pierwsze problemy a mianowicie
teoretycznie powinienem w terminalu dostawać to co wystukam na klawiaturze. Połowicznie to wychodzi tzn. w HyperTerminalu - nie działa. W programie (przykładowym) ze strony FTDI - działa - dostaje w okienku to co pisze. I tu moje pierwsze pytanie - dlaczego?

Druga sprawa - brak komunikacji z mikroprocesorem, próbowałem wysyłać i odbierać coś, jak nie wychodziło to tylko nadawać z procka ale w terminalu nic nie dostaje. Kompletnie nic. Oczywiście prędkości transmisji takie same, jeśli chodzi o kwarc to używam 16MHz. Nie działa zarówno przy 2400 bodów jak i 9600 ani na żadnych innych. Sprawdziłem prowizorycznym "oscyloskopem" - na wyjściu TxD coś tam wychodzi. W czym moze być problem?
Przykładowy program jakiego ostatnio używałem (dodam że próbowałem wiele innych programów, zarówno z helpa Bascoma jak i z neta- żaden nie działał):

Kod: Zaznacz cały

$regfile = "m64def.dat"
'$regfile = "m8535.dat"
$crystal = 16000000
$baud = 9600

$lib "glcdKS108.lib"
$include "font8x8.font"



Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portb , Ce = 6 , Ce2 = 7 , Cd = 5 , Rd = 4 , Reset = 2 , Enable = 3 , Mode = 8
Setfont Font8x8
Enable Interrupts
'  Config Portd.2 = Input
'  Config Portd.3 = Output
Cls

'Config Com2 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

'Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Config Serialout = Buffered , Size = 254


Config Porta.7 = Output

Open "coma.7:9600,8,N,1,INVERTED" For Output As #1

Print #1 , "Start"

Do

Print "dddddd"

Cls
Lcdat 1 , 1 , "aaa"
Waitms 100

Loop
W zaremowanych linijkach można zobaczyć kilka ostatnich "prób". Co może być nie tak? Pomóżcie bo już od kilku dni nad tym siedzę i nic :sad:

miro39
-
Posty: 6
Rejestracja: 10 mar 2010, 20:56
Lokalizacja: Filipowice

Post autor: miro39 » 03 gru 2012, 21:09

Witam,
Nie posiadam co prawda tego konwertera ale po zwarciu linii RxD z TxD terminal musi odebrać to co zostało wysłane. Nie ma innej opcji, w końcu zostało wykonane zapętlenie informacji. Jeżeli to nie działa to nie ma prawa działać transmisja z procesorem. Przede wszystkim sprawdź czy aby na pewno w terminalu ustawiony jest właściwy numer portu, do którego podłączony jest konwerter.
Natomiast co do tego "coś tam" wychodzącego z procesora, to wypadało by sprawdzić co to jest, bo nie koniecznie musi być to co powinno :wink:

Skrzydlaty
Użytkownik
Posty: 126
Rejestracja: 23 wrz 2007, 21:08
Lokalizacja: Krak

Post autor: Skrzydlaty » 03 gru 2012, 22:49

Bądźmy logiczni - skoro pseudooscyloskop pokazuje że coś jest wysyłane to tak jest, skoro przynajmniej jeden terminal odbiera to co nadaje to znaczy że jest wysyłane to co trzeba. Pytanie tylko dlaczego drugi terminal nie reaguje. To mnie mniej interesuje skoro przynajmniej jeden, ten ważniejszy dla mnie działa. Można to wyjaśnić tym, że to on jest dedykowany do tej przejściówki. Swoją drogą w tym drugim port jest dobrze ustawiony.
Problemem jest procesor który tak jakby nic nie nadawał... może ustawienie końcówki portu robię w niewłaściwy sposób, może zapomniałem włączyć jakiegoś przerwania? Jak użyć sprzętowego UART'a we właściwy sposób? Zawsze jak go konfiguruje to właściwa dla niego końcówka staje się odpowiednio skonfigurowanym wyjściem?

miro39
-
Posty: 6
Rejestracja: 10 mar 2010, 20:56
Lokalizacja: Filipowice

Post autor: miro39 » 06 gru 2012, 16:21

Jak wcześniej pisałem nie posiadam aktualnie tej przejściówki ale kiedyś jej używałem i jest to bardzo dobry układ, nie sprawiający żadnych problemów. Jeszcze raz powiem, że zwarcie linii Rx|D z TxD musi dać w efekcie powrót do terminala wysłanej informacji. NIE MA ZNACZENIA co to za terminal: Hiper Terminal, Br@y, czy napisany przez kogokolwiek, jakikolwiek program sterujący po RS232. Nie ma czegoś takiego jak program dedykowany temu konkretnemu układowi. Jeśli brak tego efektu to nie ma co zawracać sobie głowy programem dla uC. Od programu terminalowego i przejściówki wymagane jest oczywiście aby pracowały na tym samym porcie com. Natomiast gdy podłączymy układ z uC konieczne jest jeszcze ustawienie takich samych prędkości transmisji i pozostałych parametrów tak, jak to już kolega wcześniej zrobił.

Skrzydlaty
Użytkownik
Posty: 126
Rejestracja: 23 wrz 2007, 21:08
Lokalizacja: Krak

Post autor: Skrzydlaty » 07 gru 2012, 17:36

To jak wyjaśnisz to że w jednym terminalu działa a w innym nie? To jest ciekawe własnie...

miro39
-
Posty: 6
Rejestracja: 10 mar 2010, 20:56
Lokalizacja: Filipowice

Post autor: miro39 » 08 gru 2012, 20:41

Jest to ciekawe ale przypuszczam że jest to tylko kwestia odpowiednich ustawień. Jak już mówiłem używałem tej przejściówki i działała ona bez jakich kolwiek problemów z różnymi terminalami w tym też pod bascomem. Z resztą na codzień używam przejścówki własnej roboty na FT232RL i z własnymi programami na PC i działa to wszystko bardzo dobrze. Zresztą tak na logikę jaki by to miało sęs gdyby trzeba było stosować jakieś dedykowane oprogramowanie od producęta układu, a nie można było stosować innych programów.
A tak na marginesie mam nadzieję, że kolega pamiętał o skrzyżowaniu linii sygnałowych i o połączeniu mas obu układów.

Awatar użytkownika
Pikczu
Użytkownik
Posty: 755
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 09 gru 2012, 21:30

Jest duże prawdopodobieństwo że "oryginalny" dedykowany terminal zajmuje port szeregowy i trzyma go otwartego cały czas wtedy inny soft już go nie może otworzyć, może to być błąd sterowników

miro39
-
Posty: 6
Rejestracja: 10 mar 2010, 20:56
Lokalizacja: Filipowice

Post autor: miro39 » 10 gru 2012, 16:50

Możliwe ale to łatwo sprawdzić. Wystarczy tylko w drugim terminalu spróbować otworzyć ten sam port - jeśli się nie uda to to jest to. ale wątpię żeby to była przyczyna bo zamknięcie tego programu powinno zwolnić pot. Można też spróbować przeinstalować sterowniki.
Ja bym jeszcze sprawdził czy ten program nie wykrywa przypadkiem automatycznie portu pod jakim zainstalował się układ, a inny terminal może wymagać podania go ręcznie o czym mogło się zapomnieć (zdaża się czasem). A tak wogóle to co to za dedykowany program? Może jakiś link?

Awatar użytkownika
Pikczu
Użytkownik
Posty: 755
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 11 gru 2012, 23:56

Rób co chcesz my podajemy ci tylko kroki które podjęli byśmy w takiej sytuacji.
Sprawdź na liście urządzeń jako który com port jest zainstalowany i jaką ma prędkość transmisji.
Wróć do korzeni zacznij od testowania na zwartym TX z RX i jeszcze połacz razem CTS i RTS

ODPOWIEDZ