Witam
Mój problem wiąże się z zaprogramowaniem "Echa" które obijało by sygnał w standardzie RS. Układ buduję w celu sprawdzania poprawności działania konwertera USB-RS485. Aby nie programować układu dla każdej szybkości transmisji chcę użyć pinów PB0-PB3 gdzie za pomocą zworki możliwy byłby wybór jednej z 4 przygotowanych szybkości transmisji: 921600, 460800, 230400 i 115200.
Rys. schematu
http://img176.imageshack.us/img176/8224/echo2.png
Niestety jeśli chodzi o kod, to sobie nie radzę, zmodyfikowałem co prawda kod odbioru danych RS jaki znalazłem w książce M.Wiązania "Programowanie mikrokontrolerów AVR w języku Bascom" ale nie wiem jak wziąć się za sterowanie wyjściem PD2 oraz jak trzeba określać wyjścia na które dany sygnał będzie podawany i czy jest to konieczne (czy wystarczy zdefiniowanie pinów PD0, PD1 jako we/wy) również nie mam pojęcia pomysł na sterowanie prędkością transmisji jest właściwy.
Próbowałem znaleźć gotowe programy, lub chociaż fragmenty kodu które realizowały to co jest mi potrzebne, ale niestety poza fragmentem na samą transmisje RS nie udało mi się. I tutaj prośba do Was o wskazanie błędów i/lub wskazanie czego powinienem szukać bo wydaje mi się że takie programy powinny być dostępne, tylko ja źle do tego podchodzę.
Mój problem wiąże się z zaprogramowaniem "Echa" które obijało by sygnał w standardzie RS. Układ buduję w celu sprawdzania poprawności działania konwertera USB-RS485. Aby nie programować układu dla każdej szybkości transmisji chcę użyć pinów PB0-PB3 gdzie za pomocą zworki możliwy byłby wybór jednej z 4 przygotowanych szybkości transmisji: 921600, 460800, 230400 i 115200.
Rys. schematu
http://img176.imageshack.us/img176/8224/echo2.png
Niestety jeśli chodzi o kod, to sobie nie radzę, zmodyfikowałem co prawda kod odbioru danych RS jaki znalazłem w książce M.Wiązania "Programowanie mikrokontrolerów AVR w języku Bascom" ale nie wiem jak wziąć się za sterowanie wyjściem PD2 oraz jak trzeba określać wyjścia na które dany sygnał będzie podawany i czy jest to konieczne (czy wystarczy zdefiniowanie pinów PD0, PD1 jako we/wy) również nie mam pojęcia pomysł na sterowanie prędkością transmisji jest właściwy.
Próbowałem znaleźć gotowe programy, lub chociaż fragmenty kodu które realizowały to co jest mi potrzebne, ale niestety poza fragmentem na samą transmisje RS nie udało mi się. I tutaj prośba do Was o wskazanie błędów i/lub wskazanie czego powinienem szukać bo wydaje mi się że takie programy powinny być dostępne, tylko ja źle do tego podchodzę.
'Tell the compiler which AVR chip we use
$regfile = "attiny2313.dat" 'określenie typu proca
'Tell the compiler which crystal frequency was used
$crystal = 14745600 '14.7456 MHz 'taktowanie pracy
config pinD.0=output ' wyprowadzenie PD0 jako wyjście
config pinD.1=input ' wyprowadzenie PD1 jako wejście
config pinD.2=output ' wyprowadzenie PD2 jako wyjście
config pinb.0=input ' wyprowadzenie PB0 jako wejście
config pinb.1=input ' wyprowadzenie PB1 jako wejście
config pinb.2=input ' wyprowadzenie PB2 jako wejście
config pinb.3=input ' wyprowadzenie PB3 jako wejście
If pinb.0=1 then $baud = 921600 ' jeśli wyprowadzenie PB0 = 1 wtedy predkosc transmisji 921600 bodów
Else
If pinb.1=1 then $baud = 460800 ' jeśli wyprowadzenie PB1 = 1 wtedy predkosc transmisji 460800 bodów
Else
If pinb.2=1 then $baud = 230400 ' jeśli wyprowadzenie PB2 = 1 wtedy predkosc transmisji 230400 bodów
Else
If pinb.3=1 then $baud = 115200 ' jeśli wyprowadzenie PB3 = 1 wtedy predkosc transmisji 115200 bodów
end If
Dim I as byte ' definicja zmiennej I
Dim znak as string * 1 ' definicja zmiennej znak
Do ' początek pętli
Input , I ' pobranie wartości przez RS232 do zmiennej I
Print , I ' odesłanie wartości przez RS232
If I = 1 Then ' jeśli I = 1 to
Do ' początek pętli
Znak = Waitkey () ' czeka na odebranie znaku przez RS
Print ; znak ' wysłanie znaku z RS
Loop until znak = "k" ' jeśli odebrany znak to "k" opuszcza pętle
End If '
If I = 2 Then ' jeśli I = 2 to
Do ' początek pętli
I = Ischarwaiting () ' sprawdzenie czy jest cos do odczytu w buforze
Print ; I ' wysłanie wartości I
Znak = Inkey () ' odebranie znaku z RS, funkcja nie czeka na znak
Print znak ' wysłanie przez RS wartości zmiennej Znak
Loop until znak = "k" ' jeśli odbierze "k" to opuszcza pętle
End If '
Loop ' koniec pętli głownej
End ' koniec programu
