0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 228
1

Обмен данных между Attiny2313 и Arduino

08.09.2021, 15:14. Показов 711. Ответов 5
Метки нет (Все метки)

Доброго времени суток. Подскажите куда копать дальше. Делаю обмен данными между ардуино и тинькой 2313, но что то не получается. Моделирую в протеусе. Один элемент массива передается, а потом ошибки и что попало передает.
0
Миниатюры
Обмен данных между Attiny2313 и Arduino  
Вложения
Тип файла: zip sketch_aug20a.zip (630 байт, 6 просмотров)
Тип файла: zip wet2.zip (86.8 Кб, 6 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2021, 15:14
Ответы с готовыми решениями:

Arduino обмен данные между Arduino
Доброго времени суток, писал код обмен данных между двумя ардуинкой, отправляю из одной ардуинку...

Обмен данными между Arduino и esp8266
Изначальная задача состоит в том, что мне надо передавать данные(разные датчики) с ардуины на...

(c#, xamarin, andriod) Обмен данных по usb с arduino
идея: устройство с ос андроид ведёт какие-то сложные вычисления, а потом передаёт заранее...

Передача массива данных между Arduino
Всем доброго времени суток! Для передачи между Arduino Uno и Arduino Mega использую библиотеку...

5
500 / 277 / 52
Регистрация: 21.09.2008
Сообщений: 916
09.09.2021, 21:18 2
mega2411, инициализация USART выполнена почти без ошибок. Бит USBS управляющего регистра UCSRC должен быть сброшен, у Вас он установлен, что означает два стоп-бита вместо одного. Т.е. должна быть запись в функции USART_Init():
C
1
2
...
UCSRC = (1<<UCSZ1)|(1<<UCSZ0); // Set frame format to 8 data bits, no parity, 1 stop bit
Мне не нравится реализация функции передачи со стороны ATtiny2313:
C
1
2
3
4
5
6
7
8
9
10
11
12
void USART_Transmit2(char *sendAdr, char size_sendAdr)
{
    unsigned char z = 0;
    while (z < size_sendAdr)
    {
        if ((UCSRA & (1 << UDRE)) && (z < size_sendAdr))
        {
            UDR = sendAdr[z];
            z++;
        }
    }
}
Я бы переписал её так:
C
1
2
3
4
5
6
7
8
9
10
11
void USART_Transmit2(char *sendAdr, char size_sendAdr)
{
  unsigned char z = 0;
  if (z < size_sendAdr) {
    while (!(UCSRA & (1 << UDRE))) {
      ;
    }
    UDR = sendAdr[z];
    ++z;
  } 
}
Как я понимаю, чтение идёт не через обработчик прерываний приема USART0_RX_vect, поэтому в целях отладки флаг разрешений RXCIE в UCSRB можно не устанавливать.
1
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 228
10.09.2021, 03:19  [ТС] 3
Цитата Сообщение от sharpey Посмотреть сообщение
инициализация USART выполнена почти без ошибок
спасибо большое.
0
500 / 277 / 52
Регистрация: 21.09.2008
Сообщений: 916
10.09.2021, 19:22 4
mega2411, заработало?
0
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 228
14.09.2021, 08:52  [ТС] 5
Цитата Сообщение от sharpey Посмотреть сообщение
заработало?
заработало
0
1918 / 1234 / 123
Регистрация: 04.01.2010
Сообщений: 4,420
18.09.2021, 09:06 6
Цитата Сообщение от sharpey Посмотреть сообщение
Я бы переписал
..единственная ремарка - в строчке 4 надо "if" поменять на "while". Но у автора тоже, в общем, будет работать. Разве что в его строке 6 второе условие не нужно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2021, 09:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Обмен данных между формами
Ктонибудь может подсказать как можно передать данные между формами? Добавлено через 5 часов 34...

обмен данных между стеками
Организовать обмен данных между двумя стеками,один из которых построен на статической памяти,а...

Обмен данных между классами
Как в данном случае можно использовать значения переменных класса Input в классе Calculating? //...

Обмен между УТ 10.3 и БП 3.0 с конвертации данных
Доброго дня. написал правила в конвертации данных (типовые использовать не стал, потому что УТ 10.3...

Обмен данных между потоками
Имеется 2 потока (основной и рабочий) В рабочем потоке появляется строка, которая должна...

Обмен данных между приложениями
Добрый день! Такая задача, клиент базы данных Oracle стоить 32 битный, а приложение которое должно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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