Все работает! По крайней мере на передачу в COM, причем без запитки от СОМ порта. Просто перепутал кт315 с 361 и естественно ничего не работало. В общем мне понадобился 1 кт315 и 2 резистора. По моему замечательно! Надо будет покрутить МК на высоких частотах, потом можно кольцевой буфер для приема строк сделать, ну и прерывания для приема использовать.
Собирал по этой схеме работает и на вход и на выход. Вместо кт315 использовал c945 можно еще bc547.
http://atmega.blog.ru/80040755/132166502/reply?page=1
Отличить 315 от 361 можно по фоткам
http://www.155la3.ru/kt315_361.htm
Вообще это как-то странно, по документации уровни RS232 стартуют от -3 +3. А на самом деле оказывается от 0 +3 и везде это так?
Если RX контроллера не подключен к СOM порту, но чтение ведется, то RX нужно вешать на землю иначе в порт будут идти помехи.
Если что значение UBRR удобно вычислять так
Код:
|
//set desired baud rate
#define BAUDRATE 19200
//calculate UBRR value
#define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1) |
Правда процент ошибки такой скрипт не определяет.
Что касается схемы afad, я ее конечно не тестировал на работоспособность, но по моему применение емкости это наилучший, вариант чтобы работать с стандартом RS-232 по честному.
Сообщение от nml
|
Если софтовый - то просто старт-бит начнется не переходом из 1 в 0, а наоборот.
|
Как показала практика так и есть, но если бы вы не подсказали не догадался бы. Но только для портов которые работают в режиме +5 0.
Сообщение от nick42
|
Не погружаясь в теорию предлагаю попроще вариант...
|
С компьютера в МК передать не проблема. Вся загвоздка была в обратном процессе как из +5 0 сделать +3 -3 хотя бы. дело в том что отрицательное напряжение получить не так-то просто, нужен преобразователь DC-DC, именно поэтому используются микросхемы max232. Но вопрос по большому счету уже решен.