Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 1
Регистрация: 11.02.2015
Сообщений: 83

Работа с UART ATMega8

11.02.2015, 11:17. Показов 1938. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Использую эту программу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
 
void main(void) {
    // USORT initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USORT Receiver: Off
    // USORT Transmitter: On
    // USORT Mode: Asynchronous
    // USORT Baud Rate: 9600
    UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
    UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
    UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
 
    while(1) {
        putsf("Hello, world!"); 
        delay_ms(1000);
    }
}
Приходит:
Что то не то с кодировкой что-ли...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2015, 11:17
Ответы с готовыми решениями:

Использование UART в ATMega8
Доброго времени суток! Столкнулся с проблемой написания программы на C для микроконтроллера ATMega8 Что нужно сделать: при получении...

Работа в Proteus. Atmega8 + светодиодная матрица
Не могу понять как собрать схему в программе proteus... В схеме должно быть МК Atmega8 и матрица светодиодов например 10х10......

MSP430F5435A. Работа с UART
написал такую програмку для отправки по UART... эффекта нету, со стороны схемы всё норм, в чём проблема? #include...

5
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
11.02.2015, 11:22
Цитата Сообщение от bartle Посмотреть сообщение
// USORT Baud Rate: 9600
где и чем вы его задаете? Посмотите в ДШ контроллера. У него для этого есть специальные регистры.
0
1 / 1 / 1
Регистрация: 11.02.2015
Сообщений: 83
11.02.2015, 11:44  [ТС]
C++
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <mega8.h>
#include <stdio.h>
 
int i;
int lng;
char mystr[]="Atmega8 UART ready!";
char rc;
 
void lampOFF()
{
    PORTB.0=0;
}
 
void lampON()
{
    PORTB.0=1;
}
 
void initUART()
{
    UCSRB|=(1<<3)|(1<<4);   
    UBRRH=0x00;
    UBRRL=0x33;
}
 
void main(void)
 
{
    DDRB.0=1;
    initUART();
 
    lng=19;
    for (i=0; i < lng; i++)    {
        while ( !( UCSRA & (1<<5)) ) {}
        UDR=mystr[i];
    }
 
    while (1)
    {
        if ((UCSRA & (1<<7)))
        {
            rc=UDR;
        }
 
        switch (rc)
        {
            case '1': lampON(); break;
            case '2': lampOFF(); break;
        }
 
    }
 
}
И вот что пришло:
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
11.02.2015, 12:50
Лучший ответ Сообщение было отмечено bartle как решение

Решение

Цитата Сообщение от bartle Посмотреть сообщение
UCSRA & (1<<5)
- в такой записи мало смысла - называйте в коде флаги своими именами - вы ж потом сами не разберетесь. я вот, скажем, не помню что означает 5й бит в UCSRA...

Ну, и все еще неправильно настроена скорость. По-простому, не меняя кода, просто пощелкайте скорости в программе - возможно, она в 8 раз меньше (1200). Тогда очевидно, проц работает на на той частоте, которую вы предполагаете.
1
1 / 1 / 1
Регистрация: 11.02.2015
Сообщений: 83
11.02.2015, 13:35  [ТС]
Да!! Спасибо! Поставил 1200 все работает)
Странно эта строчка не говорит о скорости? UBRRL=0x33;
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
11.02.2015, 14:45
Цитата Сообщение от bartle Посмотреть сообщение
Странно эта строчка не говорит о скорости? UBRRL=0x33;
Эта строчка работает вместе с UBRRH=0, причем, в ДШ описаны ньюансы использования этого 16-битного регистра. Будьте внимательны в дальнейшем. Она говорит лишь о делителе частоты UART'а по отношению к тактовой частоте CPU. А задание тактовой частоты в Меге подробно описано в ДШ - это несколько регистров, выбирающих источник тактования и делитель. Частично они доступны из кода, частично программируются фьюзами. То, что вы в проекте задаете какую-то там частоту - это всего лишь привязка к ней в коде, не никак не по факту.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2015, 14:45
Помогаю со студенческими работами здесь

Работа с UART в МК ATMega8
Не хочет работать передача данных. Подключаю к ножкам PD0 и PD1 через USB/UART TTL конвертор CH340G. #include &lt;mega8.h&gt; ...

Работа с UART ATMega8
к примеру надо отправить число 21367 в ком порт с атмеги8 чтобы потом на компе программой считать. набросал программку ...

Atmega8 проблема с UART
Здравствуйте, столкнулся с проблемой отправки данных на ПК по интерфейсу UART, суть проблемы в том что в терминал приходят не те символы. ...

UART Atmega8 Terminal
Всем доброго времени суток! У меня есть код : #define F_CPU 8000000UL #include &lt;avr/io.h&gt; #include &lt;string.h&gt; void...

DS18B20->Atmega8->UART
Всем привет! Я ломаю голову над тем, как передавать температуру по UART, а именно как предоставить измеренное датчиком цифровое...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru