@ru_electronics

Страница 196 из 718
Dr
15.01.2017
15:00:05
pwm=0x20001fc8; memset(*pwm, 0, size * sizeof(PWM_t));

это неверно

сча найду кусок кода

p* pwm = (p (*))0x20001fc8; memset(pwm, 0, size * sizeof(PWM_t));

Google
Dr
15.01.2017
15:02:27
что-то около

Ruslan
15.01.2017
15:02:36
я понял про что ты

типо я устанавливаюсь на указатель на указатель и стираю его, а не сам буфер, очень похоже

Dr
15.01.2017
15:03:33
нет, ты вот тут pwm=0x20001fc8; не делаешь указатель

ты записываешь в ячейку памяти значение 0x20001fc8

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

а по какому оно адресу лежит на самом деле - фиг знает

Ruslan
15.01.2017
15:05:14
щас, надо с новыми силами подумать

Dolphin
15.01.2017
16:00:29
Судя по этому: SrcFilterNull(NULL, &pwm, NULL, end - pwm); передается указатель *PWM_t, и тогда мемсет - без звездочки. я не пойму, почему указатель, на указатель-то? там двумерный массив светиков?!

Ruslan
15.01.2017
16:01:18
как раз со звёздочкой он указывает куда надо, на начало DMA буфера

Dolphin
15.01.2017
16:01:35
то есть адрес правильный?

так работает

Со звездочкой - заполняет таблицу регистров

Google
Dolphin
15.01.2017
16:09:44
И это правильно, что в регистры пишет, потому что *pwm, это адрес указателя на массив

Ruslan
15.01.2017
16:10:00
ага

Dolphin
15.01.2017
16:10:33
А нужен адрес массива

он - pwm

Ruslan
15.01.2017
16:12:10
а что ты туда передаёшь?

LexsZero
15.01.2017
16:12:16
нихрена не понял, зачем там столько указателей второго уровня

Ruslan
15.01.2017
16:12:32
у меня null_filter(NULL, &pwm, NULL, START_SIZE)

да код вообще странно написан, вычищаю понемногу

Dolphin
15.01.2017
16:12:51
они короче унифицировали параметры функций так

и сами запутались

Ruslan
15.01.2017
16:13:00
просто давно в руки си не брал

Dolphin
15.01.2017
16:13:09
я тоже

LexsZero
15.01.2017
16:13:38
не помню когда последний раз юзал двойной поинтер, не считая передачи argv в main

Dolphin
15.01.2017
16:13:41
в той же либе - ниже есть вызов этой лабуды

посмотри туда

Ruslan
15.01.2017
16:14:12
а без * мне в memset приходит (PWM_t **) 0x20001fc8, что как раз указывает на переменную, а не на массив, который находится по адресу 0x20000080

Dolphin
15.01.2017
16:14:26
PWM_t *pwm = DMABuffer; SrcFilterNull(NULL, &pwm, NULL, end - pwm);

они адрес указателя на массив передают

указатель на указатель на массив

LexsZero
15.01.2017
16:16:18
наркоманы

Google
Dolphin
15.01.2017
16:16:26
пиздец )

Ruslan
15.01.2017
16:18:01
хочешь сделать что-то хорошо, сделай это сам (с) злодей из пятого элемента

Dolphin
15.01.2017
16:18:29
++
ну это с двумерными массивами удобно, или в многосвязных списках

void main(){ MyClass*** v = new MyClass**[7]; for (int i = 0; i != 7; i++){ v[i] = new MyClass*[3]; for (int j = 0; j != 3; j++){ v[i][j] = new MyClass(i*j); } } }

экстрим )

Dolphin
15.01.2017
16:20:56
а с объектами как?

Ruslan
15.01.2017
16:21:36
char *original = "awesomeness"; char **pointer_to_original = &original; (*pointer_to_original) = "is awesome"; printf("%s", original); //is awesome

http://stackoverflow.com/questions/4318881/in-c-what-does-a-variable-declaration-with-two-asterisks-mean

Dolphin
15.01.2017
16:28:37
ну и?

Dolphin
15.01.2017
16:28:40
все верно

только в функцию мемсет нужно передавать указатель

а не указатель на указатель

Ruslan
15.01.2017
16:29:27
ну и в коде все верно, а не пашет, вот я и туплю

Dolphin
15.01.2017
16:29:42
не верно бля! )

Ruslan
15.01.2017
16:30:06
я смотрю в gdb

и вижу, что начальный адрес передаётся в memset верный

LexsZero
15.01.2017
16:30:32
перепиши этот говнокод чтоб там не было двойных указателей, для начала

Google
Dolphin
15.01.2017
16:30:42
ты попробуй не нолем заполнять, а 255 например

и удали эту *

после этого в дебуг смотри

LexsZero
15.01.2017
16:31:06
алсо при чем тут ватчдог? если бы проблема была в вылазе за память, проц валился бы в экзепшон.

и там сидел, если экзепшон не криво написан

Dolphin
15.01.2017
16:31:21
у него вылаз за память

Ruslan
15.01.2017
16:31:24
до рефакторинга говно кода я его пытаюсь запустить, чтобы иметь оригинал

Admin
ERROR: S client not available

Dolphin
15.01.2017
16:31:30
мемсетом

во втором случае, по адресу 0 запись

и вижу, что начальный адрес передаётся в memset верный
Ты видишь не начальный адрес, а то что лежит по указателю, и там лежит адрес массива, и он верный, но когда ты вызываешь мемсет, он пишет не по адресу, который там лежит, а прямо поверх переменной с этим адресом

Dolphin
15.01.2017
16:45:46
точнее наоборот, по адресу, который образуют первые элементы массива

Dr
15.01.2017
16:45:55
нет, ты вот тут pwm=0x20001fc8; не делаешь указатель

ты записываешь в ячейку памяти значение 0x20001fc8

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

а по какому оно адресу лежит на самом деле - фиг знает

Dolphin
15.01.2017
16:45:56
Я это чуть выше уже писал.
Да, ты правильно написал

Dr
15.01.2017
16:46:14
p* pwm = (p (*))0x20001fc8; memset(pwm, 0, size * sizeof(PWM_t));

и написал как делать правильно

Google
Dolphin
15.01.2017
16:46:40
А че он не делает? ))

Dr
15.01.2017
16:47:46
Я не знаю.

Dolphin
15.01.2017
16:48:14
?

Мне просто тоже стала интересна эта либа, тем, что там реализована гаммакорекция

надо буит проверить ее качество

LexsZero
15.01.2017
17:51:04
гаммакоррекция же пишется в две минуты

вообще для ледов нужна не классическая гамма, а логарифмическое преобразование, няп

потому что количество высранных фотонов в секунду зависит от скважности шима линейно, а воспринимаемая человеком яркость от количества фотонов в секунду - логарифмически

Dolphin
15.01.2017
17:56:14
Логарифмическая, судя по таблице

потому что количество высранных фотонов в секунду зависит от скважности шима линейно, а воспринимаемая человеком яркость от количества фотонов в секунду - логарифмически
Это да, но с 2812 у меня не прокатило, яркость после 50% дьюти меняется быстрее, чем до 50%, то есть нелинейно. Возможно погрешности преобразования питания и тп.

Dmitry
15.01.2017
18:09:06
пока в анархии небывалое оживление, спрошу тут. а как на схемах буквенно обозначаютя мезонины? тот же DFPlayer или шилд на Ардуину. не IC же

LexsZero
15.01.2017
18:10:11
как квадратик с ногами?

Dr
15.01.2017
18:11:31
LexsZero
15.01.2017
18:11:34
http://dump.lexs.blasux.ru/files/nogicah/2017-01-15-201124_400x371_scrot.png это адафруктовская либа

Th0r
15.01.2017
18:11:41
если на разъемах - то как разъемы обозначаются XXconXX например

Dmitry
15.01.2017
18:12:11
а если впаивается? вот как ESP, например

LexsZero
15.01.2017
18:12:21
а, буквенно как разъемы, да.

Страница 196 из 718