Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер Отладьте программу, которая вычисляет факториал числа, записанного в регистр R0 http://www.cyberforum.ru/avr/thread1438459.html
отладьте программу, которая вычисляет факториал числа, записанного в регистр R0. БЕЗ рекурсии
Atmega AVR микроконтроллер Подключение BTM-222 к ATMEGA16 Хочу создать машинку на bluetooth управлении. Нашел статью http://avr-mk.blogspot.com/2010/03/bluetooth-btm-222-avr.html Спаял по схеме. Создал схему с контроллером. Написал программу. Проверил в... http://www.cyberforum.ru/avr/thread1438143.html
Atmega AVR микроконтроллер По нажатию кнопки вывести данные на дисплей HD44780 ATMega16 AVR Studio GCC
Здравствуйте, уважаемые любители-программисты. Нуждаюсь в небольшой помощи по программированию микроконтроллера. Задача: необходимо по нажатию кнопки вывести данные на дисплей. Программировать...
Atmega AVR микроконтроллер Управление шаговым двигателем на Attiny2313
нужен программный код на C и С++ Короче имеются две кнопки(влево и вправо).При нажатии на них соответственно двигатель поворачивается влево и вправо.
Atmega AVR микроконтроллер Генератор специальных функций (синуса, пилы на базе ШИМ) http://www.cyberforum.ru/avr/thread1435467.html
Мне нужно создать генератор специальных функций: пилообразный, синусоидальный сигналы (на основе ШИМ). При этом отсчеты сигналов за период хранить в виде констант в памяти программ частота...
Atmega AVR микроконтроллер Cумма элементов массива (ATMega128, AVR Studio 4) Инициализировать массив натуральных чисел от 0 до 900 и найти сумму его эл-ов. .include "m128def.inc" .EQU Number = 900 .DSEG N: .BYTE 2 SUM: .BYTE 4 ARRAY .BYTE 2*NUMBER подробнее
flatgad
geJI<|>eP
186 / 186 / 18
Регистрация: 22.07.2010
Сообщений: 733
15.05.2015, 17:35  [ТС] 0

Работа с UART (ATMega328)

15.05.2015, 17:35. Просмотров 7252. Ответов 13
Метки (Все метки)

Ответ

Вопрос появился ещё один принимаю байты и если есть байт конца последовательности присутствует "FF" я отправляю эхо с теме же данными но проблема стала в неожиданном месте. При передачи набора байт где есть 0 я получаю не полный ответ эха пример :

Отправляю 04 01 FF - Принимаю 04 01 FF

Отправляю 04 01 00 FF - Принимаю эхо 04 01

Как с нулем быть подскажите ?

Вот полный код :
Кликните здесь для просмотра всего текста

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
 
#define FOSC 8000000UL // Clock Speed
#define BAUD 4800L
#define MYUBRR FOSC/16/BAUD-1
 
#define BUFFER_UART_SIZE 32
uint8_t Nbyte=0;
static uint8_t buff_uart[BUFFER_UART_SIZE]; 
 
 
void USORT_Init(unsigned int ubrr){
    UBRR0H = (unsigned char)(ubrr>>8);
    UBRR0L = (unsigned char)ubrr;
    /*Enable receiver and transmitter */
    UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0)|(1<<TXCIE0);
    /* Set frame format: 8data, 2stop*/
    UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}
 
void USORT_Transmit( char data )
{
    /* Wait for empty transmit buffer */
    while ( !( UCSR0A & (1<<UDRE0)) );
    /* Put data into buffer, sends the data */
    UDR0 = data;
}
 
void USORT_Transim_String(char * data){
    unsigned char d;
    while(*data){
        d = *data++;
        USORT_Transmit(d);
    }
}
 
char USORT_Receive( void )
{
    /* Wait for data to be received */
    while ( !(UCSR0A & (1<<RXC0)) );
    /* Get and return received data from buffer */
    return UDR0;
}
 
void ClearBuffUart(void){
    for(int i=0;i<BUFFER_UART_SIZE;i++){
        buff_uart[i]=0;
    }   
}
 
ISR(USORT_RX_vect)
{
    unsigned char b;
    b = UDR0;
    buff_uart[Nbyte] = b;
    Nbyte++;
    if (b == (int16_t)0xFF){
        USORT_Transim_String(buff_uart);
        Nbyte = 0;
        ClearBuffUart();
    }   
    if (Nbyte>=BUFFER_UART_SIZE){
        USORT_Transim_String(BUFFER_UART_SIZE);
        Nbyte = 0;
        ClearBuffUart();
    } 
}
 
void main( void ){
    USORT_Init(MYUBRR);
    sei();
    while(1){
    }
}


Вернуться к обсуждению:
Работа с UART (ATMega328)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2015, 17:35

Работа с UART (Си, ATtiny 2313)
Дорогие формчане и знатаки по микроконтролёрам я Новичок в этом деле. У меня есть вопрос, есть...

работа с UART (IDE WinAVR)
предыстория: есть мега88 с кварцем 20МГц (уж какой нашёл), также есть код, сгенерённый CvAVR для...

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru