Estoy usando un Attiny3216 para un proyecto en el cual necesito 6 adc, por lo que quiero cambiar la ubicacion de los pines SPI de PA1 - PA4 por PC0 - PC3.
1- un modulo can bus con la libreria: GitHub - sandeepmistry/arduino-CAN: An Arduino library for sending and receiving data using CAN bus.
2- al utilizarlo con los pines SPI de PA1 - PA4 todo funciona correctamente.
3- no se como configurar la multiplexacion del spi para poder usar SPI de PC0 - PC3
El codigo utilizado para el SPI por default es el siguiente.
#include <avr/io.h>
#include <util/delay.h>
#include <CAN.h>
// ----- CONSTANTES
const int ledPin = 6; // Pin del LED PB3
const int buttonPin = 7; // Pin del botón conectado a PB2
const uint8_t dac_values[] = {0x00, 0x20, 0x3F, 0x7F, 0xC8, 0xFF};
// ----- VALORES
float vfloat = 36.38;
void setup() {
// Inicialización del SPI con los nuevos pines
Serial.begin(115200);
while (!Serial);
CAN.setPins(0, 13); // (CS, INT)
Serial.println("CAN Sender");
if (!CAN.begin(500E3)) {
Serial.println("Starting CAN failed!");
while (1);
}
}
void loop () {
// send packet: id is 11 bits, packet can contain up to 8 bytes of data
Serial.print("Sending packet ... ");
byte floatBytes[4];
// Convertir el flotante a bytes
memcpy(floatBytes, &vfloat, 4);
CAN.beginPacket(0x12);
// 4 Valores para corriente de una fase
CAN.write(floatBytes[3]);
CAN.write(floatBytes[2]);
CAN.write(floatBytes[1]);
CAN.write(floatBytes[0]);
// 4 Valores para tension de una fase
CAN.write(floatBytes[3]);
CAN.write(floatBytes[2]);
CAN.write(floatBytes[1]);
CAN.write(floatBytes[0]);
CAN.endPacket();
Serial.println("done");
delay(1000);
}
La imagen de recepcion de lo que manda el attiny3216 a traves del can bus es:
Gracias.