I can't get SPI.transfer to work on my Arduino Mega 2560. Sketch hangs up on the function call. I understand SS pin on port needs to be set as an output, even though I am using other pins for chip select.
#include <SPI.h> // include the SPI library
#define SPI_MISO 50 // PB3 SPI MISO
#define SPI_MOSI 51 // PB2 SPI MOSI
#define SPI_CLK 52 // PB1 SPI CLK
#define SPI_SS 53 // PB0 SPI SS (not used but port needs this)
#define DAC_CS 11 // PB5 DAC CS
#define LED1GRN 13 // PB7 LED
void setup() {
pinMode(SPI_SS,OUTPUT); // SPI I/O port
pinMode(SPI_MISO,INPUT);
pinMode(SPI_MOSI,OUTPUT);
pinMode(SPI_CLK,OUTPUT);
pinMode(DAC_CS,OUTPUT);
pinMode(LED1GRN,OUTPUT);
digitalWrite(SPI_SS,HIGH);
digitalWrite(DAC_CS,HIGH);
digitalWrite(SPI_MISO,HIGH);
}
//--------------------------------------------------------------------------
void loop() {
word DAC_value = 0x8FFF;
// initialize SPI:
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV32);
SPI.setDataMode(SPI_MODE0); //SCK idle low, latch data rising edge
SPI.begin;
digitalWrite(DAC_CS,LOW);
SPI.transfer(0x20); // DAC Command byte <--- code seems to hang here!
digitalWrite(LED1GRN, HIGH); // set the LED on <--- we never make it here, LED stays off
SPI.transfer(highByte(DAC_value));
SPI.transfer(lowByte(DAC_value));
digitalWrite(DAC_CS,HIGH);
}