- Компилятор XC8, Контроллер PIC18F46K22. Описываю тип-функцию, ложу ее адрес в структуру. Передаю адрес структуры в другую функцию и, собственно, пытаюсь вызвать первую. На этапе компиляции компилятор говорит. что не хочет ее вызывать. Что делать? Евгений(474 знак., 14.08.2015 17:01,
, PIC, полностью)
- Функция Init() объявлена. А она есть(определена)??? - il-2(26.08.2015 13:01)
- А где код самой функции Init? Также попробовать вручную присвоить значение указателю на функцию: FDA(23 знак., 17.08.2015 13:05)
- Может компилятору можно сказать, чтобы он часть кода компилировал "как есть"? А не выдумывал факты, что указатель у меня NULL? - Евгений(17.08.2015 11:46,
)
- А "как есть"? Там 3 типа указателей, какой ему, "как есть" выбрать? - aoreh(17.08.2015 14:31)
- Зачем выбирать? Четко сказано, где взять адрес для перехода. Я хочу, чтобы функция по этому адресу, который я передаю БЫЛА вызвана и мнение компилятора по этому поводу меня мало волнует. Мои ошибки, если я ошибусь в передаче адреса - это мои Евгений(8 знак., 17.08.2015 14:38,
)
- Да нет же, проблема в том, что этот дибильный компиллятор сам путает, где он и какие указатели использует, отсюда и получается, шо он кладет 2 байта, а берет 3 и т.п. - aoreh(17.08.2015 14:41)
- О! А с этого места поподробнее. Откуда 3 байта в указателе для 18-х пиков? - Евгений(17.08.2015 14:43,
)
- Я так понимаю, это проистекает из особенностей архитектуры пика в работе с памятью и желанием микрочипа сделать один указатель на все виды памяти, ну а менее трех байт - оптимизация - aoreh(17.08.2015 14:54)
- А, то есть, указатель может быть 2 байта, когда он его оптимизирует, а может 3, чтобы запихнуть в единое пространство Flash, RAM и EEPROM? Я смотрел, RAM начинается с адреса 0x200000, косят под ARMы. Значит, можно сделать вывод, что есть 3-4 вида Евгений(106 знак., 17.08.2015 14:58,
)
- Точнее уже ниче не скажу, этот механизм был описан где-то в документации и глюки в работе с указателями связывали именно с ним - aoreh(17.08.2015 15:00)
- И, видимо, компилятору можно как-то жестко указать, что вот тут у меня используется общий указатель и он везде передается? - Евгений(17.08.2015 14:59,
)
- А вот теперь, внимание, прикол... НЕЛЬЗЯ :) Во всяком случае, два года назад было нельзя, может щас шо-то изменилось - aoreh(17.08.2015 15:01)
- Это катастрофа. :-) Все же я верю в стойких парней, держащих на своих могучих плечах историю компиляторов от майкрочип. :-) Должны они были чего-то придумать. - Евгений(17.08.2015 15:04,
)
- Компилятора от microchip -- не существует. XC8 -- это бывшая PRO версия фирмы Hitech. Фирма Hitech разорилась, потому, что все воровали (а не покупали за жалкие несколько сотен долларов). Ты думаешь от силы пара индусов из микрочипа заставленные fk0(373 знак., 18.08.2015 11:09)
- Как одно из решений, можно попытаться хранить не указатели, а целочисленное и приводить в нужном месте к указателю на ф-ию, коряво, уродски, но, может, поможет, я помню у нас были попытки такого использования, но вот результат не помню уже. - aoreh(17.08.2015 15:14)
- Да, почитал, механизм, конечно, описан, но все сводится к тому, что это очень сложно и компилятор сам придумывает, где и какой указатель использовать. :-) Но, все равно, дело не в указателях. Ладно, если б я просто попадал в неожиданное место при __ЕВГЕНИЙ(764 знак., 17.08.2015 16:57)
- Я вот так объявляю указатель на свою функцию: FDA(201 знак., 17.08.2015 11:23)
- Это все хорошо, пока адрес ф-ии не становится полем структуры. Т.е. пока вот так просто - глобальная переменная - еще кое-как, но полноценное использование - болт aoreh(125 знак., 17.08.2015 14:22)
- Вот и писать надо тогда конкретнее, что не работает вызов по указателю из твоей структуры, написанной через жопу, а не просто, что не работает. Другие потом будут форум этот читать и сделают вывод, что в XC8 вообще ничего не работает. - FDA(17.08.2015 14:27)
- Оооо... и что же там "через жопу"? И да, если компайлер языка Си не способен правильно работать с указателями, то можно сказать, что в нем "ничего не работает", ибо это основа языка Си - aoreh(17.08.2015 14:30 - 14:34)
- Ну ты ещё в десять структур заверни указатель и потом возмущайся, что ничего не работает. У всех компиляторов есть свои огрехи. Принимай их за особенности, пиши код попроще и всё будет работать. А если ты считаешь, что качество кода выше, чем FDA(90 знак., 17.08.2015 14:35)
- Зашибись советы... какие, нахер, десять структур? шо ты мелешь... Ну объявляй сотню глобальных переменных, удачи тебе.... - aoreh(17.08.2015 14:38)
- Я против сотни глобальный переменных. Зачем так делать? Но и накручивать одну структуру над другой глупо. Такие программы людьми потом тяжело читаются. Не стоить множить сущности без необходимости. - FDA(17.08.2015 14:41)
- Какие еще одни над другой? Ты видишь исходник? ОДНА СТРУКТУРА! ОДНА! и нихера не работает - aoreh(17.08.2015 14:44)
- Я уже писал. Не работает, потому что у тебя руки из жопы растут! Я предложил работающий вариант. Но тут началась уже дискуссия ни о чём! - FDA(17.08.2015 14:46)
- У человека сделавшего 150 проектов на XC8 (я за это время один сделал) руки не из жопы, ага. Я за это время наверное один проект сделал. Который раз 5 пытался перевести на PRO версию и XC8. Безуспешно. - fk0(18.08.2015 11:07, ссылка)
- У тебя, видимо, есть опыт по "рукам из жопы". :-) А руки из плеч видел когда-нибудь? :-) Или для тебя все, что руки, все из жопы? :-) - Евгений(17.08.2015 14:47,
)
- Руки из плеч, как правило, у профессионалов, которые спокойно решают проблему, а не орут на все стороны, что компилятор говно. - FDA(17.08.2015 14:49)
- Это первый и последний компиллятор в моей жизни, про который пришлось так сказать, более того, я долго не верил своим глазам и сопротивлялся, искал говнокод у себя... но, если профессионалам нравится хождение по граблям, то флаг в руки, рукожопым, aoreh(66 знак., 17.08.2015 14:58 - 15:08)
- Я, кстати, еще ни разу не сказал, что компилятор плох. Я лишь спросил совета, что делать и какие есть лазейки, чтобы компилятор все же согласился скомпилировать код как есть, как мне хочется, а не выбрасывал косвенные вызовы функций. - Евгений(17.08.2015 14:52,
)
- Кстати, если не изменяет память, аналогичная проблема возникает, если нужно использовать массив указателей на функции (могу уже ошибаться, к счастью, начал забывать это убожество, но, по-моему, таки да) - aoreh(17.08.2015 14:34)
- Может, оно режет размер указателя и ему нужно помочь - см. п. 4.8.22 (стр 107) Vit(249 знак., 17.08.2015 09:47, ссылка)
- Поставил XC8 1.35 с лицензией PRO, та же самая ерунда. Не хочет он ее вызывать, сцуко. - Евгений(17.08.2015 08:57,
)
- hitech soft picc18 9.51 pl2 или pl3. - fk0(14.08.2015 23:38)
- (*(Str->Init))(NULL, NULL); - AlexBi(14.08.2015 17:25)
- Может кому пригодится. Китайская контора делает 4-8 разрядные микроконтроллеры. В обогревателе Timberk нашел такой. - Codavr(23.08.2015 23:08, MCU, ссылка, полностью)
- Никто не в курсе, в Москве кто-нибудь торгует в розницу ответниками к разъёмам термопар ? Чтобы просто приехать и купить. scorpion(470 знак., 25.08.2015 23:25, SCH)
- Один я вижу искусственное тело вверху в начале канавы? бомж(21.08.2015 21:45, zen, полностью)General
- Сакадзуки кончились... А мы молодая нация... у нас еще и не начинались! - max(23.08.2015 22:38, zen, ссылка, полностью)General
- Мысля, мож и баян. Вставить в LED-лампу аккумулятор и датчик сопротивления. В электросети всегда какая-никакая нагрузка есть, и даже при блэкауте лампа может по сопротивлению на своём входе понять, включен выключатель люстры или нет, то есть надо Николай Коровин(811 знак., 17.08.2015 16:19, zen, полностью)
- Предлагаю опрос. Какая страна оказала на Россию самое сильное влияние. - st256(20.08.2015 19:18, zen, полностью)General
- СССР - General(24.08.2015 08:27)
- Как правило, кому давали люлей, от тех влияние и имели. Ну и там голландцы ишшо, итальянцы. - Звероящер(23.08.2015 23:10)
- Франция. Да и на всю Европу тоже. - Codavr(21.08.2015 13:57)
- В 20 веке - США, в 18-19 - Германия. - Лагунов(21.08.2015 12:45)
- ну где там И.Христос формулировал
не пей, не убий, по бабам не того - Палестина чтоль? А уж кому дом молельный отрисовать заказывали - дело десятое. Блин, тут в парке рядом очередной "шаговой доступности" сбацать хотят - народец бунтует - basilmak(20.08.2015 21:21 - 21:23)
- США(рок-н-ролл), Германия(классическая немецкая философия), Франция(хруст булки), Голландия(промышленное строительство кораблей), Швеция (армия). - Скрипач(20.08.2015 19:28 - 20:52)
- Не страна, а масоны. После монголов в паре с литовцами. - Ациль Шифер(20.08.2015 20:43)
- Монгольская Народная Республика. - Крок(20.08.2015 20:13)
- если в исторической ретроспективе то 1-Грекоримские края. 2.Византия - RED_DRAGON(20.08.2015 19:22 - 19:28)
- Тридевятое царство. - SciFi(20.08.2015 19:27)
- Хочу сделать синусоиду от 0 Гц до 50 Гц за 60 секунд Mistre(674 знак., 06.08.2015 16:03, ARM, полностью)
- Блин до чего ж мы дойдем с этими облаками и джавой ..Для меня ява это был и есть мотоцикл а не какая то муйня которую изобрели выходцы с матанализа для таких же искусствоведов :) Но вопрос не о том . Щас вот все увлеклись облаками и вирутализацией Blackbird_sunday(1724 знак., 17.08.2015 11:57,
, zen, полностью)
- есть тут кто разобрался с программированием ПЛК в ПЧ данфосс микро влт? LordN(16 знак., 23.08.2015 21:12, Cyber, полностью)
- Увидел новые контролеры PIC16F1823 подходят для замены PIC16F676 и памяти в два раза больше там появились новые команды для кампилятора Си Вопрос чем компилировать что бы эти команды использовать - Анатолий(21.08.2015 21:15, PIC, полностью)
- Подскажите пожалуйста контроллер, в котором есть минимум 16 разрядный АСИНХРОННЫЙ счетчик с Output Compare. Нужно получить асинхронный целочисленный делитель для PLL, а ставить только ради этого CPLD страсть как не хочется. Страдает бюджет изделия my504(26 знак., 21.08.2015 09:55, MCU, полностью)
- А подать вашу частоту для деления на тактовый вход процессора не пробовали? Ну так попробуйте - обойдётесь без всякой асинхронности - argus98(22.08.2015 12:17)
- Пикоманы'с... MSP430G2. С асинхронностью у него как раз все пучком. Стоит копейки. От 8 ног. - Гудвин(22.08.2015 11:59)
- Целочисленный делитель? 155ИЕ2, 155ИЕ5 под это заточены. И их аналоги. Легко объединяются в стаи. - Крок(21.08.2015 17:03)
- А цыпресовые PSOCи не спасут? - ASDFS(21.08.2015 11:53)
- Можешь глянуть в сторону микрочипа. Например за 50 центов PIC10F322. Если мало ног, то есть большие братья. Shatun_(470 знак., 21.08.2015 10:53)
- Мы с Вами одинаково мыслим? :))) my504(536 знак., 21.08.2015 11:17)
- По ссылке можно хоть PIC16F18877 - 4KB RAM 56KB FLASH 256B EEPROM 40pin. Ну или попроще под задачу. А если и этого мало, то тогда, да, как сам и написал. - Shatun_(21.08.2015 11:31, ссылка)
- А если соединить асинхроный 8-ик с 8 битным таймером последовательно. - ilyaul(21.08.2015 11:29)
- Это как? Не понял. - my504(21.08.2015 11:40)
- Выход OCR одного на вход Tn другого - ilyaul(21.08.2015 14:56)
- Так уже выход будет синхронным. Проблема как раз в этом. После биений входной частоты и тактового МК придется долго делить, чтобы размыть полученный джиттер. - my504(21.08.2015 14:59)
- Судя по всему вот в этой линейке ilyaul(128 знак., 21.08.2015 15:22)
- Это вряд ли. Все таймеры с OC выходами строго синхронные. Асинхронен только TMR1, но у него нет выхода. Только прерывание, то есть опять синхронизм. - my504(21.08.2015 17:24, картинка)
- Ну, зачем эти сложности, аж, дспик целый. tiny 24/44/84. Таймер T1 - тупо программируемый делитель. Внешний вход T1, выходы ОС1А и ОС1В могут менять состояние на противоположное при совпадении. Внимательно читайте эрраты, у некоторых из них при Ациль Шифер(112 знак., 21.08.2015 19:27 - 19:39)
- Вот и у XMega, похоже, так же ситуация. Асинхронный захват вроде бы есть, но использовать его можно только на вызов прерывания. - Ксения(21.08.2015 18:00, картинка)
- Можно пересинхронизовать по правильному фронту внешним триггером. - SciFi(21.08.2015 17:42)
- Не понимаю, почему бы не тактировать МК от твоей ЧМ? - MBedder(21.08.2015 17:41)
- Ну и вопрос. Все меги такие, в тинях PLL, вашпе унутре; 51х таких - хоть ж. жуй. Частоты какие? Уровень сигнала? - Ациль Шифер(21.08.2015 10:48)
- Если примененять Step-down (выход 4В 150 мА), то как можно избежать помех от этого преобразователя на аналоговый вход в диапазоне 50 мкВ на чаcтотах до 3 кГц? Расстояние между ними 100 мм. - De_User(21.08.2015 19:48, SCH, полностью)
- На STM32 автоустановка скорости USART работает нормально? Устойчиво? А то есть желание от кварца отказаться. - michas(21.08.2015 12:43, ARM, полностью)
- Пусковая петля или петля Лофстрома - какая необычная идея космического запуска... Evgeny_CD(113 знак., 22.08.2015 02:03, dao, полностью)