Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Примеры применения в среде Баском » Исследование адресных RGB_W светодиодов WS2812


Исследование адресных RGB_W светодиодов WS2812

Сообщений 1 страница 13 из 13

1

Исследование адресных RGB_W светодиодов WS2812

+1

2

Регулировка яркости светиков путём изменения тока питания.

https://upforme.ru/uploads/0000/25/b8/1217/t773435.jpg

Начинает светиться с 1.7 ВОЛЬТА, правда запаливается, только красный, с 2.2в запаливаетя зелёный, с 2.7в появляется синий

Регулировка осуществляется посредством PWM (ШИМ) с Atmega, в данном тесте частота PWM (ШИМ) ~ 62 кГц, при частоте МК 16 МГц

+1

3

кекс и схема в diptrace

+2

4

LMV321 max U вых = 4,2 В
MCP6021_MCP6021R - не угадал с распиновкой, питание отличается
AD8541 - заработала адекватно, Uвх = 5 в, U вых = 4,9 в

Энкодер вертит яркость, с шагом 1 пункт 8 бит PWM

https://upforme.ru/uploads/0000/25/b8/1217/t605887.jpg

+1

5

А исходники затерялись, или их не було?  :cool:

0

6

+2

7

radan написал(а):

А исходники затерялись, или их не було?

Да кому они нужны, главное сам факт возможность регулировать яркость

0

8

sasha_1973 написал(а):

Да кому они нужны, главное сам факт возможность регулировать яркость

А как же тема - "Исследование адресных RGB_W"?
У меня только есть управление RGB. А RGB_W НЕТУуу!!!
Колись, Александр!

0

9

Первоисточник HSV to RGB наш многоуважаемый Radan-чик

Время выполнения оригинального варианта:
'C локальными переменными 2592 такта
'C глобальными переменными 2344 такта

Sub Hsv2rgb(byval In_h As Byte , Byval In_s As Byte , Byval In_v As Byte , Out_r As Byte , Out_g As Byte , Out_b As Byte)

Sub Hsv2rgb(byval In_h As Byte , Byval In_s As Byte , Byval In_v As Byte , Out_r As Byte , Out_g As Byte , Out_b As Byte)
   Local Hr As Byte
   Local Hg As Byte
   Local Hb As Byte
   Local Sr As Byte
   Local Sg As Byte
   Local Sb As Byte
   Local Tmp As Byte
   Local Temps As Word

   'Получим логарифмические значения цвета RGB каналов для заданного цвета из расчитанной таблицы
   Hr = Lookup(in_h , Hsv_r)
   Hg = Lookup(in_h , Hsv_g)
   Hb = Lookup(in_h , Hsv_b)

   'Получим значения насыщенности
   In_s = Lookup(in_s , Saturation)
   Temps = Hr * In_s
   Temps = Temps / 256
   Temps = Temps + 255
   Temps = Temps - In_s
   Sr = Temps
   Temps = Hg * In_s
   Temps = Temps / 256
   Temps = Temps + 255
   Temps = Temps - In_s
   Sg = Temps
   Temps = Hb * In_s
   Temps = Temps / 256
   Temps = Temps + 255
   Temps = Temps - In_s
   Sb = Temps

   'Получим значения яркости
   In_v = Lookup(in_v , Value)
   Temps = In_v * Sr
   Temps = Temps / 256
   Out_r = Temps
   Temps = In_v * Sg
   Temps = Temps / 256
   Out_g = Temps
   Temps = In_v * Sb
   Temps = Temps / 256
   Out_b = Temps
End Sub

Как частенько это бывает, усё стало не успевать и опаздывать. Потребовалось ускорение.
Простым методом оказалась замена "Temps = Temps / 256" на Shift Temps , Right , 8
Получилось с глобальными переменными 1210 тактов, но это всё равно долго.

Как обычно в подобных случаях выручает ASM AVR.

290 тактов МК с глобальными переменными, ускорение от первоисточника в ~9 раз

$map       ' Получаем карту распределения памяти компилятором Bascom
  $regfile = "m1284def.dat"       ' Используемый контроллер
  $crystal = 16000000       ' 8 МГц    , кварц для стабильной работы USART во всём диапазоне скоростей передачи и приёма
  $framesize = 512       'размер области используемой и необходимой для преобразований
  $hwstack = 512       ' Размер аппаратного стека
  $swstack = 512       ' Размер программного стека

Config Rainbow = 1 , Rb0_len = 19 , Rb0_port = Porta , Rb0_pin = 4
'                                                               ^--- connected to pin 3
'                                             ^--------------------- connected to portD
'                             ^------------------------------------- 49 leds on stripe
'               ^--------------------------------------------------- 1 channel

Const Led_len = 3       'Anzahl der verwendeten WS2812B
Const Farbspeicher = 3 * Led_len
Dim Led_array(farbspeicher) As Byte
Const Beginn_rot = Led_len + 1
Const Beginn_blau = Beginn_rot + Led_len
Dim Gruen(led_len) As Byte At Led_array(1) Overlay
Dim Rot(led_len) As Byte At Led_array(beginn_rot) Overlay
Dim Blau(led_len) As Byte At Led_array(beginn_blau) Overlay
Dim N1 As Byte
Dim N2 As Byte
Dim N3 As Byte
Dim Color(3) As Byte
 
R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)

  Dim Count_rgb_1 As Byte
  Dim In_h As Byte
  Dim In_s As Byte
  Dim In_v As Byte

                                                                         
Rb_selectchannel 0       ' select first channel
Rb_clearcolors       'clear colors in memory

'НАЧАЛЬНЫЕ ЗНАЧЕНИЯ ПАЛИТРЫ
N1 = 0
N2 = 64
N3 = 128

Dim Rgb_1(20) As Byte

  Rgb_1(1) = 0
  Rgb_1(2) = 16
  Rgb_1(3) = 32
  Rgb_1(4) = 48
  Rgb_1(5) = 64
  Rgb_1(6) = 80
  Rgb_1(7) = 96
  Rgb_1(8) = 112
  Rgb_1(9) = 128
  Rgb_1(10) = 144
  Rgb_1(11) = 160
  Rgb_1(12) = 176
  Rgb_1(13) = 192
  Rgb_1(14) = 208
  Rgb_1(15) = 224
  Rgb_1(16) = 240
  Rgb_1(17) = 0
  Rgb_1(18) = 16
  Rgb_1(19) = 32

do

   Rb_selectchannel 0

   For Count_rgb_1 = 1 To 19
       Count_rgb_1_1 = Count_rgb_1 - 1
       
       'Call Hsv2rgb(rgb_1(count_rgb_1) , 255 , 255 , R , G , B)

       In_h = Rgb_1(count_rgb_1)
       In_s = 255
       In_v = 255
       Gosub Sub_hsv2rgb

       Incr Rgb_1(count_rgb_1)
       Rb_setcolor Count_rgb_1_1 , Color(1)
   Next Count_rgb_1

   Rb_send

   
   Waitms 20 
   

loop
end

'===============================================================================
'На ASM 290 тактов
'Получим логарифмические значения цвета RGB каналов для заданного цвета из расчитанной таблицы
'===============================================================================
  Sub_hsv2rgb:
'-------------------------------------------------------------------------------
    !lds R16 , {In_h}
    !clr R17
   '=================================
    Loadwordadr Hsv_red
    !add R30 , R16
    !adc R31 , R17
    !lpm R18 , Z
   '=================================
    Loadwordadr Hsv_green
    !add R30 , R16
    !adc R31 , R17
    !lpm R19 , Z
   '=================================
    Loadwordadr Hsv_blue
    !add R30 , R16
    !adc R31 , R17
    !lpm R20 , Z
   '=================================
     !lds R16 , {In_s}
   '=================================
    Loadwordadr Saturation
    !add R30 , R16
    !adc R31 , R17
    !lpm R16 , Z
   '=================================
    !Mul R18 , R16
    !movw R30 , R0
   '=================================
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
   '=================================
    !ldi R21 , 255
    !add R30 , R21
    !adc R31 , R17
    !sub R30 , R16
    !sbc R31 , R17
    !mov R18 , R30
   '=================================
    !Mul R19 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !add R30 , R21
    !adc R31 , R17
    !sub R30 , R16
    !sbc R31 , R17
    !mov R19 , R30
   '=================================
    !Mul R20 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !add R30 , R21
    !adc R31 , R17
    !sub R30 , R16
    !sbc R31 , R17
    !mov R20 , R30
  '===============================
    !lds R16 , {In_v}
    Loadwordadr Brightness
    !add R30 , R16
    !adc R31 , R17
    !lpm R16 , Z
  '===============================
    !Mul R18 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !sts {Color(_base)} , R30
  '===============================
    !Mul R19 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !sts {Color(_base)+1} , R30
  '===============================
    !Mul R20 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !sts {Color(_base)+2} , R30
'-------------------------------------------------------------------------------
  Return
'===============================================================================

'===============================================================================
  Saturation:       'Насыщенность
'-------------------------------------------------------------------------------
    Data 0 , 6 , 12 , 17 , 22 , 27 , 32 , 37 , 42 , 46 , 51 , 55 , 59 , 64 , 68 , 72
    Data 76 , 80 , 84 , 87 , 91 , 94 , 98 , 101 , 105 , 108 , 111 , 114 , 117 , 120 , 123 , 126
    Data 129 , 131 , 134 , 137 , 139 , 142 , 144 , 147 , 149 , 151 , 154 , 156 , 158 , 160 , 162 , 164
    Data 166 , 168 , 170 , 172 , 174 , 175 , 177 , 179 , 180 , 182 , 184 , 185 , 187 , 188 , 190 , 191
    Data 193 , 194 , 195 , 197 , 198 , 199 , 200 , 201 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210
    Data 211 , 212 , 213 , 214 , 215 , 216 , 217 , 217 , 218 , 219 , 220 , 221 , 221 , 222 , 223 , 224
    Data 224 , 225 , 226 , 226 , 227 , 228 , 228 , 229 , 229 , 230 , 231 , 231 , 232 , 232 , 233 , 233
    Data 234 , 234 , 235 , 235 , 235 , 236 , 236 , 237 , 237 , 238 , 238 , 238 , 239 , 239 , 240 , 240
    Data 240 , 241 , 241 , 241 , 242 , 242 , 242 , 242 , 243 , 243 , 243 , 244 , 244 , 244 , 244 , 245
    Data 245 , 245 , 245 , 246 , 246 , 246 , 246 , 246 , 247 , 247 , 247 , 247 , 247 , 248 , 248 , 248
    Data 248 , 248 , 248 , 249 , 249 , 249 , 249 , 249 , 249 , 250 , 250 , 250 , 250 , 250 , 250 , 250
    Data 250 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 252 , 252 , 252 , 252 , 252 , 252
    Data 252 , 252 , 252 , 252 , 252 , 252 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253
    Data 253 , 253 , 253 , 253 , 253 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254
    Data 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Brightness:       'Яркость
'-------------------------------------------------------------------------------
    Data 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
    Data 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2
    Data 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3
    Data 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 4
    Data 4 , 4 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 6
    Data 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8
    Data 8 , 8 , 8 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11
    Data 11 , 12 , 12 , 12 , 12 , 13 , 13 , 13 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16
    Data 16 , 16 , 17 , 17 , 18 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 21 , 22 , 22
    Data 23 , 23 , 24 , 24 , 25 , 25 , 26 , 27 , 27 , 28 , 28 , 29 , 30 , 30 , 31 , 32
    Data 32 , 33 , 34 , 35 , 35 , 36 , 37 , 38 , 39 , 39 , 40 , 41 , 42 , 43 , 44 , 45
    Data 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 55 , 56 , 57 , 58 , 59 , 61 , 62 , 63
    Data 65 , 66 , 68 , 69 , 71 , 72 , 74 , 76 , 77 , 79 , 81 , 82 , 84 , 86 , 88 , 90
    Data 92 , 94 , 96 , 98 , 100 , 102 , 105 , 107 , 109 , 112 , 114 , 117 , 119 , 122 , 125 , 127
    Data 130 , 133 , 136 , 139 , 142 , 145 , 148 , 151 , 155 , 158 , 162 , 165 , 169 , 172 , 176 , 180
    Data 184 , 188 , 192 , 197 , 201 , 205 , 210 , 214 , 219 , 224 , 229 , 234 , 239 , 244 , 250 , 255
'===============================================================================

'===============================================================================
  Hsv_red:       'Цветовой тон для R
'-------------------------------------------------------------------------------
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Hsv_green:       'Цветовой тон для G
'-------------------------------------------------------------------------------
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
'===============================================================================

'===============================================================================
  Hsv_blue:       'Цветовой тон для B
'-------------------------------------------------------------------------------
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
'===============================================================================

Кого смущают длинные повторяющиеся фрагменты, объясняю, многократные переходы с повторами сильно замедляют общее выполнение подпрограммы.

Как выглядит радуга
https://upforme.ru/uploads/0000/25/b8/1217/t162646.jpg

+4

10

sasha_1973 написал(а):

Простым методом оказалась замена "Temps = Temps / 256" на Shift Temps , Right , 8

Это должен был сделать компилятор. Си-шный именно так и поступает!

0

11

Ещё ускоряемся !

Обязательно в самом верху исходника!!!
  Dim Rampz_hsv_red As Byte
  Loadwordadr Hsv_red
  !in R16 , rampz
  !sts {Rampz_hsv_red} , R16

На ASM с заходом и выходом из подпрограммы = 189 тактов

'===============================================================================
'На ASM 189 тактов
'Получим логарифмические значения цвета RGB каналов для заданного цвета из расчитанной таблицы
'===============================================================================
  Sub_hsv2rgb:
'-------------------------------------------------------------------------------
    !lds R16 , {In_h}
    !clr R17
   '=================================
    !lds R24 , {Rampz_hsv_red}
    !LDI R30 , Low(Hsv_red * 2)
    !LDI R31 , High(Hsv_red * 2)
    !out rampz , R24
    !add R30 , R16
    !adc R31 , R17
    !elpm R18 , Z
   '=================================
    !LDI R30 , Low(Hsv_green * 2)
    !LDI R31 , High(Hsv_green * 2)
    !add R30 , R16
    !adc R31 , R17
    !elpm R19 , Z
   '=================================
    !LDI R30 , Low(Hsv_blue * 2)
    !LDI R31 , High(Hsv_blue * 2)
    !add R30 , R16
    !adc R31 , R17
    !elpm R20 , Z
   '=================================
     !lds R16 , {In_s}
   '=================================
    !LDI R30 , Low(Saturation * 2)
    !LDI R31 , High(Saturation * 2)
    !add R30 , R16
    !adc R31 , R17
    !elpm R16 , Z
   '=================================
    !Mul R18 , R16
    !movw R30 , R0
   '=================================
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
   '=================================
    !ldi R21 , 255
    !add R30 , R21
    !adc R31 , R17
    !sub R30 , R16
    !sbc R31 , R17
    !mov R18 , R30
   '=================================
    !Mul R19 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !add R30 , R21
    !adc R31 , R17
    !sub R30 , R16
    !sbc R31 , R17
    !mov R19 , R30
   '=================================
    !Mul R20 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !add R30 , R21
    !adc R31 , R17
    !sub R30 , R16
    !sbc R31 , R17
    !mov R20 , R30
  '===============================
    !lds R16 , {In_v}
    !LDI R30 , Low(Brightness * 2)
    !LDI R31 , High(Brightness * 2)
    !add R30 , R16
    !adc R31 , R17
    !elpm R16 , Z
  '===============================
    !Mul R18 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !sts {Color(_base)} , R30
  '===============================
    !Mul R19 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !sts {Color(_base)+1} , R30
  '===============================
    !Mul R20 , R16
    !movw R30 , R0
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !lsr R31
    !ror R30
    !sts {Color(_base)+2} , R30
'-------------------------------------------------------------------------------
  Return
'===============================================================================

'===============================================================================
  Saturation:                                               'Насыщенность
'-------------------------------------------------------------------------------
    Data 0 , 6 , 12 , 17 , 22 , 27 , 32 , 37 , 42 , 46 , 51 , 55 , 59 , 64 , 68 , 72
    Data 76 , 80 , 84 , 87 , 91 , 94 , 98 , 101 , 105 , 108 , 111 , 114 , 117 , 120 , 123 , 126
    Data 129 , 131 , 134 , 137 , 139 , 142 , 144 , 147 , 149 , 151 , 154 , 156 , 158 , 160 , 162 , 164
    Data 166 , 168 , 170 , 172 , 174 , 175 , 177 , 179 , 180 , 182 , 184 , 185 , 187 , 188 , 190 , 191
    Data 193 , 194 , 195 , 197 , 198 , 199 , 200 , 201 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210
    Data 211 , 212 , 213 , 214 , 215 , 216 , 217 , 217 , 218 , 219 , 220 , 221 , 221 , 222 , 223 , 224
    Data 224 , 225 , 226 , 226 , 227 , 228 , 228 , 229 , 229 , 230 , 231 , 231 , 232 , 232 , 233 , 233
    Data 234 , 234 , 235 , 235 , 235 , 236 , 236 , 237 , 237 , 238 , 238 , 238 , 239 , 239 , 240 , 240
    Data 240 , 241 , 241 , 241 , 242 , 242 , 242 , 242 , 243 , 243 , 243 , 244 , 244 , 244 , 244 , 245
    Data 245 , 245 , 245 , 246 , 246 , 246 , 246 , 246 , 247 , 247 , 247 , 247 , 247 , 248 , 248 , 248
    Data 248 , 248 , 248 , 249 , 249 , 249 , 249 , 249 , 249 , 250 , 250 , 250 , 250 , 250 , 250 , 250
    Data 250 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 252 , 252 , 252 , 252 , 252 , 252
    Data 252 , 252 , 252 , 252 , 252 , 252 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253
    Data 253 , 253 , 253 , 253 , 253 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254
    Data 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Brightness:                                               'Яркость
'-------------------------------------------------------------------------------
    Data 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
    Data 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2
    Data 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3
    Data 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 4
    Data 4 , 4 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 6
    Data 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8
    Data 8 , 8 , 8 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11
    Data 11 , 12 , 12 , 12 , 12 , 13 , 13 , 13 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16
    Data 16 , 16 , 17 , 17 , 18 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 21 , 22 , 22
    Data 23 , 23 , 24 , 24 , 25 , 25 , 26 , 27 , 27 , 28 , 28 , 29 , 30 , 30 , 31 , 32
    Data 32 , 33 , 34 , 35 , 35 , 36 , 37 , 38 , 39 , 39 , 40 , 41 , 42 , 43 , 44 , 45
    Data 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 55 , 56 , 57 , 58 , 59 , 61 , 62 , 63
    Data 65 , 66 , 68 , 69 , 71 , 72 , 74 , 76 , 77 , 79 , 81 , 82 , 84 , 86 , 88 , 90
    Data 92 , 94 , 96 , 98 , 100 , 102 , 105 , 107 , 109 , 112 , 114 , 117 , 119 , 122 , 125 , 127
    Data 130 , 133 , 136 , 139 , 142 , 145 , 148 , 151 , 155 , 158 , 162 , 165 , 169 , 172 , 176 , 180
    Data 184 , 188 , 192 , 197 , 201 , 205 , 210 , 214 , 219 , 224 , 229 , 234 , 239 , 244 , 250 , 255
'===============================================================================

'===============================================================================
  Hsv_red:                                                  'Цветовой тон для R
'-------------------------------------------------------------------------------
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Hsv_green:                                                'Цветовой тон для G
'-------------------------------------------------------------------------------
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
'===============================================================================

'===============================================================================
  Hsv_blue:                                                 'Цветовой тон для B
'-------------------------------------------------------------------------------
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
'===============================================================================

+3

12

min 81 такт, max 121 такт

Dim Rampz_hsv_red As Byte
  Loadwordadr Hsv_red
  !in R16 , rampz
  !sts {Rampz_hsv_red} , R16

  $map       ' Получаем карту распределения памяти компилятором Bascom
  $regfile = "m1284pdef.dat"       ' Используемый контроллер
  $crystal = 16000000       ' 8 МГц    , кварц для стабильной работы USART во всём диапазоне скоростей передачи и приёма
  $framesize = 512       'размер области используемой и необходимой для преобразований
  $hwstack = 512       ' Размер аппаратного стека
  $swstack = 512       ' Размер программного стека

  Dim In_h As Byte
  Dim In_s As Byte
  Dim In_v As Byte

  Config Rainbow = 3 , Rb0_len = 19 , Rb0_port = Porta , Rb0_pin = 4 , _
                       Rb1_len = 19 , Rb1_port = Porta , Rb1_pin = 5 , _
                       Rb2_len = 16 , Rb2_port = Porta , Rb2_pin = 3
'                                                                  ^--- connected to pin 3
'                                                  ^--------------------- connected to portD
'                                 ^------------------------------------- 49 leds on stripe
'                  ^--------------------------------------------------- 1 channel

  Const Led_len = 3
  Const Farbspeicher = 3 * Led_len

  Dim Led_array(farbspeicher) As Byte
  Const Beginn_rot = Led_len + 1
  Const Beginn_blau = Beginn_rot + Led_len
  Dim Gruen(led_len) As Byte At Led_array(1) Overlay
  Dim Rot(led_len) As Byte At Led_array(beginn_rot) Overlay
  Dim Blau(led_len) As Byte At Led_array(beginn_blau) Overlay
  Dim N1 As Byte
  Dim N2 As Byte
  Dim N3 As Byte
  Dim Color(3) As Byte
  R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)

  Rb_selectchannel 0       ' select first channel
  Rb_clearcolors       'clear colors in memory

  Rb_selectchannel 1       ' select first channel
  Rb_clearcolors       'clear colors in memory

  Rb_selectchannel 2       ' select first channel
  Rb_clearcolors       'clear colors in memory

'НАЧАЛЬНЫЕ ЗНАЧЕНИЯ ПАЛИТРЫ
  N1 = 0
  N2 = 64
  N3 = 128

  Dim Rgb_1(20) As Byte

  Rgb_1(1) = 0
  Rgb_1(2) = 16
  Rgb_1(3) = 32
  Rgb_1(4) = 48
  Rgb_1(5) = 64
  Rgb_1(6) = 80
  Rgb_1(7) = 96
  Rgb_1(8) = 112
  Rgb_1(9) = 128
  Rgb_1(10) = 144
  Rgb_1(11) = 160
  Rgb_1(12) = 176
  Rgb_1(13) = 192
  Rgb_1(14) = 208
  Rgb_1(15) = 224
  Rgb_1(16) = 240
  Rgb_1(17) = 0
  Rgb_1(18) = 16
  Rgb_1(19) = 32

  Dim Rgb_2(20) As Byte

  Rgb_2(1) = 0
  Rgb_2(2) = 16
  Rgb_2(3) = 32
  Rgb_2(4) = 48
  Rgb_2(5) = 64
  Rgb_2(6) = 80
  Rgb_2(7) = 96
  Rgb_2(8) = 112
  Rgb_2(9) = 128
  Rgb_2(10) = 144
  Rgb_2(11) = 160
  Rgb_2(12) = 176
  Rgb_2(13) = 192
  Rgb_2(14) = 208
  Rgb_2(15) = 224
  Rgb_2(16) = 240
  Rgb_2(17) = 0
  Rgb_2(18) = 16
  Rgb_2(19) = 32

  Dim Rgb_3(20) As Byte

  Rgb_3(1) = 0
  Rgb_3(2) = 16
  Rgb_3(3) = 32
  Rgb_3(4) = 48
  Rgb_3(5) = 64
  Rgb_3(6) = 80
  Rgb_3(7) = 96
  Rgb_3(8) = 112
  Rgb_3(9) = 128
  Rgb_3(10) = 144
  Rgb_3(11) = 160
  Rgb_3(12) = 176
  Rgb_3(13) = 192
  Rgb_3(14) = 208
  Rgb_3(15) = 224
  Rgb_3(16) = 240
  Rgb_3(17) = 0
  Rgb_3(18) = 16
  Rgb_3(19) = 32

  Dim Count_rgb_1 As Byte
  Dim Count_rgb_1_1 As Byte
  Dim Count_rgb_2 As Byte

  Dim Цвет As Byte
  Dim Min_цвет As Byte
  Dim Яркость As Byte
  Dim Насыщеность As Byte
  Dim Направ_насыщеность As Byte

  Min_цвет = 8
  Цвет = 12
  Яркость = 255
  Насыщеность = 255

'===============================================================================
'На ASM 81 такт
'На ASM с сохранением регистров 121 такт
'Получим логарифмические значения цвета RGB каналов для заданного цвета из расчитанной таблицы
'===============================================================================
  Macro Calculation_hsv2rgb
'-------------------------------------------------------------------------------
    !push R0
    !push R1
    !push R16
    !push R17
    !push R18
    !push R19
    !push R20
    !push R21
    !push R30
    !push R31

    !lds R16 , {In_h}
    !clr R17
   '=================================
    !lds R21 , {Rampz_hsv_red}
    !LDI R30 , Low(Hsv_red * 2)
    !LDI R31 , High(Hsv_red * 2)
    !out rampz , R21
    !add R30 , R16
    !adc R31 , R17
    !elpm R18 , Z
   '=================================
    !LDI R30 , Low(Hsv_green * 2)
    !LDI R31 , High(Hsv_green * 2)
'    !out rampz , R24
    !add R30 , R16
    !adc R31 , R17
    !elpm R19 , Z
   '=================================
    !LDI R30 , Low(Hsv_blue * 2)
    !LDI R31 , High(Hsv_blue * 2)
'    !out rampz , R24
    !add R30 , R16
    !adc R31 , R17
    !elpm R20 , Z
   '=================================
    !lds R16 , {In_s}
   '=================================
    !LDI R30 , Low(Saturation * 2)
    !LDI R31 , High(Saturation * 2)
'    !out rampz , R24
    !add R30 , R16
    !adc R31 , R17
    !elpm R16 , Z
   '=================================
    !Mul R18 , R16
    !mov R30 , R1
    !clr R31
   '=================================
    !subi R30 , -255
    !sub R30 , R16
    !sbc R31 , R17
    !mov R18 , R30
   '=================================
    !Mul R19 , R16
    !mov R30 , R1
    !clr R31
    !subi R30 , -255
    !sub R30 , R16
    !sbc R31 , R17
    !mov R19 , R30
   '=================================
    !Mul R20 , R16
    !mov R30 , R1
    !clr R31
    !subi R30 , -255
    !sub R30 , R16
    !sbc R31 , R17
    !mov R20 , R30
  '===============================
    !lds R16 , {In_v}
    !LDI R30 , Low(Brightness * 2)
    !LDI R31 , High(Brightness * 2)
'    !out rampz , R24
    !add R30 , R16
    !adc R31 , R17
    !elpm R16 , Z
  '===============================
    !Mul R18 , R16
    !sts {Color(_base)} , R1
  '===============================
    !Mul R19 , R16
    !sts {Color(_base)+1} , R1
  '===============================
    !Mul R20 , R16
    !sts {Color(_base)+2} , R1

    !pop R31
    !pop R30
    !pop R21
    !pop R20
    !pop R19
    !pop R18
    !pop R17
    !pop R16
    !pop R1
    !pop R0
'-------------------------------------------------------------------------------
  End Macro
'===============================================================================

'--------------  Разрешаем работу необходимых прерываний  ----------------------
  Enable Urxc
'------------  Разрешаем работу всех включенных прерываний  --------------------
  Enable Interrupts
'===============================================================================
'         Запуск и предварительная настройка
'===============================================================================

Do

   Rb_selectchannel 0
   For Count_rgb_1 = 1 To 19
       Count_rgb_1_1 = Count_rgb_1 - 1

       In_h = Rgb_1(count_rgb_1)
       In_s = 255
       In_v = 255
       Calculation_hsv2rgb

       Incr Rgb_1(count_rgb_1)
       Rb_setcolor Count_rgb_1_1 , Color(1)
   Next Count_rgb_1

   Rb_send

   Rb_selectchannel 1
   For Count_rgb_1 = 19 To 1 Step -1
       Count_rgb_1_1 = Count_rgb_1 - 1

       In_h = Rgb_2(count_rgb_1)
       In_s = 255
       In_v = 255
       Calculation_hsv2rgb

       Incr Rgb_2(count_rgb_1)
       Rb_setcolor Count_rgb_1_1 , Color(1)
   Next Count_rgb_1

   Rb_send

   Rb_selectchannel 2
   For Count_rgb_1 = 1 To 16
       Count_rgb_1_1 = Count_rgb_1 - 1
             Rgb_3(count_rgb_1) = Rnd(цвет)

             If Rgb_3(count_rgb_1) < Min_цвет Then
                 Rgb_3(count_rgb_1) = Min_цвет
             End If

             Яркость = Rnd(255)
             If Яркость < 200 Then
                 Яркость = 200
             End If

             In_h = Rgb_3(count_rgb_1)
             In_s = Насыщеность
             In_v = Яркость
             Calculation_hsv2rgb

             Rb_setcolor Count_rgb_1_1 , Color(1)
   Next Count_rgb_1

             If Направ_насыщеность = 0 Then
                 If Насыщеность < 255 Then
                     Incr Насыщеность
                   Else
                     Направ_насыщеность = 1
                 End If
               Else
                 If Насыщеность > 130 Then
                     Decr Насыщеность
                   Else
                     Направ_насыщеность = 0
                 End If
             End If

   Rb_send

   Waitms 5

Loop
End
'===============================================================================

'===============================================================================
  Saturation:       'Насыщенность
'-------------------------------------------------------------------------------
    Data 0 , 6 , 12 , 17 , 22 , 27 , 32 , 37 , 42 , 46 , 51 , 55 , 59 , 64 , 68 , 72
    Data 76 , 80 , 84 , 87 , 91 , 94 , 98 , 101 , 105 , 108 , 111 , 114 , 117 , 120 , 123 , 126
    Data 129 , 131 , 134 , 137 , 139 , 142 , 144 , 147 , 149 , 151 , 154 , 156 , 158 , 160 , 162 , 164
    Data 166 , 168 , 170 , 172 , 174 , 175 , 177 , 179 , 180 , 182 , 184 , 185 , 187 , 188 , 190 , 191
    Data 193 , 194 , 195 , 197 , 198 , 199 , 200 , 201 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210
    Data 211 , 212 , 213 , 214 , 215 , 216 , 217 , 217 , 218 , 219 , 220 , 221 , 221 , 222 , 223 , 224
    Data 224 , 225 , 226 , 226 , 227 , 228 , 228 , 229 , 229 , 230 , 231 , 231 , 232 , 232 , 233 , 233
    Data 234 , 234 , 235 , 235 , 235 , 236 , 236 , 237 , 237 , 238 , 238 , 238 , 239 , 239 , 240 , 240
    Data 240 , 241 , 241 , 241 , 242 , 242 , 242 , 242 , 243 , 243 , 243 , 244 , 244 , 244 , 244 , 245
    Data 245 , 245 , 245 , 246 , 246 , 246 , 246 , 246 , 247 , 247 , 247 , 247 , 247 , 248 , 248 , 248
    Data 248 , 248 , 248 , 249 , 249 , 249 , 249 , 249 , 249 , 250 , 250 , 250 , 250 , 250 , 250 , 250
    Data 250 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 252 , 252 , 252 , 252 , 252 , 252
    Data 252 , 252 , 252 , 252 , 252 , 252 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253
    Data 253 , 253 , 253 , 253 , 253 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254
    Data 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Brightness:       'Яркость
'-------------------------------------------------------------------------------
    Data 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
    Data 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2
    Data 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3
    Data 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 4
    Data 4 , 4 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 6
    Data 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8
    Data 8 , 8 , 8 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11
    Data 11 , 12 , 12 , 12 , 12 , 13 , 13 , 13 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16
    Data 16 , 16 , 17 , 17 , 18 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 21 , 22 , 22
    Data 23 , 23 , 24 , 24 , 25 , 25 , 26 , 27 , 27 , 28 , 28 , 29 , 30 , 30 , 31 , 32
    Data 32 , 33 , 34 , 35 , 35 , 36 , 37 , 38 , 39 , 39 , 40 , 41 , 42 , 43 , 44 , 45
    Data 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 55 , 56 , 57 , 58 , 59 , 61 , 62 , 63
    Data 65 , 66 , 68 , 69 , 71 , 72 , 74 , 76 , 77 , 79 , 81 , 82 , 84 , 86 , 88 , 90
    Data 92 , 94 , 96 , 98 , 100 , 102 , 105 , 107 , 109 , 112 , 114 , 117 , 119 , 122 , 125 , 127
    Data 130 , 133 , 136 , 139 , 142 , 145 , 148 , 151 , 155 , 158 , 162 , 165 , 169 , 172 , 176 , 180
    Data 184 , 188 , 192 , 197 , 201 , 205 , 210 , 214 , 219 , 224 , 229 , 234 , 239 , 244 , 250 , 255
'===============================================================================

'===============================================================================
  Hsv_red:       'Цветовой тон для R
'-------------------------------------------------------------------------------
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Hsv_green:       'Цветовой тон для G
'-------------------------------------------------------------------------------
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
'===============================================================================

'===============================================================================
  Hsv_blue:       'Цветовой тон для B
'-------------------------------------------------------------------------------
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
    Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
    Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
    Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
    Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
    Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
    Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
    Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
'===============================================================================

+1

13

Вот нарыл исследование по реализации протокола обмена с WS2812 при помощи SPI и UART. Осталось опробовать.
Посмотреть можно здесь: Ссылка

+1


Вы здесь » Программирование ATMEL в BASCOM. » Примеры применения в среде Баском » Исследование адресных RGB_W светодиодов WS2812