Библиотека для can shield

Доброго времени суток. Программирую в atmelstudio на С. есть ардуино уно и can shield. Проблема в том что я нашел библиотеку под can shield только на С++, а мне нужно на С. Нет ни у кого готовой библиотеке на С или же как переписать библиотеку под определеный язык?

мк mcp2515, CAN-BUS Shield V2

Ну так в твоем случае отличие в том, что в библиотеке (скорее всего) используется класс. Вынеси все функции из класса - вот и получишь ту же библиотеку, но на С.

С такими вопросами библиотеку с С++ на Си нереально перенести, увы. Ответ выходит за рамки этого форума. За рамки любого форума в принципе.

1 лайк

Кстати, почему?
У меня она искаропки на С++ предлагает писать ))

ну я стажируюсь в компании как программист мк, и любой мк можно прогать на С, ардуино просто учебная плата на которой можно понять основы, но сама среда разработки ARDUINO IDE очень ограничивает возможности мк, тк она использует не совсем С++ а библиотеку к в нем которая еще сильнее упрощает работу. С одной стороны это удобно с другой же многие не понимают почему именно так. к примеру чтобы подать выходной сигнал на порт вы пишите что типа digitalwrite(10,1)(вроде), а на C нужно писать DDRB|=(1<<10) и PORTB|=(1<<10). В этих двух записях сказано что мы порт B делаем как выход и включаем подтягивающий резистор

Я, может быть, сейчас тебя очень сильно удивлю…
Но и на Си++ тоже будет так же… :smiley:
Это не инструкции языка, а обращение к регистрам микроконтроллера :smiley:

Кстати, ты с ошибкой написал…

// Всё ниже описанное применительно к Ардуино Нано (Atmega168/328P)
DDRB  |= (1<<PB2);   // Это равнозначно pinMode(10, OUTPUT);
PORTB |= (1<<PB2);   // А вот уже это равнозначно digitalWrite(10, HIGH);

ЗЫ: Какая-то подозрительная контора, которая новичков основам совсем не учит… ))

Мальчик, если ты 8-битное значение будешь на 10 бит сдвигать, тебе никакая стажировка не поможет. Херню можно писать и на Си и на С++

4 лайка

Это совершенно не соответствует действительности. Конечно , среда Ардуино имеет свои команды, но это вовсе не означает, что вы должны использовать обязательно digitalWrite(). Хотите пишите так, хотите через регистры.
Возможности тут больше зависят от программиста, с чем у вас пока не особо:)

1 лайк

Расскажи это тем, кто пишет под stm32.

очень познавательная тема. Внимательно слежу.