Estoy intentando programar el chip SAM3x8E en el Arduino Due a través de Atmel Studio. Me gustaría poder controlar una resistencia digital a través de la interfaz SPI con el chip SAM3. Estoy ejecutando Atmel Studio 6.2. No tengo ningún problema para que las cosas funcionen en el IDE de Arduino, pero realmente quiero averiguar cómo programar esto de la "manera difícil" en Atmel. Puedo programar exitosamente el chip en Atmel Studio, usando un archivo por lotes que carga bosssa.exe.
Aquí está mi código IDE de Arduino de TRABAJO:
Código:
// inslude the SPI library:
#include <SPI.h>
// set pin 10 as the slave select for the digital pot:
const int slaveSelectPin = 13;
void setup() {
// initialize SPI:
SPI.begin();
SPI.setDataMode(SPI_MODE0);
// SPI.setClockDivider(slaveSelectPin, 8);
SPI.setBitOrder(LSBFIRST);
pinMode (slaveSelectPin, OUTPUT);
}
void loop() {
// Raise the volume from off to loud
// Increase brightness of LED
for (int i = 63; i>=0; i--) {
digitalPotWrite(i, i);
if(i>20)
delay(10);
else
delay(100);
}
digitalPotWrite(0, 0);
// delay(500);
// Decrease brightness of LED
for (int i = 0; i <= 63; i++) {
digitalPotWrite(i, i);
if(i>20)
delay(10);
else
delay(100);
}
}
void digitalPotWrite(int left, int right) {
// take the SS pin low to select the chip:
digitalWrite(slaveSelectPin, HIGH);
// send in the address and value via SPI:
SPI.transfer(left);
SPI.transfer(right);
// take the SS pin high to de-select the chip:
digitalWrite(slaveSelectPin, LOW);
}
Ahora (tristemente), este es mi código Atmel:
Código:
#include <asf.h>
#include "spi_master.h"
int main (void)
{
/* Initialize the SAM system. */
sysclk_init();
board_init();
}
Como puede ver, no tengo la menor idea de cómo configurar la interfaz SPI en Atmel studio. He visto un código de ejemplo como el "SPI_EXAMPLE1" incorporado, pero no lo entiendo. ¿Alguien puede ayudarme a entender cómo se inicializa el SPI? ¿Cómo puedo saber qué pines usar en el código de inicialización?