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ę

problem z odbiorem RS232

NORD
problem z odbiorem RS232

Postautor: NORD » 14 wrz 2003, o 13:39

Witam.

Siedze od dwoch dni nad odbiorem danych przez At89C4051 po RS232 i nie moge sobie za cholere z tym poradzic.

Przyblize moze moj problem.
Wysylam do urzadznia ramke danych

$crystal = 14745600
$baud = 19200
Config Sda = P3.5
Config Scl = P3.7
Declare Sub Write(adres As Byte , Value As Byte)
Dim Adres As Byte
Dim Value As Byte
Dim Tx(25) as byte
Dim Licznik As Byte
On Serial Zapisz
Enable Serial
Enable Interrupts

Set P3.3
Reset P1.5
Adres = 0
Licznik = 0

Do
If P3.3 = 0 Then
Printhex &H02
Printhex &H0F
Printhex &H68
Printhex &H01
Printhex &H85
End If
Loop


Zapisz:
If Scon.0 = 1 Then
Reset Scon.0
Value = Sbuf
Tx(licznik) = Value
incr Licznik
If Licznik = 26 Then
Licznik = 0
For Adres = 0 To 25
Call Write Adres , Tx(adres)
Next Adres
End If
End If

If Scon.1 = 1 Then
Reset Scon.1
End If
Return


Sub Write(adres As Byte , Value As Byte)
Set P1.5
I2cstart
I2cwbyte 160
I2cwbyte Adres
I2cwbyte Value
I2cstop
Waitms 10
Reset P1.5
End Sub



No wiec moj problem jest nastepujacy:
Po wyslaniu ramki danych do urzadzenia ( to akurat przebiega bez problemu), urzadzonko odpowiada mi ramka zawirajaca 58 bajtow i tutaj polega problem!!!!!. Musze gdzies przechowywac te wszystkie odebrane dane a biarac pod uwage skromniutki RAM w AT89C4051 nie zmiesci sie tam te 58 bajtow, wiec pozostaje tylko zapis do eeproma ( tak mi sie przynajmniej wydaje). Ale OK. Program w takiej formie jak pozyzej zapisuje do eepromu 25 pierwszych odebranych bajtow, i mie mam pojecia jak zapisac reszte a malo tego po wystapieniu przetwania z seriala nie chce mi wszystko wrocic do petli DO/LOOP a przeciez resetuje flagi Scon.0 i Scon.1. Nie moge bezposrednio zapisywac dane do eeproma podczas odbioru bo przeciez wystapia bledy!!!!!

NA CHLOPSKI ROZUM :-)
**********************
Musze jakos odebrac te 58 bajtow i gdzies je przechowac i musze to zrobic na AT89C4051. Bede bardzo wdzieczny za jakieklowiek wskazowki !!!!!

BARDZO PROSZE O POMOC !!!!!!!!!!
Pozdrawiam

Awatar użytkownika
ScauT
-
-
Posty:62
Rejestracja:3 maja 2003, o 17:14
Lokalizacja:Legnica
Kontaktowanie:

Postautor: ScauT » 14 wrz 2003, o 21:06

witam,

aby powracalo ci do petli Do...Loop należy na koncu przerwania dodac Return.

zapisuje ci 25 bajtow, poniewaz masz tablice tylko 25 elementowa (Tx).
to samo tyczy sie petli zapisu.

pzd.

Gość

Postautor: Gość » 15 wrz 2003, o 11:00

Wiekszej tablicy niez 25elementow w AT89C4051 nie moge zadeklarowac przy tym programie bo nie starcza pamieci, dlatego dane musze jakos zapisywac do pamieci eeprom. Bezposrednio w czasie odczytu nie moge zapisywac pojedynczych bajtow bo wystapia bledy w odczycie calej ramki. TU wlasnie tkwi problem, jak zapisac calosc 58bajtow mimo iz tablice moge zadeklarowac max 25 i zeby nie wystapily bledy w transmisji!

euromatic
-
-
Posty:77
Rejestracja:27 lip 2003, o 21:38
Lokalizacja:00000

witam

Postautor: euromatic » 16 wrz 2003, o 20:57

proponuję zmienić procek na lepszy i po bólu.
najlepiej na AVR, ale to jedna z możliwości.
powiedz czy ty musisz odebrać wszystkie bajty?
może mógłbyś wybrać sobie tylko to co chcesz bo ja za pomocą procka 89c2051 wyłapuję dane z ciągu o długości 200 bajtów... i nie ma problemu.
Wszystko zależy jednak od tego czy dane te są uporządkowane.
zastosowanie eeproma może być problematyczne ponieważ z czasem skończy się ich żywot, a po drugie czas zapisu jest długi a dane napływają...
Najlepiej gdybyś mi opisał to co odbierasz lub podesłał ramkę danych i wskazał co ci jest potrzebne a co nie.
pozdrawiam
Grzegorz

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 78 gości