Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Wielki Problem z komunikacją UART

mistrzupawel
-
-
Posty:1
Rejestracja:29 lis 2003, o 19:06
Wielki Problem z komunikacją UART

Postautor: mistrzupawel » 29 lis 2003, o 19:07

Witam wszystkich.
Mam następujące pytanie:
Połączyłem dwa uP 89C2051 i 89C4051 następująco TxD jednego z RxD drugiego.
Właczam Bascoma 8051 2.0.11.0 jednego programuje żeby wysyłał drugiego odbierał.
Używałem różnych poleceń print , printbin, printhex; a do odbioru inkey, waitkey,inputbin.
Żadnych efektów.
Owszem kiedy wysyłam np.100 na LCD wyświelją się różne rzeczy począwszy od 48 ,56 ,108 a na 254 skończywszy. Czy ktoś miał podobne problemy, lub posiada jakieś rozwiązania w sprawie komunikacji pomiędzy takimi dwoma uP. Chodzi mi o przesłanie około 200 bajtów po 2, co 10 ms.
Kwarc to 11,0592 Mhz
Baud rate 4800

Nie mam pojęcia gdzie leży błąd. Jestem otwarty na wszelkie pomysłu i propozycje.
Zamieszczam jeszcze przykładowe programy które próbowałem.

Nadajnik:
1
Do
Printbin 100
Wait 2
Printbin 100;
Loop
2
do
print 100
wait 1
loop
odbiornik:
1
Config Lcdpin = Pin , Db4 = P1.2 , Db5 = P1.3 , Db6 = P1.4 , Db7 = P1.5 , E = P1.6 , Rs = P1.7
Config Lcd = 16 * 4
Cls
Cursor Off
Cls
Dim I As Byte
Do
I = Val(i)
Lcd I
Inputbin I
Cls
Loop
2
Config Lcdpin = Pin , Db4 = P1.2 , Db5 = P1.3 , Db6 = P1.4 , Db7 = P1.5 , E = P1.6 , Rs = P1.7
Config Lcd = 16 * 4
Cls
Cursor Off
Cls
dim I as byte
do
lcd I
I = waitkey()
cls
loop i wiele, wiele, wiele innych

Zibi
-
-
Posty:24
Rejestracja:6 lip 2003, o 10:07

Postautor: Zibi » 6 gru 2003, o 08:30

Z tego co widzę wszystko masz źle. Ja też z tym się męczę. Rzuciłem temat, ale Wielcy tego Forum zachowują się jak łaskawcy. Poczytaj sobie
o przerwaniach i przeanalizuj poniższy przykład

'$regfile = XXXXX
'$crystal = XXXX
On Serial Isr_serial
Enable Serial
Enable Interrupts
Dim Serbuffull As Bit , Ser_string As String * 10 , Serbufcount As Byte ,
Ser_char As Byte

Serbufcount = 0
Serbuffull = 0
Ser_string = ""

Main:
If Serbuffull = 1 Then
Disable Serial 'Stop interrupts for printing.
Set Scon.1
Print Ser_string
Reset Serbuffull
Serbufcount = 0
Ser_string = ""
Enable Serial
End If
Goto Main

Isr_serial: 'RX or TX interrupt received.
If Scon.1 = 0 Then 'Scon.1 = TX interrupt.
Goto Chk_ri 'if TX int. flag is 0 goto Rxint.
End If
Reset Scon.1 'else reset TX int. flag.
Goto Ret_ser 'and exit routine.
Chk_ri:
If Scon.0 = 0 Then Goto Ret_ser 'if RX int. flag is 0 exit routine.
Reset Scon.0 'else reset RX int. flag.
Ser_char = Sbuf 'get character from serial buffer.
Ser_string = Ser_string + Chr(ser_char)
Incr Serbufcount 'Character counter.
If Serbufcount = 10 Then
Set Serbuffull 'Indicate Buffer Is Full.
Ser_string = Ser_string + Chr(0)
End If
Ret_ser:
Return

Powodzenia

W.K
-
-
Posty:24
Rejestracja:25 gru 2003, o 01:43

Postautor: W.K » 28 gru 2003, o 00:39

Nie narzekajcie na Wielkich Tego Forurum tylko napiszcie dokładnie z czym macie problem bo nie wiem o co wam chodzi!Z transmisją poRS232?

Zibi
-
-
Posty:24
Rejestracja:6 lip 2003, o 10:07

Komunikacja

Postautor: Zibi » 12 sty 2004, o 18:41

Zobacz w avt.ep.bascom - komunikacja między atmelkami

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 47 gości