Pytanie jak w temacie. Mam procka ATMEGA162 który ma 2 sprzętowe UARTY.
Jak można skorzystać z 2 uartu.
W 1 UARCIE mamy takie funkcje jak Inkey(), Waitkey(),Input(),Ischarwaitnig. Te funkcje także powinny mieć swoje odpwoedniki w 2 uarcie sprzętwoym.
Print1 ani Print2 nie dziala.
Ma ktoś jakieś sugestie ?
pozdrawiam
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ęJak wysłać znak przez 2 uart sprzętowy
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witam
Zobacz w helpie na config serial in
Musisz użyć hasha # żeby zaznaczyć który to uart
chyba wszytko jasne
pzdrawiam
Zobacz w helpie na config serial in
Musisz użyć hasha # żeby zaznaczyć który to uart
Kod: Zaznacz cały
'-----------------------------------------------------------------------------------------
'name : rs232bufferout1.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : how to use a serial output buffer on the second UART
' this sample will only work for chips with a seond UART like
' the M162 and M128
'micro : Mega162
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
$regfile = "m162def.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
$baud = 9600 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Enable Interrupts
'Enable Interrupts
Config Serialin = Buffered , Size = 20
Config Serialin1 = Buffered , Size = 20
Print "test uart 1" 'to jest pierwszy serial innaczej 0
' pierwszego nietrzeba otwierac wiec piszesz tylko print
' drugi musisz otworzyc czyli piszesz open jak nizej
Open "COM2:" For Binary As #2
Print # 2 , "test uart 2" ' to jest drugi serial innaczej 1
' ^ ^
' | |____tu tez spacja
' |_____tu spacja
'ps. wycięte z helpa i troszkę zmienione
pzdrawiam
dzięki za odpowiedz.
A wiesz może jak można zastosować funkcję ISCHARWAITING do drugiego uarta?
Bo próbuje wszystkie kombinacje np Ischarwaiting #2 i mi nie dziala.
I jeszcze jedno - w tym przykładzie co mi podałeś jaką prędkość bedzie miec UART 2?
Chyba można zastosować do okreslenia jego prędkości Baud #2?
A wiesz może jak można zastosować funkcję ISCHARWAITING do drugiego uarta?
Bo próbuje wszystkie kombinacje np Ischarwaiting #2 i mi nie dziala.
I jeszcze jedno - w tym przykładzie co mi podałeś jaką prędkość bedzie miec UART 2?
Chyba można zastosować do okreslenia jego prędkości Baud #2?
Musi działać
Prędkość możesz zmienić konfigurując drugi uart
Zobacz na ten folder co Ci podałem w samplach tam jest dokładnie co potrzebujesz
Prędkość możesz zmienić konfigurując drugi uart
Zobacz na ten folder co Ci podałem w samplach tam jest dokładnie co potrzebujesz
Kod: Zaznacz cały
'-----------------------------------------------------------------------------------------
'name : rs232buffer1.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : shows the difference between normal and buffered
' serial INPUT
'micro : Mega161
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
$regfile = "m2560def.dat" ' specify the used micro
$crystal = 8000000 ' used crystal frequency
$hwstack = 40 ' default use 32 for the hardware stack
$swstack = 40 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
' Works only for chips with 2 UARTS or more
Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'first compile and run this program with the line below remarked
'Config Serialin1 = Buffered , Size = 20
'dim a variable
Dim Nm As String * 5
Open "com2:" For Binary As #1
'the enabling of interrupts is not needed for the normal serial mode
'So the line below must be remarked to for the first test
Enable Interrupts
Print #1 , "Start"
Do
If Ischarwaiting(#1) = 1 Then 'was there a char?
Nm = Waitkey(#1) 'get it
Print #1 , Nm 'print it
End If
Wait 1 'wait 1 second
Loop
Close #1
'You will see that when you slowly enter characters in the terminal emulator
'they will be received/displayed.
'When you enter them fast you will see that you loose some chars
'NOW remove the remarks from line 11 and 18
'and compile and program and run again
'This time the chars are received by an interrupt routine and are
'stored in a buffer. This way you will not loose characters providing that
'you empty the buffer
'So when you fast type abcdefg, they will be printed after each other with the
'1 second delay
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 86 gości