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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.11.2014, 10:57   #11
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 вне форума   Ответить с цитированием
 


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

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

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

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


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


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