Bezskutecznie próbuję uruchomić transmisję szeregowa w atmega32, czy ktoś mógłby się podzielić swoimi doświadczeniami w tym temacie (kod w bascom), ja pisze tak:
$regfile = "m32def.DAT"
$crystal = 11059200
Config Lcd = 16 * 2
$baud = 28800
Dim Rs As Byte
Enable Interrupts
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Do
  Open "comd.0:28800,8n1" For Input As #2
 Rs = Inkey()
  Close #2
  Cls
  Lcd Rs
  If Rs <> 0 Then
   Open "comd.1:28800,8n1" For Output As #1
   Put #1 , Rs
 Rs = 0
  End If
  Wait 1
Loop
Program na PC który wysyła pojedynczy bajt na com działa bo testuje go na innym procku i jest OK.
Dołączam screen ustawienia mich fusebitów. 
Pozdrawiam wszystkich!
				 
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ęATmega32 + UART POMOCY
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
- 
				K_o_n_r_a_d
- - 
- Posty:58
- Rejestracja:30 lip 2005, o 00:36
- Lokalizacja:Lublin
Zajrzyj do pomocy do Bascoma i poczytaj o:
Open... i Close... służą do otwierania i zamykania PROGRAMOWEGO UARTu!
A po co chcesz używać programowego jak masz sprzętowy i to właśnie podłączony do tych samych nóżek które wykorzystujesz tutaj.
Pozdrawiam.
			Kod: Zaznacz cały
Open "comd.0:28800,8n1" For Input As #2
Rs = Inkey()
Close #2 A po co chcesz używać programowego jak masz sprzętowy i to właśnie podłączony do tych samych nóżek które wykorzystujesz tutaj.
Pozdrawiam.
Póbuje wszyskiego
$crystal = 11059200
Config Lcd = 16 * 2
$baud = 57600
Dim Rs As Byte
Enable Interrupts
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
'Open "COM1:57600,8,n,1" For Binary As #2 nie działa wysyłanie do PC w ten sposób też
Wait 1
Do
Rs = Inkey() ' odbiera poprawnie bajt nareszcie
Cls
Lcd Rs ;
If Rs <> 0 Then
' Print Rs
' Open "COM1" For Binary As #1 nie działa
Print Rs 'zawiesza procek i na kompie odbieram 4 bajty zawsze takie same
Rs = 0
' Close #1
End If
Wait 1
Loop
teraz napewno użyłem hardwarowego uartu a dalej procek nic mi nie moze konkretnego wysłać do PC
			Config Lcd = 16 * 2
$baud = 57600
Dim Rs As Byte
Enable Interrupts
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
'Open "COM1:57600,8,n,1" For Binary As #2 nie działa wysyłanie do PC w ten sposób też
Wait 1
Do
Rs = Inkey() ' odbiera poprawnie bajt nareszcie
Cls
Lcd Rs ;
If Rs <> 0 Then
' Print Rs
' Open "COM1" For Binary As #1 nie działa
Print Rs 'zawiesza procek i na kompie odbieram 4 bajty zawsze takie same
Rs = 0
' Close #1
End If
Wait 1
Loop
teraz napewno użyłem hardwarowego uartu a dalej procek nic mi nie moze konkretnego wysłać do PC
- 
				K_o_n_r_a_d
- - 
- Posty:58
- Rejestracja:30 lip 2005, o 00:36
- Lokalizacja:Lublin
To w takim razie jeszcze doczytaj dokładnie jak działa ten fragment:
Aby działało zlikwiduj:
i najlepiej jeszcze dodaj buforowanie.
			Kod: Zaznacz cały
   Rs = Inkey()   Aby działało zlikwiduj:
Kod: Zaznacz cały
   Wait 1   Już działa
Dziekuję wszystkim za pomoc. 
Program działa. Okazało się że na PC przez przypadek nie dokładnie obsłużyłem odbieranie bajtów. Wiedza o USART i UART którą zdobyłem na pewno się jeszcze nieraz przyda.
Pozdrawiam!
			Program działa. Okazało się że na PC przez przypadek nie dokładnie obsłużyłem odbieranie bajtów. Wiedza o USART i UART którą zdobyłem na pewno się jeszcze nieraz przyda.
Pozdrawiam!
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 17 gości