sadr0b0t / arduino-timer-api

Cross-platform Arduino timer API
GNU Lesser General Public License v3.0
35 stars 18 forks source link

Порт на ARM/Arduino DUE #5

Closed sadr0b0t closed 6 years ago

sadr0b0t commented 6 years ago

Хорошо сделать порт на Arduino DUE, которая, оказывается, 32 бит и на ARM 84 MHz.

https://store.arduino.cc/usa/arduino-due https://www.arduino.cc/en/Guide/ArduinoDue

The Arduino Due is a microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU. http://www.atmel.com/Images/Atmel-11057-32-bit-Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf

За основу, как обычно, код Servo.cpp

Поддержку плат DUE в Arduino IDE нужно доустанавливать отдельно - в менеджере плат можно сделать поиск по Due, там будет пакет Arduino SAM Boards (32-bits ARM Cortex-M3).

Платформа устанавливается в ~/.arduino15, но библиотеки Servo там нет ~/.arduino15/packages/arduino/hardware/sam/1.6.11/libraries

Как выяснилось, начиная (как минимум) с версии 1.6.9, код для ARM (SAM) уже содежится в базовой версии Servo, которая идет вместе со средой:

/arduino-1.6.9/libraries/Servo/src/sam/

В гите (в мастере в libraries библиотеки Servo почему-то уже нет, но осталась в ветке 1.5.x): https://github.com/arduino/Arduino/tree/ide-1.5.x/libraries/Servo/src

Итого, код для SAM: https://github.com/arduino/Arduino/blob/ide-1.5.x/libraries/Servo/src/sam

Для SAMD (еще какая-то архитектура, может для нее тоже нужно сделать порт) https://github.com/arduino/Arduino/blob/ide-1.5.x/libraries/Servo/src/samd

оригинальная AVR https://github.com/arduino/Arduino/tree/ide-1.5.x/libraries/Servo/src/avr

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

sadr0b0t commented 6 years ago

Предварительный вариант в snippets: https://github.com/sadr0b0t/snippets/tree/master/arduino-timer/arduino-timer-sam

Основные моменты.

sadr0b0t commented 6 years ago

есть порт https://github.com/sadr0b0t/arduino-timer-api/commit/7dda69bb53f4d8138e8ea737677fb15e7c0ce847