[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Отключение TX аппаратного UART
marss70Дата: Вторник, 04.02.2014, 14:42 | Сообщение # 1
Группа: Проверенные
Сообщений: 80

Статус: Offline
Приветствую, всех! Подскажите, пожалуйста, как отключить вход TX при использовании аппаратного UART? МК работает только на приём данных и по разводке платы именно эта нога мне удобна.

P.S. Попутал название темы и как изменить её не знаю...




Сообщение отредактировал marss70 - Вторник, 04.02.2014, 14:45
 
KoSS_89Дата: Вторник, 04.02.2014, 19:32 | Сообщение # 2
Группа: Проверенные
Сообщений: 53

Статус: Offline
Если я правельно вас понял, вы открыли програмный uart и в программе вам необходимо закрывать работу уарта и использовать ножку мк в других целях, значит открывали вы его строками типа Open "comb.1:9600,8,n,1" For Input As #1 ну а закрывать нужно соответственно сторкой Close #1

упс перепутал аппаратный с прграмным




Сообщение отредактировал KoSS_89 - Вторник, 04.02.2014, 19:35
 
exersizzeДата: Вторник, 04.02.2014, 21:44 | Сообщение # 3
Группа: Администраторы
Сообщений: 723

Статус: Offline
попробуй отдельно конфигурировать ножку TX на вход (или выход) перед использованием.

 
MACTEPokДата: Среда, 05.02.2014, 08:43 | Сообщение # 4
Группа: Пользователи
Сообщений: 9

Статус: Offline
регистр UCSRB. UCSRB.3 = 0 отключит аппаратный TX

 Bit 3 – TXEN: Transmitter Enable
Writing this bit to one enables the USART Transmitter. The Transmitter will override nor-
mal port operation for the TxD pin when enabled. The disabling of the Transmitter
(writing TXEN to zero) will not become effective until ongoing and pending transmis-
sions are completed (i.e., when the Transmit Shift Register and Transmit Buffer Register
do not contain data to be transmitted). When disabled, the Transmitter will no longer
override the TxD port.


 
marss70Дата: Четверг, 06.02.2014, 19:08 | Сообщение # 5
Группа: Проверенные
Сообщений: 80

Статус: Offline
UCSRB.3 = 0 - на это компилятор ругается. Пишет: invalid datatype...

 
MACTEPokДата: Четверг, 06.02.2014, 20:04 | Сообщение # 6
Группа: Пользователи
Сообщений: 9

Статус: Offline
Значит мк с несколькими USART. Какой мк?

 
marss70Дата: Четверг, 06.02.2014, 20:33 | Сообщение # 7
Группа: Проверенные
Сообщений: 80

Статус: Offline
Тинька 2313...  Вообще-то проблему решил- переделал плату. Но на будущее знать-бы не помешает. А это рабочий код идикатора принимающего по УАРТ переменной А и выводящей на LED индикатор.

$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 38400

Dim Y As Byte
Dim A As Word
Dim Digit_str As String * 4
Dim Temp_str As String * 4

Ddrb = &B11111111
Ddrd = &B11111110

On Urxc Uart
Enable Urxc
Enable Interrupts

Do

Digit_str = Str(a)
Digit_str = Format(digit_str , "0000")

For Y = 1 To 4                                              ' èçìåíÿÿ îò 4 öèêëîâ ìåíÿåòñÿ âðåìÿ ìåæäó èìïóëüñàìè
Temp_str = Mid(digit_str , Y , 1)
Select Case Y

Case 1 : Portd = 216
Case 2 : Portd = 212
Case 3 : Portd = 204
Case 4 : Portd = 156

End Select

Select Case Temp_str
Case "0" : Portb = 245
Case "1" : Portb = 36
Case "2" : Portb = 242
Case "3" : Portb = 182
Case "4" : Portb = 39
Case "5" : Portb = 151
Case "6" : Portb = 215
Case "7" : Portb = 164
Case "8" : Portb = 247
Case "9" : Portb = 183

End Select
                                                  ' ìåíÿåòñÿ äëèíà èìïóëüñà ò.å. ÷àñòîòà îáíîâëåíèÿ
Waitus 500                                                  ' ìåíÿåòñÿ äëèíà èìïóëüñà ò.å. ÷àñòîòà îáíîâëåíèÿ
Portb = 0
Waitus 500
Next Y

Loop

End

Uart:
Inputbin A
Return




Сообщение отредактировал marss70 - Четверг, 06.02.2014, 20:37
 
MACTEPokДата: Пятница, 07.02.2014, 19:50 | Сообщение # 8
Группа: Пользователи
Сообщений: 9

Статус: Offline
Какая версия компилятора? У меня 2.0.7.6 нормально компилирует.
А вообще какова потребность пин TX отключать? это же выход.


 
marss70Дата: Суббота, 08.02.2014, 12:08 | Сообщение # 9
Группа: Проверенные
Сообщений: 80

Статус: Offline
Версия 2.0.5.0  Отключить его хотел для того, чтобы  ножка работала как порт выхода  на LED дисплей(удобно было по разводке) А так на ней лог "1" постоянно висит. Но уж плату новую сделал, где эта нога не используется.

 
MACTEPokДата: Воскресенье, 09.02.2014, 21:19 | Сообщение # 10
Группа: Пользователи
Сообщений: 9

Статус: Offline
как то так

Код
$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 38400

Dim Y As Byte
Dim A As Word
Dim Digit_str As String * 4
Dim Temp_str As String * 4

UCSRB.3 = 0
Ddrb = &B11111111
Ddrd = &B11111100

On Urxc Uart
Enable Urxc
Enable Interrupts

Do

Digit_str = Str(a)
Digit_str = Format(digit_str , "0000")

For Y = 1 To 4                    ' изменяя от 4 циклов меняется время между импульсами
Temp_str = Mid(digit_str , Y , 1)
Select Case Y

Case 1 : Portd = 216
Case 2 : Portd = 212
Case 3 : Portd = 204
Case 4 : Portd = 156

End Select

Select Case Temp_str
Case "0" : Portb = 245
Case "1" : Portb = 36
Case "2" : Portb = 242
Case "3" : Portb = 182
Case "4" : Portb = 39
Case "5" : Portb = 151
Case "6" : Portb = 215
Case "7" : Portb = 164
Case "8" : Portb = 247
Case "9" : Portb = 183

End Select
                    ' меняется длина импульса т.е. частота обновления
Waitus 500                    ' меняется длина импульса т.е. частота обновления
Portb = 0
Waitus 500
Next Y

Loop

End

Uart:
Inputbin A
Return


 
marss70Дата: Понедельник, 10.02.2014, 11:23 | Сообщение # 11
Группа: Проверенные
Сообщений: 80

Статус: Offline
Вроде получилось- закомпелилось, хотя в Проте всё-равно на ноге  "1". Надо в железе проверять. Вся засада  в самой первой строке- вместо "2313def.dat" надо было выбрать "attiny2313.dat"! Тогда вопрос, а в чём, собственно,  разница между 2313def и attiny2313 ?



Сообщение отредактировал marss70 - Понедельник, 10.02.2014, 11:26
 
MACTEPokДата: Понедельник, 10.02.2014, 14:55 | Сообщение # 12
Группа: Пользователи
Сообщений: 9

Статус: Offline
AT90S2313 и ATtiny2313.
Единицы на ноге быть не должно, если только сами на + подтяжку не сделали в железе.


 
marss70Дата: Среда, 12.02.2014, 20:41 | Сообщение # 13
Группа: Проверенные
Сообщений: 80

Статус: Offline
Спасибо MACTEPok! Всё заработало, Ucsrb.3 = 0 сделало своё дело. Проверил в железе. Теперь TX работает как порт.

 
  • Страница 1 из 1
  • 1
Поиск: