Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » скорость USART


скорость USART

Сообщений 1 страница 8 из 8

1

господа, подскажите как правильно менять скорость USART по ходу выполнения программы?
с помощью Config Com1 = 9600, Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0 
или baud = 9600 ??????????????

0

2

Penumbra написал(а):

Config Com1 = 9600, Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0 
или baud = 9600 ??????????????


Так не получится.

Только на прямую регистрами

Examples of Baud Rate Setting  -  выбираете значения и вперёд.

0

3

э..м.. ээ.. а поподробнее можно?

0

4

Penumbra написал(а):

э..м.. ээ.. а поподробнее можно?

Идёте сюда, качаете документацию на необходимый контроллер.

В документации ищите раздел

http://s6.uploads.ru/t/N5BSR.jpg

смотрите нужную частоту МК и данные в регистрах


например:


  $crystal = 1000000
  $baud = 9600

  Ubrr0 = 12
  Ucsr0a.u2x0 = 1



  $crystal = 8000000
  $baud = 38400

  Ubrr0 = 12
  Ucsr0a.u2x0 = 0

  'или так

  Ubrr0 = 25
  Ucsr0a.u2x0 = 1


0

5

я на лету менял командой baud
да и в справке это показано ;)

Код:
Example

$regfile = "m48def.dat"
$crystal = 4000000

$baud = 19200
Config Com1 = Dummy, Synchrone = 0, Parity = None, Stopbits = 1, Databits = 8, Clockpol = 0

Print "Hello"

'Now change the baud rate in a program
Baud = 9600
Print "Did you change the terminal emulator baud rate too?"

End

Отредактировано Александр Д. (2015-11-13 21:37:43)

0

6

вообще должно работать элементарно по команде "baud = 9600", но в баскоме есть баг, на некоторых МК, на определенных портах - не работает
пробуйте

0

7

на атмеге8 я пробую сначало так:

Код:
 Sub Set_usart_speed
 Local Tmpbyte As Byte
 Tmpbyte = Usart_speed
 Select Case Tmpbyte
   Case 1
      Baudrate = 4800
      Load_timer = &H00D8
   Case 2
      Baudrate = 9600
      Load_timer = &H006C
   Case 3
      Baudrate = 19200
      Load_timer = &H0031
   Case 4
      Baudrate = 38400
      Load_timer = &H0018
   Case 5
      Baudrate = 57600
      Load_timer = &H0011
   Case Else
      Baudrate = 9600
      Load_timer = &H006C
 End Select
Baud=Baudrate

потом так:

Код:
 Local Tmpbyte As Byte
 Tmpbyte = Usart_speed
 Select Case Tmpbyte
   Case 1
      Baudrate = 4800
      Load_timer = &H00D8
   Case 2
      Baudrate = 9600
      Load_timer = &H006C
   Case 3
      Baudrate = 19200
      Load_timer = &H0031
   Case 4
      Baudrate = 38400
      Load_timer = &H0018
   Case 5
      Baudrate = 57600
      Load_timer = &H0011
   Case Else
      Baudrate = 9600
      Load_timer = &H006C
 End Select

Config Com1 = Baudrate , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0

и так и так  скорость осталась прежней, не поменялась после выполнения этого куска кода

сейчас попробую как рекомендовал sasha_1973

0

8

RDW написал(а):

в баскоме есть баг, на некоторых МК, на определенных портах - не работает

Речь про программный USART?

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » скорость USART