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ę

Kłopot z COM, pomocy !!

Billy
-
-
Posty:25
Rejestracja:28 lis 2004, o 17:45
Lokalizacja:Wronki
Kontaktowanie:
Kłopot z COM, pomocy !!

Postautor: Billy » 17 sty 2005, o 14:53

Zbudowałem małe urządzonko na procesorze AT89C4051 i napisałem oprogramowane w Bascomie. Urządzenie to ma odbierać dane z portu szeregowego i te dane przesyłać po I2C do PCF8574A.

Jeśli przesyłam dane z komputera do urządzenia to wszystko działa prawidłowo.

Problem pojawia się w momencie gdy dane przesyłam z innego podobnego urządzenia też zbudowanego na AT89C4051. Za każdą razą urządzenie obierające (funkcja INPUT) gubi pierwsy bajt.

Nie chodzi mi o to, jak to ominąć tylko dlaczego tak się dzieje??

Problem ten pojawił się też przy układzie TOIM4232. Jest to układ dopasowująy sygnały do ndajni/odbiornik IrDa 4500 itp...
Otórz wspomniany TOIM ma możliwość szeregowego progrmowania prędkości danych, od 1200 do 115200.
Aby zaprogrmować wspomniany układ na prędkość 115200 nalezy wysłć Hex (10).
Jeśli robię to "ręcznie" z komputera to TOIM programuje się prawidłowo.
Jeśli jedna robię to podłączając do TOIM'a AT89C4051 z właściwym algorytmem i wysyłam poprzez polecnie PRINT właściwą wartość, to niestey TOIM "zawiesza się"

Wydaje mi się, że w obu opisywanych przypadkach przyczyna jest taka sama, jaka?? Nie wiem.
Cy ktoś z Was moe spokał się podobnymi problemami jak ja??
Co takiego różni nadawanie z kompa od wysyłania z AT89C4051?

Proszę Was o fachową poradę.

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 17 sty 2005, o 15:07

O ile dobrze pamiętam, to instrukcja PRINT nie wysyła liczby jako takiej (bajt danych) tylko jej reprezentacje dziesiętną w kodzie ASCII. Do Wysyłania "czystych" danych należy użyć PRINTBIN. Podobnie sprawa ma się z INPUT(INPUTBIN).

Billy
-
-
Posty:25
Rejestracja:28 lis 2004, o 17:45
Lokalizacja:Wronki
Kontaktowanie:

Postautor: Billy » 21 sty 2005, o 17:31

O ile dobrze pamiętam, to instrukcja PRINT nie wysyła liczby jako takiej (bajt danych) tylko jej reprezentacje dziesiętną w kodzie ASCII. Do Wysyłania "czystych" danych należy użyć PRINTBIN. Podobnie sprawa ma się z INPUT(INPUTBIN).
Tak, oczywiście zgadza się to co mówisz...

Ja własnie odbieram poprzez procesor AT89C4051 polecenia ASCII za pomocą polecenia INPUT
INPUT $zmienna 1 noecho
INPUT $zmienna 2 noecho
INPUT $zmienna 3 noecho

Pierwszą zmienną przyjmuje dobrze, natomiast następne zaczynają się wartością hex(10)
i właściwy string zaczyna się dopiero od pozycji 2 tej zmiennej.

Awatar użytkownika
ucy74
-
-
Posty:100
Rejestracja:6 sie 2003, o 21:04

Postautor: ucy74 » 21 sty 2005, o 23:06

...natomiast następne zaczynają się wartością hex(10)
i właściwy string zaczyna się dopiero od pozycji 2 tej zmiennej...
Jako co deklarujesz przychodzące zmienne? Jako string? Napisz coś więcej o kodzie programu i wysyłanej informacji.

pch
-
-
Posty:23
Rejestracja:27 maja 2003, o 06:56
Lokalizacja:Gdańsk
Kontaktowanie:

Postautor: pch » 27 sty 2005, o 12:35

To nie jest tak, że się zaczynają tylko ta poprzednia tak sie kończy!! Jak wysyłasz coś np. "ABC" to tak naprawdę wysyłasz ABC+chr(13)+chr(10). Input pewnie czeka na chr(13) i dlatego chr(10) jest początkiem kolejnej transmisji. Używaj INKEY(). To rozwiązuje wiele problemów.

PC

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