Цитата Сообщение от Ozz_Klochkov Посмотреть сообщение
Доработал скетч для ардуинки таким образом:
PHP код:
#include <CyberLib.h>

unsigned long nTimerTimet;

void setup() 
{
  
UART_Init(115200);
  
StartSPI(081);//MODE0, DIV8, MSBFIRST
  
for(int16_t z=0z<768z++) SendSPI(0); //погасить все пикселы ленты
  
delay_ms(1); //пауза для инициализации ленты
}

uint8_t mas_data[3];
uint8_t j=0;
void loop() 
Start
 uint8_t data

  
millis(); //получаем текущее время
  
UART_SendByte(170); //отправляем байт синхронизации для ПК
   
if (UART_ReadByte(data))  //ждем от ПК первый байт с колличеством пикселей ленты
      
{
         
uint16_t pix_num data*3;  //получаем общее колличество цветовых каналов ленты 
         
uint16_t eTime micros()-rTime//получим время с момента окончания загрузки
         
if( eTime 900delay_us(eTime);  //ждем полной инициализации (минус 100мкс для загрузки след. байта) 
            
for(uint16_t i=0i<pix_numi++) 
            {
        
//получаем значения для всех цветов, а затем отсылаем на ленту в нужном нам порядке
              
if(j==2)
              {
                
mas_data[j]=uart_read();
                
SendSPI(mas_data[0]);  //Синий
                
SendSPI(mas_data[2]);  //Зелёный
                
SendSPI(mas_data[1]);  //Красный
                
j=0;
              }
              else
              {
                
mas_data[j]=uart_read(); 
                 
j++;
              }
            }
            
rTime micros(); //стартуем счетчик времени инициализации ленты
             
nTime t// //обнулить время простоя 
      
} else {  
               if((
nTime) > 4000///гасим подсветку если нет потока более 2 сек
                
{  
                 for(
int16_t z=0z<768z++) SendSPI(0); //погасить все пикселы ленты
                 
nTime t
                }  
              }     
End }    
//***************************************************************************
unsigned char uart_read(void)
{
  
uint8_t val;
  for (
uint8_t i=0i<255; ++i//цикл ожидания байта данных из UART порта, время ожидания 2560мкс
    

      if(
UART_ReadByte(val)) break; //если байт данных получен, то цикл прерывается
      
delay_us(10);      //время ожидания байта
    

    return 
val;

Использовать на компе в таком случае надо версию на BRG из второго поста темы.

О! Спасибо! В воскресенье попробую.