Имеется канал связи не позволяющий передавать со скоростью выше 250 бод. В Ардуино IDE минимальная скорость 300 бод. Если беру одно из стандартных значений для СОМ порта 150 или 110 бод и ставлю Serial.begin (110); Arduino передает мусор. Подскажите пожалуйста как победить проблему.
имеется в виду монитор порта в ардуино иде? можно попробовать другую программу, например Terminal-v.1.9b я не проверял будет ли оно работать, но там есть тычка "custom BR" и по идее туда можно вписать что угодно в том числе меньше 300
В цифровых системах передачи каналы тональной частоты (ТЧ) полосой 300 гц - 3,4 Кгц передаются в виде цифрового потока со скоростью 64 Кбит/сек.и дополнительно сопровождаются сигналами Е&M , которые передаются со скоростью примерно 500 бит/ сек и часто просто не используются. Задача организовать по ним низкоскоростной канал. Связать 2 компъютера через гипертерминал на скорости 150 либо 110 бод удается, на скорости 300 бод появляются ошибки. Задача передать данные с ардуино на компъютер. Ардуино Serial.begin(300); выполняет нормально, а при Serial.begin (110); выдает мусор. Другими словами 2 компьютера на скорости 110 бод связать удается, а ардуино и компъютер нет
в ардуино вроде все правильно конфигурируется. Но я так понял, там у старшего регистра для настройки скорости только 4 бита задействуются, поэтому в них нельзя засунуть число больше 4095. Так что, получается скорость меньше 250 в принципе невозможно накрутить? Как вариант - взять ардуину на 8 МГц
в атмегах 8, 16, 32 и других, в UBRR только 12 разрядов, так что с настоящим уартом при 16 мгц точно не получится 150 накрутить. А вот SoftwareSerial как выше написали, может и прокатит.
UBRRL0L и UBRR0H, это я пробовал - не помогло. То же подозреваю, что надо что то приинклюдить. Ищу что.
я бы для начала программный сериал попробовал. Настоящий сериал к компу, а софтверный к тому что там на 150 бод работает. Возможности для отладки повышаются неимоверно инклюдить там что-то вроде #include <avr/io.h> наверно
Тему можно закрыть. Проблема решена. akl прав, регистр UBRR 12 разрядный. На 8 мегагерцовой ардуине при сбросе бита U2X регистра UCSRA в 0, заработал обмен 150 бод. может кому пригодится. подключаем #include <avr/io.h> в сетапе добавляем UBRR0H= 13; UBRR0L= 4; byte val = UCSR0A; val = val&0b11111101; UCSR0A = val; Спасибо всем за участие.