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

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

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

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



port rs-485

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

1

Доброго времени суток, извиняюсь за возможно глупый вопрос, но я только изучаю программирование. Проблема организовать 485 в bascom порт на микросхеме adm2483

есть простенькая программка, откуда-то из примеров содрал...

$regfile = "M162def.dat"
' Define used crystal
$crystal = 7372800                                         
$baud = 9600
$hwstack = 80                                             

$swstack = 63                                           

$framesize = 100

Config Portd.4 = Output                                     'in/out 485 port
Config Print0 = Portd.4 , Mode = Set

Dim Firstnumber As Integer
Dim Secondnumber As Integer
Dim Sum As Integer

Do

  Firstnumber = 0
  Secondnumber = 0

Print "input one number:"

Input Firstnumber
Print "input second number:"
Input Secondnumber
Sum = Firstnumber + Secondnumber

  Print "Sum: " ; Sum
  Waitms 100
Loop

End

Проблема в том что после команды Print перестаёт работать input, SUM выводит = 0. Если убрать Print перед Input, то всё считает правильно. Помогите пожалуйста правильно организовать приём и передачу информации по 485 порту. Микросхему порта использую ADM2483 Заранее благодарен.

Отредактировано catalex (2017-05-19 17:28:15)

0

2

Попробуйте сделать на подобии этого примера: https://www.mcselec.com/index2.php?opti … ight=rs485
А вообще гляньте хелп в баскоме, там сказано, что: "Config Pinb.0 = Output". Т.е. почему-то не "portd", а "pind".

0

3

Попробовал оба варианта, но результат тот-же.  Была мысль о неисправности adm2483, но без команды Print перед input, она бы тоже не принимала. По ссылке https://www.mcselec.com/index2.php?opti … ight=rs485  автор использует компилятор версии 2.0.7.9, а у меня 2.0.7.8    может в этом проблема?     К сожалению 2.0.7.9 я не смог найти где скачать.

0

4

catalex
Не пробовал управлять приёмом/передачей самостоятельно?То есть в программе сделать,например, так:set Portd.4,waitms 10, print что-то,reset Portd.4.

Код:
Peredacha:
    Set Dct
   Waitms 20
   Print Slovo
   Waitms 20
   Reset Dct
   Waitms 30
Return

вот так работало без сбоев.
То,что принимается,это число,или символ?Если число,может inputbin попробовать?

0

5

Пробовал самостоятельно управлять приёмом/передачей, не работало. Проблема всё-таки была в микросхеме, поставил adm483 и приём с передачей заработал как хотелось. Одного только не понял, до этого пробовал ставить adm2483 две штуки, не работало. Отличие 2483 от 483 по-моему только одно, у 483 нет гальванической развязки.

Сейчас работает вот с таким кодом:
$regfile = "M162def.dat"
' Define used crystal
$crystal = 7372800                                         
$baud = 9600
$hwstack = 80                                               

$swstack = 63                                               

$framesize = 100

Config Portd.4 = Output                                     'in/out 485 port
Config Print0 = Portd.4 , Mode = Set
Dim Firstnumber As Integer
Dim Secondnumber As Integer
Dim Sum As Integer

Do

  Firstnumber = 0
  Secondnumber = 0
  Input "Enter first number : " , Firstnumber
  Input "Enter second number: " , Secondnumber
  Sum = Firstnumber + Secondnumber
  Print "Sum: " ; Sum
  Waitms 10
Loop

End

Большое всем спасибо кто мне помогал в этом вопросе.

+1

6

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

до этого пробовал ставить adm2483 две штуки, не работало

А подтягивали: DE=1?
Ещё надо соответствующи дергать RE, в зависимости от передачи данных.
И при включении модуля надо по умному стартовать через PV.

Чтобы избежать дребезг на выходах А и В, вызванных медленными переходными процессами включения и выключения питания на VDD1 (> 100 мкс / В), ADM2483 имеет входной сигнал power_valid (PV). Этот вывод должен быть низким до тех пор, пока VDD1 не превысит 2,0 В. Если VDD1 больше 2,0 В, контакт должен быть высоким. И наоборот, после выключения питания PV должен быть низким до того, как VDD1 достигнет 2,0 В.
Вход power_valid может управляться, например, выходом схемы сброса системы, такой как ADM809Z, которая имеет пороговое напряжение 2,32 В.

В общем читайте датащит.

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

поставил adm483 и приём с передачей заработал как хотелось

Ясен пень, чип проще чем "adm2483". :)
Вы бы его вначале запустили в пошаговом режиме, а потом бы уже пытались в принт/инпут пихать.

0