Использование микрочипа Fubarino с Arduino IDE, как получить доступ и настроить все контакты

Недавно я получил микрочип Fubarino, содержащий PIC32MX250F128D, и я совершенно новичок в Arduino IDE, я загрузил скетч blink, все хорошо и хорошо. Схема: FubarinoMini_v15_sch

// функция настройки запускается один раз, когда вы нажимаете сброс или включаете питание платы
void setup() {
// инициализируйте цифровой вывод LED_BUILTIN в качестве выходного сигнала.
//pinMode(LED_BUILTIN, ВЫВОД);


//asm ("BSF PORTA,10");
//pinMode(RA10, ВЫХОД);
//TRISA 10 = 0;
TRISAbits.RA10 = 0;
// ПОРТАбиты.RA10 = 1;
// ПОРТАбиты.RA10 = 0; // установить на вывод
//mapPps(20, PPS_OUT_SDO2)
}

// функция цикла выполняется снова и снова forever
void loop() {
//digitalWrite(LED_BUILTIN, ВЫСОКИЙ); // включите светодиод (ВЫСОКИЙ - это уровень напряжения)
PORTAbits.RA10 = 1;
delay(500); // подождите секунду
//digitalWrite(LED_BUILTIN, LOW); // выключите светодиод, установив низкое
PORTAbits.RA10 = 0;
delay(500); // подождите секунду
} 

повторные результаты в:

 Blink:45:12: error: 'volatile union __LATAbits_t' has no member named 'RA10'
LATAbits.RA10 = 0;

изменение:

void loop() {
  //digitalWrite(LED_BUILTIN, ВЫСОКИЙ); // включите светодиод (ВЫСОКИЙ - это уровень напряжения)
  PORTAbits.RA10 = 1;
  delay(500);                       // подождите секунду
  //digitalWrite(LED_BUILTIN, НИЗКИЙ); // выключите светодиод, установив низкое напряжение
  PORTAbits.RA10 = 0;
  delay(500);                       // подождите секунду
}

тоже не работает.

Я также попробовал этот пример кода: https://github.com/fubarino/fubarino.github.com/wiki/Fubarino-Mini-pps
Это действительно работает.

#define LED 1
#define SCK2 4
#define SDI2 18
#define SDO2 20 

Светодиод на плате Fubarino подключен не к контакту 1, а к RA10. Вывод 18 - это MCLR на устройстве, поэтому, просмотрев таблицу данных, вы даже не можете установить SDI2 и SDO2 на указанные выше номера.

Обычно на PIC16F84 или около того вы бы сделали что-то вроде этого.

bank1
movlw b'00000001'
movwf TRISA

movlw b'11110000'
movwf TRISB
bank0 

"код" Arduino кажется немного абстрактным. Я хотел бы поэкспериментировать с кнопкой.
Пример pps Chipkit показывает, что вы можете использовать ключевые слова Microchip из спецификации устройств.

Можно ли настроить Fubarino как классическое устройство PIC в среде IDE Arduino? Настройка всех выводов перед переходом к циклу, используя ключевые слова из таблицы.

, 👍1

Обсуждение

Кстати, это не микрочип Fubarino. Фубарино производится компанией Fubar Labs. Джейкоб был бы в ярости, если бы вы попытались заявить, что он Микрочип ;), @Majenko

@Majenko, именно тогда я нашел схему с платы, это все, что я "знал / знаю", в коробке с микросхемами, в которую она входила, было написано chipkit, как и в Arduino IDE. однако схема на странице Microsoft такая же, и имя файла говорит об этом, ведьма, которую я загрузил с microchip. Авторы: Брайан Шмальц и Рик Андерсон что это такое? дополнительно: 25.02.2013 - Версия микрочипа Изменен USB-разъем на стандарт микрочипа Добавлена графика CE, RoSH и chipKIT для silk на обратной стороне, @NaturalDemon

Изначально chipKIT был создан в результате сотрудничества Microchip и Digilent. С тех пор оба в значительной степени отказались от своих интересов в ит, и chipKIT теперь является самостоятельной организацией, состоящей из нескольких преданных делу инженеров сообщества (я, Джейкоб, Брайан, Рик, Гай и т.д.), Некоторых бывших сотрудников Microchip, некоторых просто людей, которые любят чипы PIC32, как я. Любой может создать плату, работающую с chipKIT, но для использования названия chipKIT у вас должно быть соглашение о торговой марке с Microchip (мы пытаемся получить контроль над названием от Microchip, но они тянут время)., @Majenko

Сейчас три основных производителя плат - это я (например, чипкит Ленни), Брайан (платы Schmalzhaus, такие как Quick240) и Джейкоб и Рик (Fubar Labs, платы Fubarino). Большинство оригинальных плат (UNO32, MAX32 и т.д.) были изготовлены компанией Digilent. Я не уверен, что они все еще создают и поддерживают их или нет. Многие платы были проданы через маркет-плейс компании Microchip (которая в прошлом также предоставляла некоторые производственные мощности), хотя сейчас они, похоже, потеряли к этому интерес., @Majenko

С тех пор, как Microchip купила Atmel, они, похоже, потеряли интерес к chipKIT и теперь сосредоточили все свое внимание на Arduinos на базе Atmel. Несмотря на то, что PIC32 на сегодняшний день является значительно более совершенным чипом, а фреймворк chipKIT может похвастаться гораздо лучшей кодовой базой, чем Arduino ;) Основная проблема, с которой мы сталкиваемся на данный момент, заключается в компиляторе - Microchip традиционно предоставляли нам версию своего компилятора XC32 ++ с открытым исходным кодом, но с тех пор, как OS X стала 64-разрядной, они действительно боролись с созданием новой версии для нас., @Majenko

Я нахожусь в процессе (медленно) адаптации vanilla mips-gcc для правильной работы с chipKIT, но это долгая и кропотливая работа. Компиляторная часть в порядке, это библиотеки поддержки микросхем низкого уровня, которые не являются простыми, особенно для более сложных микросхем PIC32MZ., @Majenko

я сделал midi-секвенсор с 23LC512 sram, используя PIC18F452, далеко не потребительский продукт, но он был на 100% точен в темпе или синхронизирован с Albeton до любой скорости до 999 ударов в минуту, 8 шагов + кнопка и светодиоды, statemachine, который я сделал, был блестящим. но 74hc595 и 74hc126 довольно медленные, используется плата microchip picdem 2 plus. но теперь я снова ньюби ... мне нравится, что у меня есть микрочип-программатор ICD3, мне нравятся фотографии., @NaturalDemon


1 ответ


Лучший ответ:

1

Записи в структурах "битов" называются в честь битов.

Это не так

TRISAbits.RA10

но

TRISAbits.TRISA10

То же самое относится и к

LATAbits.LATA10

Единственным исключением является "портовый" вариант

PORTAbits.RA10

Это пережиток старых чипов PIC16, у которых не было регистра LATx.


Светодиод на плате Fubarino подключен не к контакту 1, а к RA10.

Pin 1 - это RA10. Если вы поищете в файле Board_Data.c вариант Fubarino_Mini (packages/chipKIT/hardware/pic32/2.1.0/variants/Fubarino_Mini/Board_Data.c), вы сможете увидеть все сопоставления выводов. Там есть куча массивов, которые определяют, как все сочетается друг с другом.

Вторая запись в большинстве этих массивов (вывод 1, отсчет начинается с 0) предназначена для RA10. Что касается

Вывод 18 - это MCLR на устройстве, поэтому, просмотрев таблицу данных, вы даже не можете установить SDI2 и SDO2 на указанные выше номера.

PPS - это совсем другой беспорядок на этих чипах. Вывод 18 - это не 18-й вывод на плате, а цифровой вывод ввода-вывода с номером 18, который является 19-й записью в этих таблицах массива выводов - RA4. Сопоставление RA4 выполняется через файл packages/chipKIT/hardware/pic32/2.1.0/core/pic32/pps/pingroups_1xx2xx.h, который содержит запись:

#define _PPS_RPA4       (2 + _PPS_SET_C)

и файл packages/chipKIT/hardware/pic32/2.1.0/core/pic32/pps/peripherals_1xx2xx.h, который содержит:

PPS_IN_SDI2     = (35 + _PPS_SET_C + _PPS_INPUT_BIT),

Затем они используются функцией mapPps() для сопоставления RA4 с SDI2. Что-то, что вполне возможно.

Да, это запутанно и немного запутанно, но лучшее, что мы могли придумать, учитывая, насколько ограничен мультиплексор ввода-вывода PIC32MX2xx.

,

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перенесен на chat](https://chat.stackexchange.com/rooms/136159/discussion-on-answer-by-majenko-using-a-microchip-fubarino-with-the-arduino-ide)., @Majenko