Проблема со скоростью UART, ставлю 9600 а работает на 19200
- Войдите на сайт для отправки комментариев
Пнд, 18/03/2013 - 23:01
Подскажите пожалуйста что за фигня. Из-за этого не могу сконектить его с другим устройством.
а вот код:
int out[10] = {0,1,2,3,4,5,6,7,8,9}; // все порты на выход int stat[10] = {0}; // статусы портов int data[10] = {'\0'}; // приход с UART int bits = 0; void setup() { for (int i=0; i<10; i++) { pinMode(out[i], OUTPUT); } Serial.begin(57600); // у меня почемуто работает на скорости 115200 Serial.print("Upravlenie portami:\nDostupnye porty (0 - 9)\nKomandy: \ns - Sostoianie portov\no - Vikluchit' vse\n "); } void loop() { digitalWrite(13, LOW); if(Serial.available()) { bits = Serial.available(); for(int i=0; i <= bits; i++) { digitalWrite(13, HIGH); data[i] = Serial.read(); digitalWrite(13, LOW); } data[bits+1] = '\0'; } if (data[0] != '\0') { Obrabotka(); } } void Obrabotka () { }
Ну, во-первых, вы не на 9600 "ставите", а на 57600.
Во-вторых, в терминале тоже надо "ставить" на те же самые 9600 (или все же 57600?).
Для этого откройте обведенный вами выпадающий список и таки выберите правильную скорость передачи.
ну так происходит с любой скоростью, скорость которую забиваю в контроллер (к примеру 57600) в сериал мониторе работает на 115200, т.е. в 2 раза больше. А если пытаюсь схитрить, ставлю в программе скорость 4800, чтобы в мониторе получить 9600, получаю мусор на обеих скоростях.
а с платой не шаманили? не заводили без кварца? с кварцем на 8МГц?
загрузчик штатный прошейте...
Ваши настройки в скетче никак не влияют на скорость, с которой сериал монитор будет принимать/отправлять данные. Необходимо и в скетче, и в мониторе указать одинаковые значения.
Внимательно читаем описание Serial на этом сайте. Особенно второй абзац.
Затем думаем.
Пробуем еще раз.
Шаманить - можно и не шаманить, а например не верно плату указать
а с платой не шаманили? не заводили без кварца? с кварцем на 8МГц?
загрузчик штатный прошейте...
С платой не шаманил, как говорится "из-коробочки" фьюзы не трогал, частоту не менял
Шаманить - можно и не шаманить, а например не верно плату указать
Кристал ATmega168PA-PU на плате Freeduino-2009
Так и какую дуину из списка вы выбираете?
... Необходимо и в скетче, и в мониторе указать одинаковые значения.
В этом то и проблема, когда в скетче, и в мониторе указываю одинаковые значения,
в порт сыпется мусор, а если указанную в скетче скорость умножить на 2 и полученный результат указать в мониторе, то тогда иногда прокатывает и я получаю\передаю данные из\в контроллер.
бардак =)
Так и какую дуину из списка вы выбираете?
Так естественно! LilyPad работает от 8 МГц. Выбирать нужно Duemilanove.
Вторая строка описания Freeduino 2009:
Модуль является полным аналогом Arduino Duemilanove...
Да тут я затупил. Смотрел только на процессор
Блин, но проблема осталась, поставил Duemilanove теперь вообще не на одной скорости не работает.
Так не бывает. Укажите одинаковые скорости и все будет работать.
блин, мужики ну вот смотрите, на картинке все:
ОО.. а програматор какой должен стоять?
Скачайте версию IDE 1.0.х и попробуйте в ней.
ОО.. а програматор какой должен стоять?
Скачайте версию IDE 1.0.х и попробуйте в ней.
ОК, сейчас попробую
Попробывал в версии 1.0.2
Тот же результат =(
А что написано на кварце на дуине? 16.000 ?
Да 16.0RG9
А на библиотеке SoftwareSerial работает вроде. Правда только от контроллера в комп.
Странно все это. А покажите-ка весь код, с которым иероглифы в монитор летят.
правда он сейчас на виртуальный слегка переделан:
иероглифы летят с 16 строки
Попробуйте вот такой пример:
а так работает =)
думаете дело в знаке переноса строки?
А бутлоадер шить или фьюзами игратся не пробовали? Не всмысле "попробуйте", а "было такое?". Что-то кроме "заливаю скетч" еще с этой платой делали?
А бутлоадер шить или фьюзами игратся не пробовали? Не всмысле "попробуйте", а "было такое?". Что-то кроме "заливаю скетч" еще с этой платой делали?
Нет, только скетчи
А это че такое?
Хорошо еще что не упалили.
0 и 1 - на них же серил висит. Не нужно ему мешать собственной самодеятельности. Пусть он сам решает какой режим этим пинам выставлять.
Так что с примером выше?
Вообщем когда используете Serial - забудте что у вас есть пины 0 и 1. В коде с ними ничего не делайте, не трогайте.
Да в любом случае забудте про их использование, если не хотите потом выяснять "почему скетч льется через раз". Забудте про них.
А это че такое?
Хорошо еще что не упалили.
0 и 1 - на них же серил висит. Не нужно ему мешать собственной самодеятельности. Пусть он сам решает какой режим этим пинам выставлять.
блин верно, а я подума об этом, а потом решил что если трогать их не буду то все ОК будет и как то позабыл
сейчас исправлю и попробую
Кстати, когда используете SoftwareSerial(3,4), то самому пины 3,4 уже тоже использовать не желательно.
Вот, что значит невнимательность и свежий глаз. =)
все решилось! ураа
СПАСИБО ОГРОМНОЕ!