Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.11.2014, 10:57   #151
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Цитата:
Сообщение от Admin Посмотреть сообщение
Вот вырезал из библиотеки фунуфию чтения и отправки данных

Там же есть функция отправки данных, как раз для тебя на ASM-е
Вот этот код реально работает быстрее, но
я его закоментирова, так как не все устройства успевают переходить в режим готовности

PHP код:
    __asm__ volatile
             
(
             
".spi_not_ready: out %[spdr], %[spi_data]"    "\n\t" //отправляем пользовательские данные в SPI
             
"in __tmp_reg__,%[spsr]"                "\n\t"    //Читаем регистр SPSR
            
"sbrs __tmp_reg__, %[spif]"                "\n\t"    //и проверяем флаг SPIF
            
"rjmp .spi_not_ready"                    "\n\t"    //если данные не отправлены повторяем процедуру
             
::
            [
spsr"I" (_SFR_IO_ADDR(SPSR)),
            [
spif"I" (SPIF),
            [
spdr"I" (_SFR_IO_ADDR(SPDR)),
            [
spi_data"r" (SPI_data)
             ); 
Может её оформить как "uint8_t TransferSPI(uint8_t SPI_data)" ?

А как на счет включения в либу выше приведенных макросов для автоподстановки номера pin'а (D##x##_) ?
HiddenPilot вне форума   Ответить с цитированием
Старый 25.11.2014, 11:59   #152
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

К сожалению библиотека под Мегу 2560 адаптирована частично, благодаря Bulatovor
Вы тоже можете внести свой вклад
Admin вне форума   Ответить с цитированием
Старый 25.11.2014, 12:00   #153
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

Цитата:
Сообщение от HiddenPilot Посмотреть сообщение
А как на счет включения в либу выше приведенных макросов для автоподстановки номера pin'а (D##x##_) ?
Включу

Цитата:
Может её оформить как "uint8_t TransferSPI(uint8_t SPI_data)" ?
Что бы окончательно запутать новичков
Admin вне форума   Ответить с цитированием
Старый 30.11.2014, 15:16   #154
Verlaty
Junior Member
 
Регистрация: 30.11.2014
Сообщений: 2
Вес репутации: 0
Verlaty is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Добрый день.
Может быть плохо использовал поиск. Заранее извиняюсь.
Не так давно занимаюсь использованием Arduino, поэтому вопросы могут быть банальными.
Суть вопроса вот в чем. Необходимо соединить две ардуины по uart через беспроводную связь.
В передатчике формирую массив. Хочу передать массив и в приемнике его использовать.
Так как использую CyberLib, а в описании есть такая команда как UART_SendArray(array, size array);
Возник вопрос как принимать переданный массив. Есть ли команда типа UART_ReadArray(.....)?
Verlaty вне форума   Ответить с цитированием
Старый 30.11.2014, 15:25   #155
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

Я бы в начале массива передал идентификатор
Принимать массив лучше функцией Serial.read()
Принимаете по одному байту и складываете в массив
Admin вне форума   Ответить с цитированием
Старый 30.11.2014, 16:35   #156
Verlaty
Junior Member
 
Регистрация: 30.11.2014
Сообщений: 2
Вес репутации: 0
Verlaty is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Цитата:
Сообщение от Admin Посмотреть сообщение
Я бы в начале массива передал идентификатор
Принимать массив лучше функцией Serial.read()
Принимаете по одному байту и складываете в массив
Как раз таки в массиве у меня задаются значения для трех исполнительных механизмов, то есть на приемной части мне надо из него взять нужную информацию.
Иными словами эта команда UART_SendArray формирует строку. Вначале строки вставляем идентификатор, передаем, принимаем строку, а потом по байтам из нее выбираем нашу информацию.
Verlaty вне форума   Ответить с цитированием
Старый 30.11.2014, 17:38   #157
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

Цитата:
UART_SendArray формирует строку.
Эта функция отправляет весь массив, но в порт данные посылаются побайтно, строка тут не причем
идентификатор лучше добавить в начало массива
Admin вне форума   Ответить с цитированием
Старый 09.02.2015, 05:35   #158
Mastar
Junior Member
 
Регистрация: 31.03.2014
Сообщений: 19
Вес репутации: 0
Mastar is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Я посмотрел, что beep() работает только на 11 пине и не внесена в keywords.txt, поэтому я дописал и выкладываю пакет сюда.
Используются D0-D13.
Вызов теперь выглядит так D9_Beep(dur, frq)
Вложения
Тип файла: zip CyberLib.zip (12.7 Кб, 309 просмотров)
Mastar вне форума   Ответить с цитированием
Старый 11.03.2015, 05:17   #159
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

Цитата:
Данным подходом, полностью решена проблема перенастраиваемых дефайнами пинов.
Т.е. данную конструкцию можно использовать аналогично с digitalRead(pin), при чем абсолютно не теряя в скорости ни одного такта.
Эдуард, а вот с этим вопросом как? Ты включил это в либу? И если да, то как теперь можно писать в скече?
stD вне форума   Ответить с цитированием
Старый 11.03.2015, 13:27   #160
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

К сожалению еще не добавил

Цитата:
Я посмотрел, что beep() работает только на 11 пине и не внесена в keywords.txt, поэтому я дописал и выкладываю пакет сюда.
Используются D0-D13.
Вызов теперь выглядит так D9_Beep(dur, frq)
Заодно тоже добавлю
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 18 (пользователей: 0 , гостей: 18)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:48. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика