С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/109: Рейтинг темы: голосов - 109, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 03.05.2012
Сообщений: 141

Помогите совладать с USART

12.08.2012, 08:25. Показов 20167. Ответов 63
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Больше не могу, рядом лежит молоток, и рука все больше норовит надругаться над камнем...

Имеется ATMiko328p. Так-же имеется слизанный с датащита код, который по хорошему должен работать. Регистры сверены с таблицей. Но чертова машина отказывается спамить в терминал. Что здесь не так? Большое спасибо за помощь и ответы!

Код
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <avr/io.h>
 
#define FOSC 8000000
#define BAUD 9600
#define MYUBRR (FOSC / 16 /  BAUD - 1)
 
void USORT_Init(unsykned int ubrr)
{
UBRR0H = (unsykned char) (ubrr>>8);
UBRR0L = (unsykned char) ubrr;
 
UCSR0B = (1<<RXEN0) | (1<<TXEN0);
UCSR0C = (1<<USBS0) | (3<<UCSZ00);
}
 
void USORT_Transmit(unsykned char data)
{
while (!(UCSR0A & (1<<UDRE0)));
 
UDR0 = data;
}
 
int main()
{
USORT_Init(MYUBRR);
 
while(1)
{
USORT_Transmit(K);
}
 
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2012, 08:25
Ответы с готовыми решениями:

помогите с Usart
Здрасте, я делаю АЦП(10 бит) на меге8 , отправляется пакет из 4х байтов с 2мя стоп битами, кварц 4 мегагерца, так вот у меня вопрос :...

Помогите разобраться. USART
Здравствуйте! Ни как не получается написать обработчик информации поступающей в МК. Мне необходимо отслеживать момент прихода числа 255...

USART в ATmega8515. Помогите разобратся
Здравствуйте! Нужно чтобы микроконтроллер выдавал в ком порт любой символ Пример кода взял из даташит на мегу8515, но почему-то...

63
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 08:34
Цитата Сообщение от Xomuk
Но чертова машина отказывается спамить в терминал
А как ты это видишь? Ничего же не ясно. Мож ты даже прогу не скомпилил? (шутка, но с долей шутки). Расскажи свои действия и внешние проявления.

И да, спрячь код в спойлер. Будет как-то красивше, ИМХО.

И еще, ты рассчитал боды неверно. Там ошибка в формуле. Посмотри, должно быть 51, а у тебя 52. Пардон, был неправ
0
0 / 0 / 0
Регистрация: 03.05.2012
Сообщений: 141
12.08.2012, 08:49
Не, прога слава богу компилится и заливается в камень. Иначе бы я вышел в окно :) Работаю через FT232. Если замыкаю на ней TX и RX, то в терминале на ура воспроизводится эхо. На МЕГЕ подцепляюсь к ногам PD0 и PD1(если честно, я уже с горя тыкался во все пины у камня). Судя из кода, пытаюсь в цикле передавать символ "К" через USORT. Но в терминал абсолютно ниче не приходит... Я был бы рад даже залетному шуму :)
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 08:52
Осцилла нет, как я понимаю?

Это вся прога, которую заливаешь или кусок? Добавь хоть что-то, что покажет тебе работоспособность МК. Мож у тебя кварц не генерит или внутри кусок пластмассы вместо кремния :)
0
0 / 0 / 0
Регистрация: 03.05.2012
Сообщений: 141
12.08.2012, 09:04
Есть в кильдыме :) С1-78. Но его нужно калибровать.

Да, это вся прога. Камень лампочки гоняет на ура :)
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 09:15
Цитата Сообщение от Xomuk
Есть в кильдыме :) С1-78. Но его нужно калибровать.
А что это? Тебе поприкалываться захотелось - слава Богу! Значит, попустило. Я уже не переживаю за молоток и камешек.
0
0 / 0 / 0
Регистрация: 03.05.2012
Сообщений: 141
12.08.2012, 09:32
Это 26 кг высохшего барахла, в котором куча золота и платины :) Щас мультиметром померял, на ТХ постоянно 4.75в, а RX дергается в конвульсиях от 0.0 до 0.1. Поставил дилей на отправку символа "K", но ТХ всерно 4.75, а RX по своему дрыгается, как ей хочется...
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 09:41
Фигово без осцилла.

Ну, тогда начинай кбеждаться, что ты хотя бы ходишь по проге. Например, сконфигурируй свободную ногу на выход, запиши тудЫ "0" и инвертируй ее каждый раз в основной петле. Если после сброса нога станет в "0" - значит ее инициализация прошла, но в main ты не крутишься. Если осталась в "1", значит и инициализации не прошло. Если там половина VCC - радостно сообщи нам, что прога в main loop лупится.
Да, вот так, шажками. Выискивать, где ты там в коде ноль с единичкой спутал - не в моем вкусе. Это ЩАС народ проснется, поковыряют. А я вот советую сверху вниз ехать. То есть, искать ГДЕ прога не работает, а не ПОЧЕМУ.
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
12.08.2012, 10:37
вот две строчки
Code
1
2
UBRR0H = (unsykned char) (ubrr>>8);
UBRR0L = (unsykned char) ubrr;
Поменяй их местами, и чуть подправь, чтобы было так
Code
1
2
UBRR0L = (0xFF & ubrr);
UBRR0H = (ubrr>>8);
Если заработает, то иди сюда за объяснениями)

UPD, три раза подправлял код, так что убедись что самый последний вариант попробовал.
0
0 / 0 / 0
Регистрация: 03.05.2012
Сообщений: 141
12.08.2012, 10:42
Увы, но он все равно противится :(

PS: И последний тоже попорбовал.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 10:44
Цитата Сообщение от itysiy
Поменяй их местами,
Не надо. Последним надо писать именно младший:


<Изображение удалено>
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 10:44
Цитата Сообщение от Xomuk
Увы, но он все равно противится :(
А ты противишься советам. Смотри, МК у тебя учится :)
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 181
12.08.2012, 10:47
Попробуй так сделать.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 10:48
Цитата Сообщение от itysiy
три раза подправлял код, так что убедись что самый последний вариант попробовал.
Ну да, кстати, очистить страший байт перед записью в младший UBRR есть смысл...
Но порядок записи правильный был
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 10:53
Цитата Сообщение от s_btosk
Попробуй так сделать.
И что ты там сделал иначе? Или слово "так" имеет значение "скопируй все-всешеньки, мож получится"?
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 181
12.08.2012, 11:02
Цитата Сообщение от drvtos
Цитата Сообщение от s_btosk
Попробуй так сделать.
И что ты там сделал иначе? Или слово "так" имеет значение "скопируй все-всешеньки, мож получится"?
Для начала можно и скопировать, залить в камень, посмотреть результат и убедится, что железо собрано правильно. А вообще я старался показать общий подход к решению такой проблемы.
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
12.08.2012, 11:10
Code
1
2
3
4
5
UBRRH = HI(bauddivider);
UBRRL = LO(bauddivider);
UCSRA = 0;
UCSRB |= 0 << RXEN |  0 << RXCIE |  1 << TXEN;
UCSRC = 1<<URSEL|1<<UCSZ0|1<<UCSZ1;
Вот моя инициализация из рабочего проекта.
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
12.08.2012, 11:14
Цитата Сообщение от drvtos
Цитата Сообщение от itysiy
Поменяй их местами,
Не надо. Последним надо писать именно младший:
UBRRL.jpg
ох щи, я отовсюду копипастил свою инициализацию, где сначала младший регистр. Работало потому что в старшем на моих скоростях всегда нули. Понадобилась бы маленькая скорость, сидел бы искал ошибку часами.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
12.08.2012, 11:20
Цитата Сообщение от s_btosk
Для начала можно и скопировать, залить в камень, посмотреть результат и убедится, что железо собрано правильно. А вообще я старался показать общий подход к решению такой проблемы.
А, тогда извини за наезд. Именно это я тоже пробую уважаемому ТС показать :)
0
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 523
12.08.2012, 13:15
1<<UCSZ1;вот кусок кода, который и я забыл в свое время вставить :) сейчас у ТСа все получится, ставлю бутылку уманского пива.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2012, 13:15
Помогаю со студенческими работами здесь

Помогите связать два AVR через USART
Здравствуйте. Никак не могу повязать ATMEGA16 и Attiny2313 через USORT. Хочу сделать устройство пропорционального инфракрасного ДУ. ...

помогите разобраться с USART для AVR crumb2560
Доброго времени суток! Мне необходимо связать плату Avr crumb2560 c ПК по rs-232, для написания программы воспользовался генератором из...

xmega: usart - какой глубины буфер в USART?
Взялся тут &quot;запилить&quot; на xmego32a4 мультиплексор двух rs232 в один rs485. Все как бы получилось и почти работает (надо код почистить и...

передача данных с 2 портов can и 1 usart в usart
Доброго времени суток форумчане! Пытаюсь написать код для stm32f4disko с помощью которого можно читать данные с 2 can и usart. насколько я...

Помогите пожалуйста разобраться с USART
Здравствуйте. Недавно начал изучать микроконтроллер STM32 на плате F4Dyscovery. Всё бы ничего. Но дошёл до UART. Хотел побаловаться с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru