Leo

Работает Ли Usart От Внутреннего Кварца

8 сообщений в этой теме

Leo    3

Работает ли usart от внутреннего кварца? Прога передача параметра по usart от ПК к МК. Кварц внутренний использовал в tiny 2313 на 8 мГц скорость 9600. Параметр передать не удалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    263

В AVR нет внутреннего кварца. Если же имелся в виду RC-генератор, то теоретически это возможно, но может не хватить стабильности. Можно попробовать синхронизироваться с принимаемыми байтами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Leo    3
Можно попробовать синхронизироваться с принимаемыми байтами.
А можно подробнее как это делается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Leo    3

Хотел спросить простой кварц нормально работает с UART или не обходимы кварцы для UART. А конденсаторы для кварца как подбираются они стабелизируют его работу?

Изменено пользователем Leo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    263
Это программный UART.
Можно и аппаратный подстраивать, вот только вряд ли это будет просто.
Хотел спросить простой кварц нормально работает с UART
Да, точности любого кварца хватит для работы с UART. Не обязательно, как Геннадий говорит, ставить 1,8432МГц, 3,6864МГц, 7,3728МГц и т.п., просто они дают наибольшее соответствие стандартным частотам UART. Можно использовать и другие, этот интерфейс вроде прощает ошибку частоты в пару процентов. Если для остальной схемы удобнее, скажем, 12 МГц, с ним тоже заработает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
zeconir    116

Согласен с вышесказанным. От себя добавлю, что может и будет работать. У меня на (с АВР не пробовал) pic12f683 (12f629) вполне работал софтверный UART на МК без внешнего кварца. Правда пришлось использовать бодрейт 2400. Опять же с АВР не пробовал экспериментировать :)

Изменено пользователем zeconir

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Гость Александр
      Автор: Гость Александр
      Добрый день
      Проблема с оценочной платой STM32F4-DISCOVERY в части работы USART
      суть вопроса
      по USART шлется и принимается блоки данных по 3 байта (в принципе сколько угодно) при этом если подключен USB разъем ST-LINKа то все работает должным образом (данные снуют туда сюда без проблем), но при отключении USB ST-LINKа данные из платы STM32F4-DISCOVERY идут а вот принимать данные плата отказывается (естественно подаю внешнее питание +5 вольт на одноименный контакт). Если кто сталкивался с подобной проблемой прошу хотя бы направить в сторону железа или софта.
      На плате STM32F4-DISCOVERY убраны перемычки SB11(T_NRST) и SB12(T_SWO) а так же отпаян резистор R68 (MCO). Плата при этом прошивается без проблем, и стартует при внешнем питании(не от USB ST-LINKа) тоже без каких то заморочек.
      код прикладывать на данный момент не вижу смысла там все просто, при чем при подключении USB ST-LINKа программа работает.
      Проект пишется на IARe, конфигурация формируется в STM32Cube.
      Заранее спасибо за ответ
    • Автор: User_1
      Всем привет!
      Почему-то этот код работает: 
      void Send_to_UART(char* string) { char data = 0; while(*string) { while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE))); data = *string; USART1->TDR = data; string++; } while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE))); USART_SendData(USART1, 0x0D); while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE))); USART_SendData(USART1, 0x0A); while(!(USART_GetFlagStatus(USART1, USART_FLAG_TC))); } char hello[13] = {'H','e','l','l','o',' ','W','o','r','l','d','!'}; int main (void) { Init_Clock(); Init_USART1(); Send_to_UART(hello); while(1); } А если написать вот так:
      int main (void) { Init_Clock(); Init_USART1(); Send_to_UART("Hello World!"); while(1); } то не просто не работает - микроконтролер зависает даже до входа в main().
      В Си ведь, насколько я понимаю, строка - это тот же массив символов
      Объясните, пожалуйста, что я делаю не так?
      Камень stm32f030, среда CooCox CoIDE
    • Гость Andrey-Docent
      Автор: Гость Andrey-Docent
      Всем привет! Планируется сделать на базе arduino устройство, ведущее обмен данными с переферийным устройством по интерфейсу rs-232 и также необходимо контролировать работу arduino с помощью компьютера тоже посредством интерфейса rs-232. Но у arduino только один такой порт. Первая мысль в связи с этим - сделать ещё один порт и вывести линии RX и TX на другие (например цифровые) ножки порта. Можно ли как-то это сделать? Нет ли готовых библиотек для этого (на данный момент не нашёл таковых в интернете)? Может есть ещё какой-нибудь обходной путь? Заранее спасибо.
    • Автор: LoKeR
      Доброго времени суток, нашел хорошую статью Usart прием и отправка строки. Настроил на порт Usart3 перестал работать, попробовал на Usart2 перекинуть тоже не работает, как правильно переделать подскажите...
      stm32-uart-spl.rar