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

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

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

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



Глюки в BASCOM

Сообщений 31 страница 60 из 108

31

Открыть с помощью\ Дополнительно\ В самом низу: Найти другое приложение на этом компьютере. Открывается проводник, находите папку, куда установлен Баском. Выбираете bascavr.exe. Или, по правильному, но дольше: Панель управления\ программы по умолчанию\ Сопоставление типов файлов или протоколов с конкретными программами. И там выбираете.

0

32

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

///

Это все вначале пути перепробовал. Не работает. Выбираешь программу, а она в контекст не попадает, так блокнот и остается..

0

33

Yuriy.pv написал(а):

Это все вначале пути перепробовал. Не работает. Выбираешь программу, а она в контекст не попадает, так блокнот и остается..

А "галочка" "Использовать выбранную программу для всех файлов выбранного типа" установлена ?
Если нет, то ассоциация будет разовой.
https://forumupload.ru/uploads/0000/25/b8/1743/t191975.jpg

0

34

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

будет разовой.

Все стоит, она даже для первого раза просто не выбирается.

Выбирается только консольное приложение...
https://forumupload.ru/uploads/0000/25/b8/733/t480418.png

Отредактировано Yuriy.pv (2021-10-30 22:41:49)

0

35

Yuriy.pv написал(а):

Выбирается только консольное приложение...

Странно...
А файлик выше - bascavr.exe в выборе не участвует ? ;)
Его указать не получается ?

Насколько я помню, что укажешь в данной ситуации, то и будет выполняться.
Можно даже файлы автокад с экселем ассоциировать - и тот будет пытаться их открыть... ;)

Отредактировано Nord (2021-10-30 23:28:15)

0

36

А через панель управления тоже не получается, как я выше писал?

0

37

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

///

ну через панель это тоже самое что и через контекст.. не работает.

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

А файлик выше - bascavr.exe в выборе не участвует ?
Его указать не получается ?

Участвует, просто он не выбирается, при нажатии на него ничего не происходит. Просто сбрасывается.

0

38

Очень странно. Именно этот файл я выбирал, всё получалось.

0

39

Ну как то так. До этого 8.1 версия все норм. а 8.3 не хочет.

0

40

sva-don написал(а):

При этом сам программатор в устройствах определяется нормально. Установлена lib usb 1.2.6
Убил два дня, ничего не помогает. Ставил студию 6, фиг вам. Похоже что накрылся сам?

На третий день всё получилось. Тривиальная вещь, надломился проводок в шлейфе которым подключаемся к контроллеру.
Недаром говорят, что электроника - это наука о контактах. :crazyfun:

0

41

Yuriy.pv написал(а):

Ну как то так. До этого 8.1 версия все норм. а 8.3 не хочет.

8.1 и 8.3 - это про что ? Винда или Баском ?
У меня Win7, все нормально выбирается.
Bascom ....8.2

С удовольствием бы откатился на ХР, но материнка не позволяет, в биосе зашита проверка легетимности, дата закончилась три года назад...
"Семерку" и то подбирать пришлось, не каждая сборка встала...

0

42

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

8.1 и 8.3 - это про что ? Винда или Баском

Баском, с виндой все норм.

0

43

Yuriy.pv написал(а):

Баском, с виндой все норм.

Как же "нормально", если невозможно выполнить желаемое ? ;)

А если из папки Баскома удалить этот "консольный" ехе-шник ?
Увидит Винда правильный файл ?

Попробовал у себя - Баском без него стартует в любом раскладе.

0

44

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

"нормально"

Поставил на другой комп все тоже самое.

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

удалить этот "консольный

Удалил, не открывает..

Отредактировано Yuriy.pv (2021-10-31 19:21:14)

0

45

А с какими версиями Баском все было нормально с Виндой ?

Я к тому, что Баском прекрасно "размножается копированием".
При всех переустановках Винды просто вытягивал ярлычок на Рабочий стол и все... ;)

Поставить "рабочий" вариант, выполнить ассоциацию, на другом компе поставить желаемую версию и на флешке перенести поверх "рабочего".

0

46

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

с какими версиями Баском все было нормально с Виндой ?

до 8.1 все норм, 8.3 на двух компах не работает. Ну можно попробовать скопировать, все зачистить и распаковать обратно.

0

47

Решил побаловаться с WS2812
Столкнулся с проблемой компиляции строки:
Config Rainbow = 1 , Rgb = 3 , Rb0_len = 256 , Rb0_port = Portf , Rb0_pin = 0   
При этом RGB=4 компилируется.

Ошибка компиляции:
Error : 303   Line :   41    #ELSE, #ELSEIF, OR #ENDIF without #IF  , in File : C:\YandexDSK-RPRMSR\YandexDisk\Разработка\Цветомузыка\m128 - Цветомузыка.bas

Версия 2.0.8.3 и 2.0.8.4 одинаково ругаются.

Искал в библиотеке проблему, не нашёл. Где можно покопаться, точней какой файл отвечает за CONFIG Rainbow? SOS  %-)

Матрица 16х16

https://forumupload.ru/uploads/0000/25/b8/1295/t611879.jpg

:(

P:S: На всякий случай написал на форум DE: https://www.mcselec.com/index2.php?opti … 1046#81046

Отредактировано Ev3658 (2021-11-30 00:19:59)

0

48

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

Решил побаловаться с WS2812
Столкнулся с проблемой компиляции строки

Попробуйте убрать Rgb = 3 (используется по умолчанию и можно не объявлять), а в Rb0_len = написать 255

UPD:
Сколько приходилось, использовал такое (неиспользуемое "заремить"):

$lib "Rainbow1.21.lib"
$external WS2812b

Declare Sub Select_Rainbow(byval Channel As Byte)
Declare Sub Setcolor(byval Lednr As Word , Color() As Byte)
Declare Sub Send()
Declare Sub Shift_left(byval Left_index As Word , Byval Width As Word) : $external Use_shift_left
Declare Sub Shift_right(byval Left_index As Word , Byval Width As Word) : $external Use_shift_right
Declare Sub Rotate_left(byval Left_index As Word , Byval Width As Word) : $external Use_rotate_left
Declare Sub Rotate_right(byval Left_index As Word , Byval Width As Word) : $external Use_rotate_right
Declare Sub Clear_colors() : $external Use_clear_colors
Declare Sub Fill(color() As Byte) : $external Use_fill

  '#Rainbow0
Const Rainbow0_len = 20
Const Rainbow0_port = PortB
Const Rainbow0_pin = PB4

Никаких Config.... не надо ;)

Отредактировано Nord (2021-11-30 00:34:24)

+1

49

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

Никаких Config.... не надо

ТОже не прокатило. Не, это Windows 10, в Win7 проблем никогда небыло, именно в Windows 10 то компилятор не запускается, то глюки всякие.

0

50

Глюк исправил через обновление 2.0.8.3
Запустил с правами администратора 2.0.8.3
Запустил обновление
Установил у другую папку "C:\MCS\BASCAVR2084-2"
На файл 2.0.8.4 в Win10 установил совместимость с Windows 7 + запуск с правами администратора
Запустил и ошибка пропала.

Вообще уже жуть как руки чешутся попробовать WS2812 с DMA и таймерами Xmega  8-)

0

51

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

попробовать WS2812 с DMA и таймерами Xmega

Так уже игрались мы с тобой с DMA, когда она работает, все процессы встают (а тут протокол ещё тормозной), чо толку от неё, будет тормозить весь МК, уж проще как есть (прерывания).

Отредактировано RDW (2021-11-30 16:19:54)

0

52

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

с DMA, когда она работает, все процессы встают

DMA работает в фоне и МК может выполнять другие задачи (пусть медленнее, но выполнять), а не заниматься только выводом в ленту.

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

уж проще как есть (прерывания).

Серьезно думаете что сохранение/восстановление 32 регистра + 1 + код, быстрее чем DMA?

0

53

Пётр написал(а):

DMA работает в фоне

Тут очень сложно с DMA будет. Вроде кто-то просто использует шину данных для внешней ОЗУ.
Я вот думаю попробовать взять тактирование по таймеру и через DMA заносить следующий бит для сдвига осциллятора (создание 0 или 1).

0

54

Пётр написал(а):

Серьезно думаете

У вас неправильный ход мысли. :) WS-ки отрабатывают в основном стволе кода, а остальное на прерываниях (без задержек).

Пётр написал(а):

DMA работает в фоне

Не рассказывайте мне сказки, когда с VGA проектом ковырялись, там всё и всплыло. МК же не двух ядерный.)

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

Я вот думаю попробовать взять тактирование по таймеру и через DMA заносить следующий бит для сдвига осциллятора (создание 0 или 1).

Ну по мне, сомнительный выигрыш - ИМХО. Но ради эксперимента можно и попробовать. ;)

0

55

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

У вас неправильный ход мысли.

Правильный он у меня. Есть опыт использования DMA в том числе для вывода в ленту с WS2812.

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

WS-ки отрабатывают в основном стволе кода, а остальное на прерываниях (без задержек).

Зачем? В прерываниях DMA от половины и всего буфера, заполняем его (буфер) данными и пусть DMA + таймер выводят в ленту.
В основном коде и в других прерываниях (приоритет должен быть ниже чем у DMA) выполняем другие задачи. Это прекрасно работает на STM32F103. https://github.com/Silencer2K/stm32f10x-ws2812b-lib
Хмега что хуже?

0

56

Пётр написал(а):

Хмега что хуже?

Легче, проще, роднее  :rolleyes:
Просто у меня были проблемы с АЦП, чипы попались пракованной партии, не смог нормально изучить ADC и DAC в AtXmega256A3, но когда разжился AtXmega32A4U, то всё встало сразу на места, всё работает исправно.

0

57

В общем сдаюсь. Не мог осилить библиотеку RAINBOW. Перестало всё менять цвет.

На 3х разных ПК и Win7 и Win10, версии Bascom 2.0.8.1 до 2.0.8.4 ни одна не смогла работать исправно как от RC 8мГц, так и от кварца 12мГц.
Может беда в m328pb.

Глюк блин ещё такой интересный,

Config Rainbow = 1 , Rgb = 3 , Rb0_len = 5 , Rb0_port = Portd , Rb0_pin = 5

Rb0_len = 5 - зажгёт 5 лампочек белым светом, может зажечь нужное число, но цвет не могу менять.

Любой пример из HELP не работает, зажигает нужное кол-во светодиодов и всё.
Частота кварца роли не играет и не воздействует никак:
$regfile = "m328pbdef.dat"
$crystal = 8000000
$hwstack = 80
$swstack = 80
$framesize = 80

Осциллограф придётся раздобыть, чтоб понять что происходит.

Может виноваты новые чипы WS2812B

Отредактировано Ev3658 (2021-12-22 15:20:06)

0

58

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

Config Rainbow = 1 , Rgb = 3 , Rb0_len = 5 , Rb0_port = Portd , Rb0_pin = 5
Rb0_len = 5 - зажгёт 5 лампочек белым светом, может зажечь нужное число, но цвет не могу менять.

Это один из экспериментов

$lib "Rainbow1.21.lib"
$external WS2812b

Declare Sub Select_Rainbow(byval Channel As Byte)
Declare Sub Setcolor(byval Lednr As Word , Color() As Byte)
Declare Sub Send()
Declare Sub Shift_left(byval Left_index As Word , Byval Width As Word) : $external Use_shift_left
Declare Sub Shift_right(byval Left_index As Word , Byval Width As Word) : $external Use_shift_right
Declare Sub Rotate_left(byval Left_index As Word , Byval Width As Word) : $external Use_rotate_left
Declare Sub Rotate_right(byval Left_index As Word , Byval Width As Word) : $external Use_rotate_right
Declare Sub Clear_colors() : $external Use_clear_colors
Declare Sub Fill(color() As Byte) : $external Use_fill

  '#Rainbow0
Const Rainbow0_len = 4
Const Rainbow0_port = PortC
Const Rainbow0_pin = Pc5

Dim Color(3) As Byte
Dim Led As Byte
Dim numl As Byte
Dim p As Integer
'Dim v As Byte
Dim c As Byte
Dim col As Byte
Dim rv As Byte
Dim gv As Byte
Dim bv As Byte

R Alias Color(_base)
B Alias Color(_base + 1)
G Alias Color(_base + 2)

'v = 200
c = 1

'------------------------------------------------------------------------------------------------------------------------
Do
p = 250                                                              ' установка паузы

Call Select_rainbow(0)

rv = 200
gv = 0
bv = 0
R = rv : G = gv : B = bv
Gosub sdvig1

'------------------------------------------------------------------------------------------------------------------------
'Gosub заполнение_цветом
'Waitms p
'Gosub бегущий_цвет
'Waitms p
'Gosub сдвиг_цвета
'Waitms p

Loop
End
'------------------------------------------------------------------------------------------------------------------------
sdvig:

For Led = 0 To Rainbow0_len
      numl = Led
      Call Setcolor(numl , Color())
'      numl = numl + 2
'      Call Setcolor(numl , Color())
'      Call Shift_right(0 , Rainbow0_len)
      Waitms p
      Call Send()
Next

Return
'------------------------------------------------------------------------------------------------------------------------
sdvig1:

'p = p / 2

For Led = 0 To Rainbow0_len
'      numl = Led
      Call Setcolor(numl , Color())
'      numl = numl + 2
'      Call Setcolor(numl , Color())
      Call Shift_right(0 , Rainbow0_len)
'      Waitms p
      Call Send()
Next

Return

'------------------------------------------------------------------------------------------------------------------------
бегущий_цвет:

'Gosub назначение_цвета
Call Select_rainbow(0)

For c = 1 To Rainbow0_len

Gosub назначение_цвета

R = rv : G = gv : B = bv
Gosub sdvig
Waitms p

rv = 0
gv = 0
bv = 0
R = rv : G = gv : B = bv
Gosub sdvig
'Waitms p

Next c
Return:
'------------------------------------------------------------------------------------------------------------------------
сдвиг_цвета:

'Gosub назначение_цвета
Call Select_rainbow(0)

For c = 1 To Rainbow0_len

Gosub назначение_цвета

R = rv : G = gv : B = bv
Gosub sdvig1
rv = 0
gv = 0
bv = 0
R = rv : G = gv : B = bv
Gosub sdvig1

'Waitms p

Next c
Return
'------------------------------------------------------------------------------------------------------------------------
заполнение_цветом:

'Gosub назначение_цвета
Call Select_rainbow(0)

For c = 1 To Rainbow0_len

Gosub назначение_цвета

R = rv : G = gv : B = bv
Gosub sdvig

'Waitms p

Next c
Return
'===================================================================
назначение_цвета:

If c = 1 Then
      rv = 200
      gv = 0
      bv = 0
End If
If c = 2 Then
      rv = 0
      gv = 200
      bv = 0
End If
If c = 3 Then
      rv = 0
      gv = 0
      bv = 200
End If
If c = 4 Then
      rv = 200
      gv = 200
      bv = 0
End If
If c = 5 Then
      rv = 200
      gv = 50
      bv = 0
End If
If c = 6 Then
      rv = 0
      gv = 100
      bv = 50
End If
If c = 7 Then
      rv = 0
      gv = 50
      bv = 200
End If
If c = 8 Then
      rv = 200
      gv = 100
      bv = 0
End If
If c = 9 Then
      rv = 200
      gv = 0
      bv = 50
End If
If c = 10 Then
      rv = 50
      gv = 100
      bv = 0
End If
If c = 11 Then
      rv = 100
      gv = 0
      bv = 200
End If
If c = 12 Then
      rv = 50
      gv = 200
      bv = 0
End If
If c = 13 Then
      rv = 200
      gv = 0
      bv = 100
End If
If c = 14 Then
      rv = 50
      gv = 200
      bv = 50
End If
If c = 15 Then
      rv = 50
      gv = 50
      bv = 200
End If
If c = 16 Then
      rv = 50
      gv = 0
      bv = 200
End If
If c = 17 Then
      rv = 0
      gv = 50
      bv = 100
End If
If c = 18 Then
      rv = 100
      gv = 50
      bv = 100
End If
If c = 19 Then
      rv = 50
      gv = 100
      bv = 50
End If
If c = 20 Then
      rv = 50
      gv = 100
      bv = 50
End If
If c = 21 Then
      rv = 200
      gv = 50
      bv = 50
End If
If c = 22 Then
      rv = 50
      gv = 100
      bv = 100
End If
If c = 23 Then
      rv = 50
      gv = 50
      bv = 200
End If
If c = 24 Then
      rv = 100
      gv = 200
      bv = 0
End If
If c = 25 Then
      rv = 100
      gv = 100
      bv = 200
End If
If c = 26 Then
      rv = 200
      gv = 200
      bv = 200
End If

Return

0

59

что показывает осциллограф?

0

60

Не могу запустить, ругается на отсутствие библиотеки, а если впихнуть RainbowBSC.LIB, то на Const Rainbow0_pin = Pc5.
Предполагаю проблема скорей в расчёте скважности импульсов. Версию Bascom 2.0.7.5 не могу попробовать, придётся Win7 ставить.

0