gdzie jest błąd??

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. 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
Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

gdzie jest błąd??

Post autor: grysek67 » 09 mar 2008, 19:25

Zbudowałem układ na 89c2051 który mial byc połaczony do portu COM pc-ta tak jak na schemacie poniżej... Komputer wogóle nie reaguje na sygnały z procka... gdzie tu jest błąd??
Open "com1:" For Output As #1
Baud = 9600 'konfiguracja sprzętowego UART
Ledc Alias P3.7
Switch Alias P3.2
Do 'pętla
Bitwait Switch , Reset 'czekaj aż zostanie naciśnięty przycisk
Set Switch
Print "13" ' wyslij kod klawisza przez UART np enter
Set Ledc
Wait 1 'zaswiec diode
Reset Ledc 'czekaj
Wait 1
Loop
Close #1
Załączniki
pc.GIF
(12.14 KiB) Pobrany 290 razy

Franco
-
Posty: 19
Rejestracja: 27 cze 2007, 1:00
Lokalizacja: Bydgoszcz

Post autor: Franco » 09 mar 2008, 21:10

jak masz kwarc 12 MHz to zapomnij o 9600

wymień kwarc na 11.0592

Awatar użytkownika
Luminofor
Użytkownik
Posty: 1375
Rejestracja: 27 lis 2007, 17:17
Lokalizacja: Polska

Post autor: Luminofor » 09 mar 2008, 21:51

A czemu końcówka TXD (wejście portu szeregowego) wisi w powietrzu ?

Awatar użytkownika
gaweł
Użytkownik
Posty: 653
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Re: gdzie jest błąd??

Post autor: gaweł » 09 mar 2008, 22:42

grysek67 pisze:Zbudowałem układ na 89c2051 który mial byc połaczony do portu COM pc-ta tak jak na schemacie poniżej... Komputer wogóle nie reaguje na sygnały z procka... gdzie tu jest błąd??
Nie wszystko jest jasno i precyzujnie określone. Niby wszystko jest OK ale:
- obwodu RESET nie ma,
- złącze komputera przedstawione mało dokładnie, bo niby RxD z punktu widzenia jednej strony jest sygnałem wejściowym a dokładnie ten sam z drugiej strony jest sygnałem wyjściowym (może to być żróqdłem nieporozumień).
Równeż nie ma żadnych danych dotyczących użytego kabla, więc zamiast zdagywać prezentuję poprawne rozwiązanie, w którym dodałem (na wszelki wypadek) tor transmisyjny w drugą stronę (P2<--->P3 reprezentuje kabelek do połączenia z PC'tem).
Załączniki
2051.PNG
2051.PNG (3.52 KiB) Przejrzano 6793 razy

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 10 mar 2008, 7:11

Zawsze jak chce tylko wysyłac do komputera to musi byc połączone Txd koputera i Rxd procesora??

Awatar użytkownika
gaweł
Użytkownik
Posty: 653
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 10 mar 2008, 8:30

grysek67 pisze:Zawsze jak chce tylko wysyłac do komputera to musi byc połączone Txd koputera i Rxd procesora??
Nie, nie musi, ale nigdzie wcześniej nie napisałeś, że chodzi o transmisję tylko w jedną stronę.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 14 mar 2008, 13:19

A czemu niby przy 12Mhz nie może byc 9600 bodów... :grin: Czy kwarc ma jakis wpływ na predkosc przesyłania?? pozdro

Awatar użytkownika
gaweł
Użytkownik
Posty: 653
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 14 mar 2008, 14:57

grysek67 pisze:Czy kwarc ma jakis wpływ na predkosc przesyłania??
Jak najbardziej. Prędkość transmisji jest uzależniona od częstotliwości taktowania układu UART. Ten z kolei jest taktowany sygnałem o częstotliwości kwarca podzielonej przez jakąś stałą określoną przez program.
Więc dzieląc liczbę 12000000 Hz przez jakąkolwiek liczbę całkowitą nie uzyska się liczby przykładowo 9600.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 14 mar 2008, 16:25

Czyli 9600 bodów można uzyskac tylko przy 11059200 Hz??

Awatar użytkownika
gaweł
Użytkownik
Posty: 653
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 14 mar 2008, 16:46

Nie tylko. Całkowite podzielniki wychodzą dla częstotliwości będących wielokrotnością 1.8432MHz. Właśnie 1.8432*6=11.0592

ODPOWIEDZ