diff --git a/cores/arduino/RingBuffer.cpp b/cores/arduino/RingBuffer.cpp index ba9522ce2ae99f4d5d24057feae7b81e8a6d95b6..92d82098e034c5e89b14156cd8f061e4253a2612 100644 --- a/cores/arduino/RingBuffer.cpp +++ b/cores/arduino/RingBuffer.cpp @@ -51,7 +51,7 @@ int RingBuffer::read_char() if(_iTail == _iHead) return -1; - int value = _aucBuffer[_iTail]; + uint8_t value = _aucBuffer[_iTail]; _iTail = nextIndex(_iTail); return value; diff --git a/cores/arduino/SERCOM.cpp b/cores/arduino/SERCOM.cpp index f14f858486abce45b9b813add3bc4ed857de836a..076526b1c6d7de056ff8e17c629a09985ec3a039 100644 --- a/cores/arduino/SERCOM.cpp +++ b/cores/arduino/SERCOM.cpp @@ -158,14 +158,16 @@ void SERCOM::initSPI(SercomSpiTXPad mosi, SercomRXPad miso, SercomSpiCharSize ch initClockNVIC(); //Setting the CTRLA register - sercom->SPI.CTRLA.reg = SERCOM_SPI_CTRLA_MODE(SPI_MASTER_OPERATION) | - SERCOM_SPI_CTRLA_DOPO(mosi) | - SERCOM_SPI_CTRLA_DIPO(miso) | - dataOrder << SERCOM_SPI_CTRLA_DORD_Pos; + sercom->SPI.CTRLA.reg = SERCOM_SPI_CTRLA_MODE_SPI_MASTER | + SERCOM_SPI_CTRLA_DOPO(mosi) | + SERCOM_SPI_CTRLA_DIPO(miso) | + dataOrder << SERCOM_SPI_CTRLA_DORD_Pos; //Setting the CTRLB register sercom->SPI.CTRLB.reg = SERCOM_SPI_CTRLB_CHSIZE(charSize) | - (0x1ul) << SERCOM_SPI_CTRLB_RXEN_Pos; //Active the SPI receiver. + SERCOM_SPI_CTRLB_RXEN; //Active the SPI receiver. + + } void SERCOM::initSPIClock(SercomSpiClockMode clockMode, uint32_t baudrate) @@ -184,8 +186,8 @@ void SERCOM::initSPIClock(SercomSpiClockMode clockMode, uint32_t baudrate) cpol = 1; //Setting the CTRLA register - sercom->SPI.CTRLA.reg |= cpha << SERCOM_SPI_CTRLA_CPHA_Pos | - cpol << SERCOM_SPI_CTRLA_CPOL_Pos; + sercom->SPI.CTRLA.reg |= ( cpha << SERCOM_SPI_CTRLA_CPHA_Pos ) | + ( cpol << SERCOM_SPI_CTRLA_CPOL_Pos ); //Synchronous arithmetic sercom->SPI.BAUD.reg = calculateBaudrateSynchronous(baudrate); @@ -194,7 +196,7 @@ void SERCOM::initSPIClock(SercomSpiClockMode clockMode, uint32_t baudrate) void SERCOM::resetSPI() { //Setting the Software Reset bit to 1 - sercom->SPI.CTRLA.bit.SWRST = 0x1u; + sercom->SPI.CTRLA.bit.SWRST = 1; //Wait both bits Software Reset from CTRLA and SYNCBUSY are equal to 0 while(sercom->SPI.CTRLA.bit.SWRST || sercom->SPI.SYNCBUSY.bit.SWRST); @@ -203,19 +205,23 @@ void SERCOM::resetSPI() void SERCOM::enableSPI() { //Setting the enable bit to 1 - sercom->SPI.CTRLA.bit.ENABLE = 0x1ul; + sercom->SPI.CTRLA.bit.ENABLE = 1; - //Waiting then enable bit from SYNCBUSY is equal to 0; - while(sercom->SPI.SYNCBUSY.bit.ENABLE); + while(sercom->SPI.SYNCBUSY.bit.ENABLE) + { + //Waiting then enable bit from SYNCBUSY is equal to 0; + } } void SERCOM::disableSPI() { //Setting the enable bit to 0 - sercom->SPI.CTRLA.bit.ENABLE = 0x0ul; + sercom->SPI.CTRLA.bit.ENABLE = 0; - //Waiting then enable bit from SYNCBUSY is equal to 0; - while(sercom->SPI.SYNCBUSY.bit.ENABLE); + while(sercom->SPI.SYNCBUSY.bit.ENABLE) + { + //Waiting then enable bit from SYNCBUSY is equal to 0; + } } void SERCOM::setDataOrderSPI(SercomDataOrder dataOrder) @@ -237,7 +243,7 @@ void SERCOM::setBaudrateSPI(uint8_t divider) //Register enable-protected disableSPI(); - sercom->SPI.BAUD.reg = calculateBaudrateSynchronous(SERCOM_FREQ_REF / divider); + sercom->SPI.BAUD.reg = calculateBaudrateSynchronous( SERCOM_FREQ_REF / divider ); enableSPI(); } @@ -265,12 +271,27 @@ void SERCOM::setClockModeSPI(SercomSpiClockMode clockMode) } void SERCOM::writeDataSPI(uint8_t data) { - sercom->SPI.DATA.bit.DATA = data; + while( sercom->SPI.INTFLAG.bit.DRE == 0 ) + { + // Waiting Data Registry Empty + } + + sercom->SPI.DATA.bit.DATA = data; // Writing data into Data register + + while( sercom->SPI.INTFLAG.bit.TXC == 0 || sercom->SPI.INTFLAG.bit.DRE == 0 ) + { + // Waiting Complete Transmission + } } uint16_t SERCOM::readDataSPI() { - return sercom->SPI.DATA.reg; + while( sercom->SPI.INTFLAG.bit.DRE == 0 || sercom->SPI.INTFLAG.bit.RXC == 0 ) + { + // Waiting Complete Reception + } + + return sercom->SPI.DATA.bit.DATA; // Reading data } bool SERCOM::isBufferOverflowErrorSPI() @@ -284,17 +305,17 @@ bool SERCOM::isDataRegisterEmptySPI() return sercom->SPI.INTFLAG.bit.DRE; } -bool SERCOM::isTransmitCompleteSPI() -{ - //TXC : Transmit complete - return sercom->SPI.INTFLAG.bit.TXC; -} - -bool SERCOM::isReceiveCompleteSPI() -{ - //RXC : Receive complete - return sercom->SPI.INTFLAG.bit.RXC; -} +//bool SERCOM::isTransmitCompleteSPI() +//{ +// //TXC : Transmit complete +// return sercom->SPI.INTFLAG.bit.TXC; +//} +// +//bool SERCOM::isReceiveCompleteSPI() +//{ +// //RXC : Receive complete +// return sercom->SPI.INTFLAG.bit.RXC; +//} uint8_t SERCOM::calculateBaudrateSynchronous(uint32_t baudrate) { @@ -448,7 +469,7 @@ bool SERCOM::startTransmissionWIRE(uint8_t address, SercomWireReadWriteFlag flag } // Clean the 'Slave on Bus' flag, for further usage. - sercom->I2CM.INTFLAG.bit.SB = 0x1ul; + //sercom->I2CM.INTFLAG.bit.SB = 0x1ul; } @@ -550,9 +571,9 @@ uint8_t SERCOM::readDataWIRE( void ) { if(isMasterWIRE()) { - while( sercom->I2CM.INTFLAG.bit.SB == 0 || sercom->I2CM.STATUS.bit.CLKHOLD == 0 ) + while( sercom->I2CM.INTFLAG.bit.SB == 0 ) { - // Waiting complete receive, Clock holding & synchronization finished + // Waiting complete receive } return sercom->I2CM.DATA.bit.DATA ; @@ -600,14 +621,14 @@ void SERCOM::initClockNVIC( void ) IdNvic = SERCOM5_IRQn; } - //Setting NVIC + // Setting NVIC NVIC_EnableIRQ(IdNvic); NVIC_SetPriority (IdNvic, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority */ //Setting clock GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID( clockId ) | // Generic Clock 0 (SERCOMx) - GCLK_CLKCTRL_GEN_GCLK0 | // Generic Clock Generator 0 is source - GCLK_CLKCTRL_CLKEN ; + GCLK_CLKCTRL_GEN_GCLK0 | // Generic Clock Generator 0 is source + GCLK_CLKCTRL_CLKEN ; while ( GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY ) { diff --git a/cores/arduino/Uart.cpp b/cores/arduino/Uart.cpp index 0d3abb98e887940efb5b79d21ac1d6cb2e8b6a31..0fc77541dd54197c89b786135e1e029e811ab13b 100644 --- a/cores/arduino/Uart.cpp +++ b/cores/arduino/Uart.cpp @@ -2,11 +2,11 @@ #include "WVariant.h" #include "wiring_digital.h" -Uart::Uart(SERCOM *s, uint8_t pinRX, uint8_t pinTX) +Uart::Uart(SERCOM *_s, uint8_t _pinRX, uint8_t _pinTX) { - sercom = s; - pinPeripheral(pinRX, g_APinDescription[pinRX].ulPinType); - pinPeripheral(pinTX, g_APinDescription[pinTX].ulPinType); + sercom = _s; + uc_pinRX = _pinRX; + uc_pinTX = _pinTX; } void Uart::begin(unsigned long baudrate) @@ -16,6 +16,9 @@ void Uart::begin(unsigned long baudrate) void Uart::begin(unsigned long baudrate, uint8_t config) { + pinPeripheral(uc_pinRX, g_APinDescription[uc_pinRX].ulPinType); + pinPeripheral(uc_pinTX, g_APinDescription[uc_pinTX].ulPinType); + sercom->initUART(UART_INT_CLOCK, SAMPLE_RATE_x16, baudrate); sercom->initFrame(extractCharSize(config), LSB_FIRST, extractParity(config), extractNbStopBit(config)); sercom->initPads(UART_TX_PAD_2, SERCOM_RX_PAD_3); diff --git a/cores/arduino/Uart.h b/cores/arduino/Uart.h index b8c64880880782d9fdb93184fa9d43797e34c4c1..a018b884cb1021f0130897b51ed194d4d01a520d 100644 --- a/cores/arduino/Uart.h +++ b/cores/arduino/Uart.h @@ -11,7 +11,7 @@ class Uart : public HardwareSerial { public: - Uart(SERCOM *s, uint8_t pinRX, uint8_t pinTX); + Uart(SERCOM *_s, uint8_t _pinRX, uint8_t _pinTX); void begin(unsigned long baudRate); void begin(unsigned long baudrate, uint8_t config); void end(); @@ -29,6 +29,9 @@ class Uart : public HardwareSerial private: SERCOM *sercom; RingBuffer rxBuffer; + + uint8_t uc_pinRX; + uint8_t uc_pinTX; SercomNumberStopBit extractNbStopBit(uint8_t config); SercomUartCharSize extractCharSize(uint8_t config); diff --git a/cores/arduino/WInterrupts.c b/cores/arduino/WInterrupts.c index 6bbdf3624061380d89acdc793f50f93f997decaa..25b45d794bdac0948d171b1527043ee613fc0a3c 100644 --- a/cores/arduino/WInterrupts.c +++ b/cores/arduino/WInterrupts.c @@ -51,6 +51,8 @@ static void __initialize() NVIC_SetPriority( EIC_IRQn, 0 ) ; NVIC_EnableIRQ( EIC_IRQn ) ; + + // Enable GCLK for IEC (External Interrupt Controller) GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_EIC )) ; @@ -60,9 +62,18 @@ static void __initialize() while ( (EIC->CTRL.SWRST.bit == 1) && (EIC->STATUS.SYNCBUSY.bit == 1) ) { - // Wait for synchronisation + // Waiting for synchronisation } */ + + // Enable EIC + EIC->CTRL.bit.ENABLE = 1 ; + + while ( EIC->STATUS.bit.SYNCBUSY == 1 ) + { + // Waiting for synchronisation + } + } /* @@ -109,27 +120,31 @@ void attachInterrupt( uint32_t ulPin, voidFuncPtr callback, uint32_t ulMode ) } // Configure the interrupt mode - ulPos = ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << 2) ; + ulPos = ((digitalPinToInterrupt( ulPin ) - (8*ulConfig) ) << 2) ; switch ( ulMode ) { case LOW: - EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_LOW_Val << ulPos ; + EIC->CONFIG[ulConfig].reg |= EIC_CONFIG_SENSE0_LOW_Val << ulPos ; break ; case HIGH: - EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_HIGH_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << 2) ; + // EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_HIGH_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << ulPos) ; + EIC->CONFIG[ulConfig].reg |= EIC_CONFIG_SENSE0_HIGH_Val << ulPos ; break ; case CHANGE: - EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_BOTH_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << 2) ; + // EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_BOTH_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << ulPos) ; + EIC->CONFIG[ulConfig].reg |= EIC_CONFIG_SENSE0_BOTH_Val << ulPos ; break ; case FALLING: - EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_FALL_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << 2) ; + // EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_FALL_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << ulPos) ; + EIC->CONFIG[ulConfig].reg |= EIC_CONFIG_SENSE0_FALL_Val << ulPos ; break ; case RISING: - EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_RISE_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << 2) ; + // EIC->CONFIG[ulConfig].reg = EIC_CONFIG_SENSE0_RISE_Val << ((digitalPinToInterrupt( ulPin ) >> ulConfig ) << ulPos) ; + EIC->CONFIG[ulConfig].reg |= EIC_CONFIG_SENSE0_RISE_Val << ulPos ; break ; } @@ -209,9 +224,9 @@ void EIC_Handler( void ) } // Test the 16 normal interrupts - for ( ul = EXTERNAL_INT_0 ; ul < EXTERNAL_INT_15 ; ul++ ) + for ( ul = EXTERNAL_INT_0 ; ul < EXTERNAL_INT_NMI ; ul++ ) { - if ( (EIC->INTFLAG.reg & 1 << ul) != 0 ) + if ( (EIC->INTFLAG.reg & ( 1 << ul ) ) != 0 ) { // Call the callback function if assigned if ( callbacksInt[ul]._callback != NULL ) diff --git a/cores/arduino/delay.c b/cores/arduino/delay.c index 834278413afa6a04696a2196a2992a372d79550a..2548f91edc1b659f61c0764edc9fbf243f263920 100644 --- a/cores/arduino/delay.c +++ b/cores/arduino/delay.c @@ -55,7 +55,7 @@ void delay( uint32_t ms ) do { yield() ; - } while ( _ulTickCount - start < ms ) ; + } while ( _ulTickCount - start <= ms ) ; } void SysTick_Handler( void ) diff --git a/cores/arduino/delay.h b/cores/arduino/delay.h index f9b08efeff3b608ef09265eb2f261cc46ff72919..9809fc3753f56b3f2a17be392119c8a8bd0e2854 100644 --- a/cores/arduino/delay.h +++ b/cores/arduino/delay.h @@ -64,13 +64,18 @@ static inline void delayMicroseconds(uint32_t) __attribute__((always_inline, unu static inline void delayMicroseconds(uint32_t usec){ if (usec == 0) return; uint32_t n = usec * (VARIANT_MCK / 3000000); - +#if 0 __asm__ volatile( "L_%=_delayMicroseconds:" "\n\t" - "subs %0, #1" "\n\t" + "subs %0, %0, #1" "\n\t" "bne L_%=_delayMicroseconds" "\n" : "+r" (n) : ); +#else + for ( ; n != 0 ; n-- ) + { + } +#endif } /* diff --git a/cores/arduino/wiring.c b/cores/arduino/wiring.c index e7f6167c7afb06af141583af8d77e6f7ee0d978b..2c3723e622c2c60b354d543728b23132661f7a7c 100644 --- a/cores/arduino/wiring.c +++ b/cores/arduino/wiring.c @@ -32,6 +32,25 @@ extern "C" { */ uint32_t SystemCoreClock=1000000ul ; +/* +void calibrateADC() +{ + volatile uint32_t valeur = 0; + + for(int i = 0; i < 5; ++i) + { + ADC->SWTRIG.bit.START = 1; + while( ADC->INTFLAG.bit.RESRDY == 0 || ADC->STATUS.bit.SYNCBUSY == 1 ) + { + // Waiting for a complete conversion and complete synchronization + } + + valeur += ADC->RESULT.bit.RESULT; + } + + valeur = valeur/5; +}*/ + /* * Arduino Zero board initialization * @@ -79,10 +98,49 @@ void init( void ) // Todo // Initialize Analog Controller - // Todo + // Setting clock + GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID( GCM_ADC ) | // Generic Clock ADC + GCLK_CLKCTRL_GEN_GCLK0 | // Generic Clock Generator 0 is source + GCLK_CLKCTRL_CLKEN ; + + ADC->CTRLB.reg = ADC_CTRLB_PRESCALER_DIV128 | // Divide Clock by 512. + ADC_CTRLB_RESSEL_10BIT; // Result on 10 bits + + ADC->INPUTCTRL.reg = ADC_INPUTCTRL_MUXNEG_GND; // No Negative input (Internal Ground) + + // Averaging (see table 31-2 p.816 datasheet) + ADC->AVGCTRL.reg = ADC_AVGCTRL_SAMPLENUM_2 | // 2 samples + ADC_AVGCTRL_ADJRES(0x01ul); // Adjusting result by 1 + + ADC->REFCTRL.reg = ADC_REFCTRL_REFSEL_AREFA; // RReference AREFA (pin AREF) [default] + + ADC->CTRLA.bit.ENABLE = 1; // Enable ADC + while( ADC->STATUS.bit.SYNCBUSY == 1 ) + { + // Waiting for synchroinization + } + + // Initialize DAC + // Setting clock + GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID( GCM_DAC ) | // Generic Clock ADC + GCLK_CLKCTRL_GEN_GCLK0 | // Generic Clock Generator 0 is source + GCLK_CLKCTRL_CLKEN ; + + + DAC->CTRLB.reg = DAC_CTRLB_REFSEL_AVCC | // Using the 3.3V reference + DAC_CTRLB_EOEN; // External Output Enable (Vout) + DAC->DATA.reg = 0x3FFul; + + // Enable DAC + DAC->CTRLA.bit.ENABLE = 1; + + while(DAC->STATUS.bit.SYNCBUSY != 0) + { + // Waiting for synchronization + } + } #ifdef __cplusplus } #endif - diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c index 2a15282c8e858fba12e0df54c56ddf764516e402..aa0a0a079ffdd6e0279afab1471827c535145cf2 100644 --- a/cores/arduino/wiring_analog.c +++ b/cores/arduino/wiring_analog.c @@ -23,35 +23,55 @@ extern "C" { #endif +void analogReference( eAnalogReference ulMode ) +{ + + // ATTENTION : On this board the default is note 5volts or 3.3volts BUT 1volt + + switch(ulMode) + { + case AR_DEFAULT: + case INTERNAL: + default: + ADC->REFCTRL.bit.REFSEL = ADC_REFCTRL_REFSEL_INT1V_Val; + break; + + case EXTERNAL: + ADC->REFCTRL.bit.REFSEL = ADC_REFCTRL_REFSEL_AREFA_Val; + break; + } +} uint32_t analogRead( uint32_t ulPin ) { - uint32_t ulValue = 0 ; -/* - uint32_t ulChannel ; + uint32_t valueRead = 0; + pinPeripheral(ulPin, g_APinDescription[ulPin].ulPinType); - ulChannel = g_APinDescription[ulPin].ulADCChannelNumber ; + ADC->INPUTCTRL.bit.MUXPOS = g_APinDescription[ulPin].ulADCChannelNumber; - static uint32_t latestSelectedChannel = -1; + // Start conversion + ADC->SWTRIG.bit.START = 1; - switch ( g_APinDescription[ulPin].ulAnalogChannel ) + while( ADC->INTFLAG.bit.RESRDY == 0 || ADC->STATUS.bit.SYNCBUSY == 1 ) { - // Handling ADC 12 bits channels - case ADC0 : - case ADC1 : - case ADC2 : - case ADC3 : - case ADC4 : - case ADC5 : - break; - // Compiler could yell because we don't handle DAC pin - default : - ulValue=0; - break; + // Waiting for a complete conversion and complete synchronization } -*/ - return ulValue; - } + // Store the value + valueRead = ADC->RESULT.reg; + + // Clear the Data Ready flag + ADC->INTFLAG.bit.RESRDY = 1; + + // Flush the ADC for further conversions + //ADC->SWTRIG.bit.FLUSH = 1; + + while( ADC->STATUS.bit.SYNCBUSY == 1 || ADC->SWTRIG.bit.FLUSH == 1 ) + { + // Waiting for synchronization + } + + return valueRead; +} // Right now, PWM output only works on the pins with @@ -59,60 +79,67 @@ uint32_t analogRead( uint32_t ulPin ) // pins_*.c file. For the rest of the pins, we default // to digital output. void analogWrite( uint32_t ulPin, uint32_t ulValue ) - { - uint32_t attr = g_APinDescription[ulPin].ulPinAttribute ; +{ + uint32_t attr = g_APinDescription[ulPin].ulPinAttribute ; // uint32_t pwm_name = g_APinDescription[ulPin].ulTCChannel ; - uint8_t isTC = 0 ; - uint8_t Channelx ; - Tc* TCx ; - Tcc* TCCx ; - - if ( (attr & PIN_ATTR_ANALOG) == PIN_ATTR_ANALOG ) - { - // EAnalogChannel channel = g_APinDescription[ulPin].ulADCChannelNumber; - // if (channel == DA0 || channel == DA1) { - // uint32_t chDACC = ((channel == DA0) ? 0 : 1); - // if (dacc_get_channel_status(DACC_INTERFACE) == 0) { - // /* Enable clock for DACC_INTERFACE */ - // pmc_enable_periph_clk(DACC_INTERFACE_ID); - - // /* Reset DACC registers */ - // dacc_reset(DACC_INTERFACE); - - // /* Half word transfer mode */ - // dacc_set_transfer_mode(DACC_INTERFACE, 0); - - // /* Power save: - // * sleep mode - 0 (disabled) - // * fast wakeup - 0 (disabled) - // */ - // dacc_set_power_save(DACC_INTERFACE, 0, 0); - // /* Timing: - // * refresh - 0x08 (1024*8 dacc clocks) - // * max speed mode - 0 (disabled) - // * startup time - 0x10 (1024 dacc clocks) - // */ - // dacc_set_timing(DACC_INTERFACE, 0x08, 0, 0x10); - - // /* Set up analog current */ - // dacc_set_analog_control(DACC_INTERFACE, DACC_ACR_IBCTLCH0(0x02) | - // DACC_ACR_IBCTLCH1(0x02) | - // DACC_ACR_IBCTLDACCORE(0x01)); - // } - - // /* Disable TAG and select output channel chDACC */ - // dacc_set_channel_selection(DACC_INTERFACE, chDACC); - - // if ((dacc_get_channel_status(DACC_INTERFACE) & (1 << chDACC)) == 0) { - // dacc_enable_channel(DACC_INTERFACE, chDACC); - // } - - // // Write user value - // ulValue = mapResolution(ulValue, _writeResolution, DACC_RESOLUTION); - // dacc_write_conversion_data(DACC_INTERFACE, ulValue); - // while ((dacc_get_interrupt_status(DACC_INTERFACE) & DACC_ISR_EOC) == 0); - // return; - // } + uint8_t isTC = 0 ; + uint8_t Channelx ; + Tc* TCx ; + Tcc* TCCx ; + + if ( (attr & PIN_ATTR_ANALOG) == PIN_ATTR_ANALOG ) + { + if ( ulPin != 24 ) // Only 1 DAC on A0 (PA02) + { + return; + } + + DAC->DATA.reg = ulValue & 0x3FF; // Dac on 10 bits. + + // EAnalogChannel channel = g_APinDescription[ulPin].ulADCChannelNumber; + // if (channel == DA0 || channel == DA1) { + // uint32_t chDACC = ((channel == DA0) ? 0 : 1); + // if (dacc_get_channel_status(DACC_INTERFACE) == 0) { + // /* Enable clock for DACC_INTERFACE */ + // pmc_enable_periph_clk(DACC_INTERFACE_ID); + + // /* Reset DACC registers */ + // dacc_reset(DACC_INTERFACE); + + // /* Half word transfer mode */ + // dacc_set_transfer_mode(DACC_INTERFACE, 0); + + // /* Power save: + // * sleep mode - 0 (disabled) + // * fast wakeup - 0 (disabled) + // */ + // dacc_set_power_save(DACC_INTERFACE, 0, 0); + // /* Timing: + // * refresh - 0x08 (1024*8 dacc clocks) + // * max speed mode - 0 (disabled) + // * startup time - 0x10 (1024 dacc clocks) + // */ + // dacc_set_timing(DACC_INTERFACE, 0x08, 0, 0x10); + + // /* Set up analog current */ + // dacc_set_analog_control(DACC_INTERFACE, DACC_ACR_IBCTLCH0(0x02) | + // DACC_ACR_IBCTLCH1(0x02) | + // DACC_ACR_IBCTLDACCORE(0x01)); + // } + + // /* Disable TAG and select output channel chDACC */ + // dacc_set_channel_selection(DACC_INTERFACE, chDACC); + + // if ((dacc_get_channel_status(DACC_INTERFACE) & (1 << chDACC)) == 0) { + // dacc_enable_channel(DACC_INTERFACE, chDACC); + // } + + // // Write user value + // ulValue = mapResolution(ulValue, _writeResolution, DACC_RESOLUTION); + // dacc_write_conversion_data(DACC_INTERFACE, ulValue); + // while ((dacc_get_interrupt_status(DACC_INTERFACE) & DACC_ISR_EOC) == 0); + // return; + // } } if ( (attr & PIN_ATTR_PWM) == PIN_ATTR_PWM ) diff --git a/cores/arduino/wiring_analog.h b/cores/arduino/wiring_analog.h index a87e7d35451542a71914feb21e090652e362e2b7..006e5b94a827f1f2c106998cf95e1357125cef73 100644 --- a/cores/arduino/wiring_analog.h +++ b/cores/arduino/wiring_analog.h @@ -31,8 +31,11 @@ extern "C" { typedef enum _eAnalogReference { AR_DEFAULT, + INTERNAL, + EXTERNAL } eAnalogReference ; + /* * \brief Configures the reference voltage used for analog input (i.e. the value used as the top of the input range). * This function is kept only for compatibility with existing AVR based API. diff --git a/cores/validation/validation_I2C_I01/build_as6/test.atsln b/cores/validation/validation_I2C_I01/build_as6/test.atsln new file mode 100644 index 0000000000000000000000000000000000000000..749e8031642f7e15c4630fbe5342fce033772a6c --- /dev/null +++ b/cores/validation/validation_I2C_I01/build_as6/test.atsln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Atmel Studio Solution File, Format Version 11.00 +Project("{E66E83B9-2572-4076-B26E-6BE79FF3018A}") = "test", "test.cppproj", "{B3F859AD-E162-4C2F-9684-EAC6932FEC80}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Release|ARM = Release|ARM + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.ActiveCfg = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.Build.0 = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.ActiveCfg = Release|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.Build.0 = Release|ARM + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/cores/validation/validation_I2C_I01/build_as6/test.cppproj b/cores/validation/validation_I2C_I01/build_as6/test.cppproj new file mode 100644 index 0000000000000000000000000000000000000000..a294228fba3ede5eef7aefbf6e3680456fb02807 --- /dev/null +++ b/cores/validation/validation_I2C_I01/build_as6/test.cppproj @@ -0,0 +1,477 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <SchemaVersion>2.0</SchemaVersion> + <ProjectVersion>6.2</ProjectVersion> + <ToolchainName>com.Atmel.ARMGCC.CPP</ToolchainName> + <ProjectGuid>{b3f859ad-e162-4c2f-9684-eac6932fec80}</ProjectGuid> + <avrdevice>ATSAMD21G18A</avrdevice> + <avrdeviceseries>none</avrdeviceseries> + <OutputType>Executable</OutputType> + <Language>CPP</Language> + <OutputFileName>$(MSBuildProjectName)</OutputFileName> + <OutputFileExtension>.elf</OutputFileExtension> + <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory> + <AssemblyName>test</AssemblyName> + <Name>test</Name> + <RootNamespace>test</RootNamespace> + <ToolchainFlavour>Native</ToolchainFlavour> + <KeepTimersRunning>true</KeepTimersRunning> + <OverrideVtor>false</OverrideVtor> + <CacheFlash>false</CacheFlash> + <ProgFlashFromRam>true</ProgFlashFromRam> + <RamSnippetAddress>0x20000000</RamSnippetAddress> + <UncachedRange /> + <OverrideVtorValue>exception_table</OverrideVtorValue> + <BootSegment>2</BootSegment> + <eraseonlaunchrule>1</eraseonlaunchrule> + <AsfFrameworkConfig> + <framework-data xmlns=""> + <options /> + <configurations /> + <files /> + <documentation help="" /> + <offline-documentation help="" /> + <dependencies> + <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.17.0" /> + </dependencies> + </framework-data> + </AsfFrameworkConfig> + <avrtool>com.atmel.avrdbg.tool.samice</avrtool> + <avrtoolinterface>SWD</avrtoolinterface> + <com_atmel_avrdbg_tool_samice> + <ToolOptions> + <InterfaceProperties> + <SwdClock>4000000</SwdClock> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.samice</ToolType> + <ToolNumber>28010306</ToolNumber> + <ToolName>SAM-ICE</ToolName> + </com_atmel_avrdbg_tool_samice> + <UseGdb>True</UseGdb> + <com_atmel_avrdbg_tool_edbg> + <ToolOptions> + <InterfaceProperties> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.edbg</ToolType> + <ToolNumber>ATML2320021800000012</ToolNumber> + <ToolName>EDBG</ToolName> + </com_atmel_avrdbg_tool_edbg> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../cmsis/linkerScripts</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tsamd21g18a_flash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + </ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcc.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.DefaultIncludePath>False</armgcc.compiler.directories.DefaultIncludePath> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + <Value>../../../../../../../../libraries/LiquidCrystal_I2C</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize (-O1)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.optimization.PrepareDataForGarbageCollection>True</armgcc.compiler.optimization.PrepareDataForGarbageCollection> + <armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcc.compiler.miscellaneous.OtherFlags>-std=c99</armgcc.compiler.miscellaneous.OtherFlags> + <armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>USB_VID=0x2341</Value> + <Value>USB_PID=0x004d</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.DefaultIncludePath>False</armgcccpp.compiler.directories.DefaultIncludePath> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + <Value>../../../../../../../../libraries/LiquidCrystal_I2C</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize (-O1)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.optimization.PrepareDataForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareDataForGarbageCollection> + <armgcccpp.compiler.optimization.DebugLevel>Maximum (-g3)</armgcccpp.compiler.optimization.DebugLevel> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.compiler.miscellaneous.OtherFlags>-std=c++98</armgcccpp.compiler.miscellaneous.OtherFlags> + <armgcccpp.linker.general.UseNewlibNano>True</armgcccpp.linker.general.UseNewlibNano> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../../../../../variants/arduino_zero/linker_scripts/gcc</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.memorysettings.ExternalRAM /> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tflash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.assembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.assembler.general.IncludePaths> + <armgcccpp.assembler.debugging.DebugLevel>Default (-g)</armgcccpp.assembler.debugging.DebugLevel> + <armgcccpp.preprocessingassembler.general.DefaultIncludePath>False</armgcccpp.preprocessingassembler.general.DefaultIncludePath> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel> +</ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <ItemGroup> + <Folder Include="core" /> + <Folder Include="Wire" /> + <Folder Include="SPI" /> + <Folder Include="variant" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\..\..\..\..\..\..\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp"> + <SubType>compile</SubType> + <Link>LiquidCrystal_I2C.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.cpp"> + <SubType>compile</SubType> + <Link>SPI\SPI.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.h"> + <SubType>compile</SubType> + <Link>SPI\SPI.h</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.cpp"> + <SubType>compile</SubType> + <Link>Wire\Wire.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.h"> + <SubType>compile</SubType> + <Link>Wire\Wire.h</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\pins_arduino.h"> + <SubType>compile</SubType> + <Link>variant\pins_arduino.h</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.cpp"> + <SubType>compile</SubType> + <Link>variant\variant.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.h"> + <SubType>compile</SubType> + <Link>variant\variant.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Arduino.h"> + <SubType>compile</SubType> + <Link>core\Arduino.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\binary.h"> + <SubType>compile</SubType> + <Link>core\binary.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Client.h"> + <SubType>compile</SubType> + <Link>core\Client.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.c"> + <SubType>compile</SubType> + <Link>core\delay.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.h"> + <SubType>compile</SubType> + <Link>core\delay.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\HardwareSerial.h"> + <SubType>compile</SubType> + <Link>core\HardwareSerial.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\hooks.c"> + <SubType>compile</SubType> + <Link>core\hooks.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.cpp"> + <SubType>compile</SubType> + <Link>core\IPAddress.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.h"> + <SubType>compile</SubType> + <Link>core\IPAddress.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.c"> + <SubType>compile</SubType> + <Link>core\itoa.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.h"> + <SubType>compile</SubType> + <Link>core\itoa.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\main.cpp"> + <SubType>compile</SubType> + <Link>core\main.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.cpp"> + <SubType>compile</SubType> + <Link>core\Print.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.h"> + <SubType>compile</SubType> + <Link>core\Print.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Printable.h"> + <SubType>compile</SubType> + <Link>core\Printable.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.cpp"> + <SubType>compile</SubType> + <Link>core\Reset.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.h"> + <SubType>compile</SubType> + <Link>core\Reset.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.cpp"> + <SubType>compile</SubType> + <Link>core\RingBuffer.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.h"> + <SubType>compile</SubType> + <Link>core\RingBuffer.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.cpp"> + <SubType>compile</SubType> + <Link>core\SERCOM.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.h"> + <SubType>compile</SubType> + <Link>core\SERCOM.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Server.h"> + <SubType>compile</SubType> + <Link>core\Server.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\startup.c"> + <SubType>compile</SubType> + <Link>core\startup.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.cpp"> + <SubType>compile</SubType> + <Link>core\Stream.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.h"> + <SubType>compile</SubType> + <Link>core\Stream.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.c"> + <SubType>compile</SubType> + <Link>core\syscalls.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.h"> + <SubType>compile</SubType> + <Link>core\syscalls.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Tone.h"> + <SubType>compile</SubType> + <Link>core\Tone.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.cpp"> + <SubType>compile</SubType> + <Link>core\Uart.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.h"> + <SubType>compile</SubType> + <Link>core\Uart.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Udp.h"> + <SubType>compile</SubType> + <Link>core\Udp.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WCharacter.h"> + <SubType>compile</SubType> + <Link>core\WCharacter.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.c"> + <SubType>compile</SubType> + <Link>core\WInterrupts.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.h"> + <SubType>compile</SubType> + <Link>core\WInterrupts.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.c"> + <SubType>compile</SubType> + <Link>core\wiring.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.h"> + <SubType>compile</SubType> + <Link>core\wiring.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.c"> + <SubType>compile</SubType> + <Link>core\wiring_analog.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.h"> + <SubType>compile</SubType> + <Link>core\wiring_analog.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_constants.h"> + <SubType>compile</SubType> + <Link>core\wiring_constants.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.c"> + <SubType>compile</SubType> + <Link>core\wiring_digital.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.h"> + <SubType>compile</SubType> + <Link>core\wiring_digital.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_private.h"> + <SubType>compile</SubType> + <Link>core\wiring_private.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_pulse.h"> + <SubType>compile</SubType> + <Link>core\wiring_pulse.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.c"> + <SubType>compile</SubType> + <Link>core\wiring_shift.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.h"> + <SubType>compile</SubType> + <Link>core\wiring_shift.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.cpp"> + <SubType>compile</SubType> + <Link>core\WMath.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.h"> + <SubType>compile</SubType> + <Link>core\WMath.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.cpp"> + <SubType>compile</SubType> + <Link>core\WString.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.h"> + <SubType>compile</SubType> + <Link>core\WString.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WVariant.h"> + <SubType>compile</SubType> + <Link>core\WVariant.h</Link> + </Compile> + <Compile Include="..\test.cpp"> + <SubType>compile</SubType> + <Link>test.cpp</Link> + </Compile> + <Compile Include="LiquidCrystal_I2C.h"> + <SubType>compile</SubType> + </Compile> + </ItemGroup> + <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" /> +</Project> \ No newline at end of file diff --git a/cores/validation/validation_I2C_I01/test.cpp b/cores/validation/validation_I2C_I01/test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6b4c346520266649b2fd46fbead6bafd736f3a52 --- /dev/null +++ b/cores/validation/validation_I2C_I01/test.cpp @@ -0,0 +1,33 @@ +#include "Arduino.h" +#include <Wire.h> +const uint8_t addressTemp = 0x4Ful; +uint16_t temp = 0; +uint8_t a, b; +void setup() +{ + Serial5.begin( 115200 ); + Serial5.println("Wire init"); + Wire.begin(); +} + +void loop() +{ + Wire.beginTransmission(addressTemp); + Wire.write((uint8_t) 0x00); + Wire.endTransmission(); + + delay(100); + + Wire.requestFrom(addressTemp, 2); + Serial5.print((char)13); + Serial5.print("Temperature : "); + + a = Wire.read(); + b = Wire.read(); + + temp = b << 7; + temp |= a; + temp >>= 7; + + Serial5.print(temp); +} diff --git a/cores/validation/validation_I2C_LCD/build_as6/test.atsln b/cores/validation/validation_I2C_LCD/build_as6/test.atsln new file mode 100644 index 0000000000000000000000000000000000000000..749e8031642f7e15c4630fbe5342fce033772a6c --- /dev/null +++ b/cores/validation/validation_I2C_LCD/build_as6/test.atsln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Atmel Studio Solution File, Format Version 11.00 +Project("{E66E83B9-2572-4076-B26E-6BE79FF3018A}") = "test", "test.cppproj", "{B3F859AD-E162-4C2F-9684-EAC6932FEC80}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Release|ARM = Release|ARM + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.ActiveCfg = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.Build.0 = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.ActiveCfg = Release|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.Build.0 = Release|ARM + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/cores/validation/validation_I2C_LCD/build_as6/test.cppproj b/cores/validation/validation_I2C_LCD/build_as6/test.cppproj new file mode 100644 index 0000000000000000000000000000000000000000..251136f5af8bbc12e551cb05baa9cf13f617f9a3 --- /dev/null +++ b/cores/validation/validation_I2C_LCD/build_as6/test.cppproj @@ -0,0 +1,477 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <SchemaVersion>2.0</SchemaVersion> + <ProjectVersion>6.2</ProjectVersion> + <ToolchainName>com.Atmel.ARMGCC.CPP</ToolchainName> + <ProjectGuid>{b3f859ad-e162-4c2f-9684-eac6932fec80}</ProjectGuid> + <avrdevice>ATSAMD21G18A</avrdevice> + <avrdeviceseries>none</avrdeviceseries> + <OutputType>Executable</OutputType> + <Language>CPP</Language> + <OutputFileName>$(MSBuildProjectName)</OutputFileName> + <OutputFileExtension>.elf</OutputFileExtension> + <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory> + <AssemblyName>test</AssemblyName> + <Name>test</Name> + <RootNamespace>test</RootNamespace> + <ToolchainFlavour>Native</ToolchainFlavour> + <KeepTimersRunning>true</KeepTimersRunning> + <OverrideVtor>false</OverrideVtor> + <CacheFlash>false</CacheFlash> + <ProgFlashFromRam>true</ProgFlashFromRam> + <RamSnippetAddress>0x20000000</RamSnippetAddress> + <UncachedRange /> + <OverrideVtorValue>exception_table</OverrideVtorValue> + <BootSegment>2</BootSegment> + <eraseonlaunchrule>1</eraseonlaunchrule> + <AsfFrameworkConfig> + <framework-data xmlns=""> + <options /> + <configurations /> + <files /> + <documentation help="" /> + <offline-documentation help="" /> + <dependencies> + <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.17.0" /> + </dependencies> + </framework-data> + </AsfFrameworkConfig> + <avrtool>com.atmel.avrdbg.tool.samice</avrtool> + <avrtoolinterface>SWD</avrtoolinterface> + <com_atmel_avrdbg_tool_samice> + <ToolOptions> + <InterfaceProperties> + <SwdClock>4000000</SwdClock> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.samice</ToolType> + <ToolNumber>28010306</ToolNumber> + <ToolName>SAM-ICE</ToolName> + </com_atmel_avrdbg_tool_samice> + <UseGdb>False</UseGdb> + <com_atmel_avrdbg_tool_edbg> + <ToolOptions> + <InterfaceProperties> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.edbg</ToolType> + <ToolNumber>ATML2320021800000003</ToolNumber> + <ToolName>EDBG</ToolName> + </com_atmel_avrdbg_tool_edbg> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../cmsis/linkerScripts</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tsamd21g18a_flash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + </ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcc.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.DefaultIncludePath>False</armgcc.compiler.directories.DefaultIncludePath> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize (-O1)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.optimization.PrepareDataForGarbageCollection>True</armgcc.compiler.optimization.PrepareDataForGarbageCollection> + <armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcc.compiler.miscellaneous.OtherFlags>-std=c99</armgcc.compiler.miscellaneous.OtherFlags> + <armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>USB_VID=0x2341</Value> + <Value>USB_PID=0x004d</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.DefaultIncludePath>False</armgcccpp.compiler.directories.DefaultIncludePath> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize (-O1)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.optimization.PrepareDataForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareDataForGarbageCollection> + <armgcccpp.compiler.optimization.DebugLevel>Maximum (-g3)</armgcccpp.compiler.optimization.DebugLevel> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.compiler.miscellaneous.OtherFlags>-std=c++98</armgcccpp.compiler.miscellaneous.OtherFlags> + <armgcccpp.linker.general.UseNewlibNano>True</armgcccpp.linker.general.UseNewlibNano> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../../../../../variants/arduino_zero/linker_scripts/gcc</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.memorysettings.ExternalRAM /> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tflash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.assembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.assembler.general.IncludePaths> + <armgcccpp.assembler.debugging.DebugLevel>Default (-g)</armgcccpp.assembler.debugging.DebugLevel> + <armgcccpp.preprocessingassembler.general.DefaultIncludePath>False</armgcccpp.preprocessingassembler.general.DefaultIncludePath> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel> +</ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <ItemGroup> + <Folder Include="core" /> + <Folder Include="LiquidCrystal_I2C" /> + <Folder Include="Wire" /> + <Folder Include="SPI" /> + <Folder Include="variant" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\..\..\..\..\..\..\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp"> + <SubType>compile</SubType> + <Link>LiquidCrystal_I2C\LiquidCrystal_I2C.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.h"> + <SubType>compile</SubType> + <Link>LiquidCrystal_I2C\LiquidCrystal_I2C.h</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.cpp"> + <SubType>compile</SubType> + <Link>SPI\SPI.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.h"> + <SubType>compile</SubType> + <Link>SPI\SPI.h</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.cpp"> + <SubType>compile</SubType> + <Link>Wire\Wire.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.h"> + <SubType>compile</SubType> + <Link>Wire\Wire.h</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\pins_arduino.h"> + <SubType>compile</SubType> + <Link>variant\pins_arduino.h</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.cpp"> + <SubType>compile</SubType> + <Link>variant\variant.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.h"> + <SubType>compile</SubType> + <Link>variant\variant.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Arduino.h"> + <SubType>compile</SubType> + <Link>core\Arduino.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\binary.h"> + <SubType>compile</SubType> + <Link>core\binary.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Client.h"> + <SubType>compile</SubType> + <Link>core\Client.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.c"> + <SubType>compile</SubType> + <Link>core\delay.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.h"> + <SubType>compile</SubType> + <Link>core\delay.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\HardwareSerial.h"> + <SubType>compile</SubType> + <Link>core\HardwareSerial.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\hooks.c"> + <SubType>compile</SubType> + <Link>core\hooks.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.cpp"> + <SubType>compile</SubType> + <Link>core\IPAddress.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.h"> + <SubType>compile</SubType> + <Link>core\IPAddress.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.c"> + <SubType>compile</SubType> + <Link>core\itoa.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.h"> + <SubType>compile</SubType> + <Link>core\itoa.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\main.cpp"> + <SubType>compile</SubType> + <Link>core\main.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.cpp"> + <SubType>compile</SubType> + <Link>core\Print.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.h"> + <SubType>compile</SubType> + <Link>core\Print.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Printable.h"> + <SubType>compile</SubType> + <Link>core\Printable.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.cpp"> + <SubType>compile</SubType> + <Link>core\Reset.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.h"> + <SubType>compile</SubType> + <Link>core\Reset.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.cpp"> + <SubType>compile</SubType> + <Link>core\RingBuffer.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.h"> + <SubType>compile</SubType> + <Link>core\RingBuffer.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.cpp"> + <SubType>compile</SubType> + <Link>core\SERCOM.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.h"> + <SubType>compile</SubType> + <Link>core\SERCOM.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Server.h"> + <SubType>compile</SubType> + <Link>core\Server.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\startup.c"> + <SubType>compile</SubType> + <Link>core\startup.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.cpp"> + <SubType>compile</SubType> + <Link>core\Stream.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.h"> + <SubType>compile</SubType> + <Link>core\Stream.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.c"> + <SubType>compile</SubType> + <Link>core\syscalls.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.h"> + <SubType>compile</SubType> + <Link>core\syscalls.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Tone.h"> + <SubType>compile</SubType> + <Link>core\Tone.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.cpp"> + <SubType>compile</SubType> + <Link>core\Uart.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.h"> + <SubType>compile</SubType> + <Link>core\Uart.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Udp.h"> + <SubType>compile</SubType> + <Link>core\Udp.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WCharacter.h"> + <SubType>compile</SubType> + <Link>core\WCharacter.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.c"> + <SubType>compile</SubType> + <Link>core\WInterrupts.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.h"> + <SubType>compile</SubType> + <Link>core\WInterrupts.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.c"> + <SubType>compile</SubType> + <Link>core\wiring.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.h"> + <SubType>compile</SubType> + <Link>core\wiring.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.c"> + <SubType>compile</SubType> + <Link>core\wiring_analog.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.h"> + <SubType>compile</SubType> + <Link>core\wiring_analog.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_constants.h"> + <SubType>compile</SubType> + <Link>core\wiring_constants.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.c"> + <SubType>compile</SubType> + <Link>core\wiring_digital.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.h"> + <SubType>compile</SubType> + <Link>core\wiring_digital.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_private.h"> + <SubType>compile</SubType> + <Link>core\wiring_private.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_pulse.h"> + <SubType>compile</SubType> + <Link>core\wiring_pulse.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.c"> + <SubType>compile</SubType> + <Link>core\wiring_shift.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.h"> + <SubType>compile</SubType> + <Link>core\wiring_shift.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.cpp"> + <SubType>compile</SubType> + <Link>core\WMath.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.h"> + <SubType>compile</SubType> + <Link>core\WMath.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.cpp"> + <SubType>compile</SubType> + <Link>core\WString.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.h"> + <SubType>compile</SubType> + <Link>core\WString.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WVariant.h"> + <SubType>compile</SubType> + <Link>core\WVariant.h</Link> + </Compile> + <Compile Include="..\test.cpp"> + <SubType>compile</SubType> + <Link>test.cpp</Link> + </Compile> + </ItemGroup> + <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" /> +</Project> \ No newline at end of file diff --git a/cores/validation/validation_I2C_LCD/test.cpp b/cores/validation/validation_I2C_LCD/test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3b071fddfc612c46cab7910512d5a7601c0d8a0e --- /dev/null +++ b/cores/validation/validation_I2C_LCD/test.cpp @@ -0,0 +1,20 @@ +#include <Wire.h> +#include "LiquidCrystal_I2C.h" + +LiquidCrystal_I2C lcd(0x27, 16, 2); + +void setup() +{ + Serial5.begin( 9600 ) ; + + lcd.init(); + + lcd.backlight(); + lcd.print("Hello world :)") +} + +void loop() +{ + + delay(1000); +} diff --git a/cores/validation/validation_I2C_multi/build_as6/LiquidCrystal_I2C.h b/cores/validation/validation_I2C_multi/build_as6/LiquidCrystal_I2C.h new file mode 100644 index 0000000000000000000000000000000000000000..e489ccb5fdc800938dc4c27c653ce539a17779c6 --- /dev/null +++ b/cores/validation/validation_I2C_multi/build_as6/LiquidCrystal_I2C.h @@ -0,0 +1,126 @@ +//DFRobot.com +#ifndef LiquidCrystal_I2C_h +#define LiquidCrystal_I2C_h + +//#include <inttypes.h> +#include "Print.h" +//#include <Wire.h> + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + +// flags for backlight control +#define LCD_BACKLIGHT 0x08 +#define LCD_NOBACKLIGHT 0x00 + +#define En B00000100 // Enable bit +#define Rw B00000010 // Read/Write bit +#define Rs B00000001 // Register select bit + +class LiquidCrystal_I2C : public Print { +public: + LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows); + void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS ); + void clear(); + void home(); + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void printLeft(); + void printRight(); + void leftToRight(); + void rightToLeft(); + void shiftIncrement(); + void shiftDecrement(); + void noBacklight(); + void backlight(); + void autoscroll(); + void noAutoscroll(); + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); +#if defined(ARDUINO) && ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + void command(uint8_t); + void init(); + +////compatibility API function aliases +void blink_on(); // alias for blink() +void blink_off(); // alias for noBlink() +void cursor_on(); // alias for cursor() +void cursor_off(); // alias for noCursor() +void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() +void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar() +void printstr(const char[]); + +////Unsupported API functions (not implemented in this library) +uint8_t status(); +void setContrast(uint8_t new_val); +uint8_t keypad(); +void setDelay(int,int); +void on(); +void off(); +uint8_t init_bargraph(uint8_t graphtype); +void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); +void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); + + +private: + void init_priv(); + void send(uint8_t, uint8_t); + void write4bits(uint8_t); + void expanderWrite(uint8_t); + void pulseEnable(uint8_t); + uint8_t _Addr; + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + uint8_t _numlines; + uint8_t _cols; + uint8_t _rows; + uint8_t _backlightval; +}; + +#endif diff --git a/cores/validation/validation_I2C_multi/build_as6/test.atsln b/cores/validation/validation_I2C_multi/build_as6/test.atsln new file mode 100644 index 0000000000000000000000000000000000000000..749e8031642f7e15c4630fbe5342fce033772a6c --- /dev/null +++ b/cores/validation/validation_I2C_multi/build_as6/test.atsln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Atmel Studio Solution File, Format Version 11.00 +Project("{E66E83B9-2572-4076-B26E-6BE79FF3018A}") = "test", "test.cppproj", "{B3F859AD-E162-4C2F-9684-EAC6932FEC80}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Release|ARM = Release|ARM + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.ActiveCfg = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.Build.0 = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.ActiveCfg = Release|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.Build.0 = Release|ARM + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/cores/validation/validation_I2C_multi/build_as6/test.cppproj b/cores/validation/validation_I2C_multi/build_as6/test.cppproj new file mode 100644 index 0000000000000000000000000000000000000000..a294228fba3ede5eef7aefbf6e3680456fb02807 --- /dev/null +++ b/cores/validation/validation_I2C_multi/build_as6/test.cppproj @@ -0,0 +1,477 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <SchemaVersion>2.0</SchemaVersion> + <ProjectVersion>6.2</ProjectVersion> + <ToolchainName>com.Atmel.ARMGCC.CPP</ToolchainName> + <ProjectGuid>{b3f859ad-e162-4c2f-9684-eac6932fec80}</ProjectGuid> + <avrdevice>ATSAMD21G18A</avrdevice> + <avrdeviceseries>none</avrdeviceseries> + <OutputType>Executable</OutputType> + <Language>CPP</Language> + <OutputFileName>$(MSBuildProjectName)</OutputFileName> + <OutputFileExtension>.elf</OutputFileExtension> + <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory> + <AssemblyName>test</AssemblyName> + <Name>test</Name> + <RootNamespace>test</RootNamespace> + <ToolchainFlavour>Native</ToolchainFlavour> + <KeepTimersRunning>true</KeepTimersRunning> + <OverrideVtor>false</OverrideVtor> + <CacheFlash>false</CacheFlash> + <ProgFlashFromRam>true</ProgFlashFromRam> + <RamSnippetAddress>0x20000000</RamSnippetAddress> + <UncachedRange /> + <OverrideVtorValue>exception_table</OverrideVtorValue> + <BootSegment>2</BootSegment> + <eraseonlaunchrule>1</eraseonlaunchrule> + <AsfFrameworkConfig> + <framework-data xmlns=""> + <options /> + <configurations /> + <files /> + <documentation help="" /> + <offline-documentation help="" /> + <dependencies> + <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.17.0" /> + </dependencies> + </framework-data> + </AsfFrameworkConfig> + <avrtool>com.atmel.avrdbg.tool.samice</avrtool> + <avrtoolinterface>SWD</avrtoolinterface> + <com_atmel_avrdbg_tool_samice> + <ToolOptions> + <InterfaceProperties> + <SwdClock>4000000</SwdClock> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.samice</ToolType> + <ToolNumber>28010306</ToolNumber> + <ToolName>SAM-ICE</ToolName> + </com_atmel_avrdbg_tool_samice> + <UseGdb>True</UseGdb> + <com_atmel_avrdbg_tool_edbg> + <ToolOptions> + <InterfaceProperties> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.edbg</ToolType> + <ToolNumber>ATML2320021800000012</ToolNumber> + <ToolName>EDBG</ToolName> + </com_atmel_avrdbg_tool_edbg> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../cmsis/linkerScripts</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tsamd21g18a_flash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + </ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcc.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.DefaultIncludePath>False</armgcc.compiler.directories.DefaultIncludePath> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + <Value>../../../../../../../../libraries/LiquidCrystal_I2C</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize (-O1)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.optimization.PrepareDataForGarbageCollection>True</armgcc.compiler.optimization.PrepareDataForGarbageCollection> + <armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcc.compiler.miscellaneous.OtherFlags>-std=c99</armgcc.compiler.miscellaneous.OtherFlags> + <armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>USB_VID=0x2341</Value> + <Value>USB_PID=0x004d</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.DefaultIncludePath>False</armgcccpp.compiler.directories.DefaultIncludePath> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + <Value>../../../../../../../../libraries/LiquidCrystal_I2C</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize (-O1)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.optimization.PrepareDataForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareDataForGarbageCollection> + <armgcccpp.compiler.optimization.DebugLevel>Maximum (-g3)</armgcccpp.compiler.optimization.DebugLevel> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.compiler.miscellaneous.OtherFlags>-std=c++98</armgcccpp.compiler.miscellaneous.OtherFlags> + <armgcccpp.linker.general.UseNewlibNano>True</armgcccpp.linker.general.UseNewlibNano> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../../../../../variants/arduino_zero/linker_scripts/gcc</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.memorysettings.ExternalRAM /> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tflash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.assembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.assembler.general.IncludePaths> + <armgcccpp.assembler.debugging.DebugLevel>Default (-g)</armgcccpp.assembler.debugging.DebugLevel> + <armgcccpp.preprocessingassembler.general.DefaultIncludePath>False</armgcccpp.preprocessingassembler.general.DefaultIncludePath> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel> +</ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <ItemGroup> + <Folder Include="core" /> + <Folder Include="Wire" /> + <Folder Include="SPI" /> + <Folder Include="variant" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\..\..\..\..\..\..\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp"> + <SubType>compile</SubType> + <Link>LiquidCrystal_I2C.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.cpp"> + <SubType>compile</SubType> + <Link>SPI\SPI.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.h"> + <SubType>compile</SubType> + <Link>SPI\SPI.h</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.cpp"> + <SubType>compile</SubType> + <Link>Wire\Wire.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.h"> + <SubType>compile</SubType> + <Link>Wire\Wire.h</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\pins_arduino.h"> + <SubType>compile</SubType> + <Link>variant\pins_arduino.h</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.cpp"> + <SubType>compile</SubType> + <Link>variant\variant.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.h"> + <SubType>compile</SubType> + <Link>variant\variant.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Arduino.h"> + <SubType>compile</SubType> + <Link>core\Arduino.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\binary.h"> + <SubType>compile</SubType> + <Link>core\binary.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Client.h"> + <SubType>compile</SubType> + <Link>core\Client.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.c"> + <SubType>compile</SubType> + <Link>core\delay.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.h"> + <SubType>compile</SubType> + <Link>core\delay.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\HardwareSerial.h"> + <SubType>compile</SubType> + <Link>core\HardwareSerial.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\hooks.c"> + <SubType>compile</SubType> + <Link>core\hooks.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.cpp"> + <SubType>compile</SubType> + <Link>core\IPAddress.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.h"> + <SubType>compile</SubType> + <Link>core\IPAddress.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.c"> + <SubType>compile</SubType> + <Link>core\itoa.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.h"> + <SubType>compile</SubType> + <Link>core\itoa.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\main.cpp"> + <SubType>compile</SubType> + <Link>core\main.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.cpp"> + <SubType>compile</SubType> + <Link>core\Print.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.h"> + <SubType>compile</SubType> + <Link>core\Print.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Printable.h"> + <SubType>compile</SubType> + <Link>core\Printable.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.cpp"> + <SubType>compile</SubType> + <Link>core\Reset.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.h"> + <SubType>compile</SubType> + <Link>core\Reset.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.cpp"> + <SubType>compile</SubType> + <Link>core\RingBuffer.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.h"> + <SubType>compile</SubType> + <Link>core\RingBuffer.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.cpp"> + <SubType>compile</SubType> + <Link>core\SERCOM.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.h"> + <SubType>compile</SubType> + <Link>core\SERCOM.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Server.h"> + <SubType>compile</SubType> + <Link>core\Server.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\startup.c"> + <SubType>compile</SubType> + <Link>core\startup.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.cpp"> + <SubType>compile</SubType> + <Link>core\Stream.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.h"> + <SubType>compile</SubType> + <Link>core\Stream.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.c"> + <SubType>compile</SubType> + <Link>core\syscalls.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.h"> + <SubType>compile</SubType> + <Link>core\syscalls.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Tone.h"> + <SubType>compile</SubType> + <Link>core\Tone.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.cpp"> + <SubType>compile</SubType> + <Link>core\Uart.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.h"> + <SubType>compile</SubType> + <Link>core\Uart.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Udp.h"> + <SubType>compile</SubType> + <Link>core\Udp.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WCharacter.h"> + <SubType>compile</SubType> + <Link>core\WCharacter.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.c"> + <SubType>compile</SubType> + <Link>core\WInterrupts.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.h"> + <SubType>compile</SubType> + <Link>core\WInterrupts.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.c"> + <SubType>compile</SubType> + <Link>core\wiring.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.h"> + <SubType>compile</SubType> + <Link>core\wiring.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.c"> + <SubType>compile</SubType> + <Link>core\wiring_analog.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.h"> + <SubType>compile</SubType> + <Link>core\wiring_analog.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_constants.h"> + <SubType>compile</SubType> + <Link>core\wiring_constants.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.c"> + <SubType>compile</SubType> + <Link>core\wiring_digital.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.h"> + <SubType>compile</SubType> + <Link>core\wiring_digital.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_private.h"> + <SubType>compile</SubType> + <Link>core\wiring_private.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_pulse.h"> + <SubType>compile</SubType> + <Link>core\wiring_pulse.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.c"> + <SubType>compile</SubType> + <Link>core\wiring_shift.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.h"> + <SubType>compile</SubType> + <Link>core\wiring_shift.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.cpp"> + <SubType>compile</SubType> + <Link>core\WMath.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.h"> + <SubType>compile</SubType> + <Link>core\WMath.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.cpp"> + <SubType>compile</SubType> + <Link>core\WString.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.h"> + <SubType>compile</SubType> + <Link>core\WString.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WVariant.h"> + <SubType>compile</SubType> + <Link>core\WVariant.h</Link> + </Compile> + <Compile Include="..\test.cpp"> + <SubType>compile</SubType> + <Link>test.cpp</Link> + </Compile> + <Compile Include="LiquidCrystal_I2C.h"> + <SubType>compile</SubType> + </Compile> + </ItemGroup> + <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" /> +</Project> \ No newline at end of file diff --git a/cores/validation/validation_I2C_multi/test.cpp b/cores/validation/validation_I2C_multi/test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a2f224b9e2f175c07b4714c9a25371162017a520 --- /dev/null +++ b/cores/validation/validation_I2C_multi/test.cpp @@ -0,0 +1,126 @@ +#include "Arduino.h" +#include <Wire.h> +#include <LiquidCrystal_I2C.h> + + +const uint8_t addressTemp = 0x4Ful; +const uint8_t addressLCD = 0x20ul; +const uint8_t addressRTC = 0x68ul; +uint16_t valueTemp = 0; +uint8_t a, b; + +LiquidCrystal_I2C lcd(addressLCD,16,2); // set the LCD address to 0x20(Cooperate with 3 short circuit caps) for a 16 chars and 2 line display + +struct timeRTC +{ + uint8_t hour; + uint8_t minute; + uint8_t second; + + uint8_t dayMonth; + uint8_t dayWeek; + uint8_t month; + uint8_t year; +} timeRtc; + +// Convert normal decimal to numbers binary coded decimal +uint8_t decToBcd(byte val) +{ + return ( (val/10*16) + (val%10) ); +} + +// Convert binary coded decimal to normal decimal numbers +uint8_t bcdToDec(byte val) +{ + return ( (val/16*10) + (val%16) ); +} + +void updateTime() +{ + Wire.beginTransmission(addressRTC); + //Wire.write((uint8_t)0x3F); + Wire.write((uint8_t)0x00); + Wire.endTransmission(); + + delay(10); + + Wire.requestFrom(addressRTC, 7); + + timeRtc.second = bcdToDec(Wire.read()); + timeRtc.minute = bcdToDec(Wire.read()); + timeRtc.hour = bcdToDec(Wire.read()); + + timeRtc.dayWeek = bcdToDec(Wire.read()); + timeRtc.dayMonth = bcdToDec(Wire.read()); + timeRtc.month = bcdToDec(Wire.read()); + timeRtc.year = bcdToDec(Wire.read()); +} + +void setup() +{ + Serial5.begin( 115200 ); + Serial5.println("Wire init"); + Wire.begin(); + + lcd.init(); + lcd.backlight(); + lcd.home(); + + pinMode(2, INPUT_PULLUP); +} + +void LCDSpecialPrint(uint8_t value) +{ + if(value < 10) + { + lcd.print('0'); + } + + lcd.print(value); +} + +void loop() +{ + Wire.beginTransmission(addressTemp); + Wire.write((uint8_t) 0x00); + Wire.endTransmission(); + + delay(10); + + Wire.requestFrom(addressTemp, 2); + Serial5.print((char)13); // Erase current line + Serial5.print("Temperature : "); + + a = Wire.read(); + b = Wire.read(); + + valueTemp = a << 7; + valueTemp |= b; + valueTemp >>= 7; + + Serial5.print(a); + Serial5.print(" | "); + Serial5.print(b); + + updateTime(); + lcd.setCursor(0, 0); + lcd.print(" "); + LCDSpecialPrint(valueTemp); + lcd.print((char)0xDF); + lcd.print("C "); + + LCDSpecialPrint(timeRtc.month); + lcd.print("/"); + LCDSpecialPrint(timeRtc.dayMonth); + lcd.print("/"); + LCDSpecialPrint(timeRtc.year); + lcd.print(" "); + + lcd.setCursor(0, 1); + lcd.print(" "); + LCDSpecialPrint(timeRtc.hour); + lcd.print(":"); + LCDSpecialPrint(timeRtc.minute); + lcd.print(":"); + LCDSpecialPrint(timeRtc.second); +} diff --git a/cores/validation/validation_chuck/test.cpp b/cores/validation/validation_chuck/test.cpp index e6e3fd4d104a40e60cd310201e345c319549ba0f..793a5052adef1154cc8c54cb89fbc7ba3388df93 100644 --- a/cores/validation/validation_chuck/test.cpp +++ b/cores/validation/validation_chuck/test.cpp @@ -1,33 +1,31 @@ +#include <Arduino.h> #include <Wire.h> -#include "nunchuck_funcs.h" -int loop_cnt=0 ; - -byte accx,accy,zbut,cbut ; -int ledPin = 13 ; +uint8_t accx,accy,zbut,cbut ; void setup() { Serial5.begin( 115200 ) ; - Serial5.println("nunchuck_init"); + Serial5.println("nunchuk init"); Wire.begin(); // join i2c bus as master Wire.beginTransmission(0x52);// transmit to device 0x52 - Wire.write((uint8_t)0x40);// sends memory address + Wire.write((uint8_t)0xF0);// sends sent a zero. + Wire.write((uint8_t)0x55);// sends sent a zero. + Wire.write((uint8_t)0xFB);// sends sent a zero. Wire.write((uint8_t)0x00);// sends sent a zero. Wire.endTransmission();// stop transmitting - Serial5.println( "WiiChuckDemo ready" ) ; - delay(3000); + Serial5.println( "WiiChukDemo ready" ) ; + delay(100); } void loop() { Wire.requestFrom(0x52, 6); - - uint8_t jX = Wire.read(); - uint8_t jY = Wire.read(); + uint8_t jX = Wire.read(); + uint8_t jY = Wire.read(); uint8_t accX = Wire.read(); uint8_t accY = Wire.read(); uint8_t accZ = Wire.read(); @@ -46,6 +44,10 @@ void loop() Serial5.print(accZ); Serial5.print("\tBtn : "); + Serial5.print(" ["); + Serial5.print(misc); + Serial5.print("] "); + switch(misc & 0x3ul) { case 0x0ul: @@ -67,11 +69,11 @@ void loop() default: break; } - Wire.beginTransmission(0x52);// transmit to device 0x52 - Wire.write((uint8_t)0x00);// sends sent a zero. + Wire.write((uint8_t)0x00);// sends sent a zero. Wire.endTransmission();// stop transmitting delay(100); + } diff --git a/cores/validation/validation_core/build_as6/test.cppproj b/cores/validation/validation_core/build_as6/test.cppproj index 935a79159b22a661795c6ad48a23faf82b4aa8a1..232d6310a1f636994e2474c8cbbd2539eb106ad9 100644 --- a/cores/validation/validation_core/build_as6/test.cppproj +++ b/cores/validation/validation_core/build_as6/test.cppproj @@ -37,23 +37,23 @@ </dependencies> </framework-data> </AsfFrameworkConfig> - <avrtool>com.atmel.avrdbg.tool.edbg</avrtool> + <avrtool>com.atmel.avrdbg.tool.samice</avrtool> <avrtoolinterface>SWD</avrtoolinterface> <com_atmel_avrdbg_tool_samice> <ToolOptions> <InterfaceProperties> + <SwdClock>4000000</SwdClock> </InterfaceProperties> <InterfaceName>SWD</InterfaceName> </ToolOptions> <ToolType>com.atmel.avrdbg.tool.samice</ToolType> - <ToolNumber>28001042</ToolNumber> + <ToolNumber>28010306</ToolNumber> <ToolName>SAM-ICE</ToolName> </com_atmel_avrdbg_tool_samice> <UseGdb>True</UseGdb> <com_atmel_avrdbg_tool_edbg> <ToolOptions> <InterfaceProperties> - <SwdClock>4000000</SwdClock> </InterfaceProperties> <InterfaceName>SWD</InterfaceName> </ToolOptions> diff --git a/cores/validation/validation_core/test.cpp b/cores/validation/validation_core/test.cpp index 0e2a384d7273cd6fa6c026e96aa64c1347d6250b..84ed4013f3331d04b312093fdc79b87bb7024daf 100644 --- a/cores/validation/validation_core/test.cpp +++ b/cores/validation/validation_core/test.cpp @@ -30,6 +30,11 @@ static uint32_t ul_Interrupt_Pin5 = 0 ; static uint32_t ul_Interrupt_Pin6 = 0 ; static uint32_t ul_Interrupt_Pin7 = 0 ; +int temps = 0; +int valX = 0; +int valY = 0; + + void setup( void ) { // Initialize the digital pin as an output. @@ -51,9 +56,9 @@ void setup( void ) //********************************************** // Clock output on pin 4 for measure - pinPeripheral( 4, PIO_AC_CLK ) ; // Clock Gen 0 + /* pinPeripheral( 4, PIO_AC_CLK ) ; // Clock Gen 0 pinPeripheral( 5, PIO_AC_CLK ) ; // Clock Gen 1 - pinPeripheral( 13, PIO_AC_CLK ) ; // Clock Gen 3 + pinPeripheral( 13, PIO_AC_CLK ) ; // Clock Gen 3*/ //********************************************** Serial5.begin( 115200 ) ; // Output to EDBG Virtual COM Port @@ -84,6 +89,7 @@ void loop( void ) { volatile int pin_value=0 ; static volatile uint8_t duty_cycle=0 ; + static volatile uint16_t dac_value=0 ; // Test digitalWrite led_step1() ; @@ -108,20 +114,21 @@ void loop( void ) analogWrite( 10 ,duty_cycle ) ; analogWrite( 9, duty_cycle ) ; analogWrite( 8, duty_cycle ) ; - analogWrite( 7, duty_cycle ) ; - analogWrite( 6, duty_cycle ) ; - analogWrite( 5, duty_cycle ) ; - analogWrite( 4, duty_cycle ) ; - Serial5.print("Analog pins: "); + dac_value += 64; + analogWrite(A0, dac_value); + + + + Serial5.print("\r\nAnalog pins: "); - for ( uint32_t i = A1 ; i <= A0+NUM_ANALOG_INPUTS ; i++ ) + for ( uint32_t i = A0 ; i <= A0+NUM_ANALOG_INPUTS ; i++ ) { -/* + int a = analogRead(i); Serial5.print(a, DEC); Serial5.print(" "); -*/ + } Serial5.println(); @@ -152,7 +159,7 @@ void loop( void ) if ( ul_Interrupt_Pin7 == 1 ) { - Serial5.println( "Pin 3 triggered (CHANGE)" ) ; + Serial5.println( "Pin 7 triggered (CHANGE)" ) ; ul_Interrupt_Pin7 = 0 ; } } diff --git a/cores/validation/validation_shield_wifi/build_as6/test.atsln b/cores/validation/validation_shield_wifi/build_as6/test.atsln new file mode 100644 index 0000000000000000000000000000000000000000..749e8031642f7e15c4630fbe5342fce033772a6c --- /dev/null +++ b/cores/validation/validation_shield_wifi/build_as6/test.atsln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Atmel Studio Solution File, Format Version 11.00 +Project("{E66E83B9-2572-4076-B26E-6BE79FF3018A}") = "test", "test.cppproj", "{B3F859AD-E162-4C2F-9684-EAC6932FEC80}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Release|ARM = Release|ARM + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.ActiveCfg = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Debug|ARM.Build.0 = Debug|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.ActiveCfg = Release|ARM + {B3F859AD-E162-4C2F-9684-EAC6932FEC80}.Release|ARM.Build.0 = Release|ARM + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/cores/validation/validation_shield_wifi/build_as6/test.cppproj b/cores/validation/validation_shield_wifi/build_as6/test.cppproj new file mode 100644 index 0000000000000000000000000000000000000000..e7342ab7a855783ac40a05dde201298d0c959abb --- /dev/null +++ b/cores/validation/validation_shield_wifi/build_as6/test.cppproj @@ -0,0 +1,547 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <SchemaVersion>2.0</SchemaVersion> + <ProjectVersion>6.2</ProjectVersion> + <ToolchainName>com.Atmel.ARMGCC.CPP</ToolchainName> + <ProjectGuid>{b3f859ad-e162-4c2f-9684-eac6932fec80}</ProjectGuid> + <avrdevice>ATSAMD21G18A</avrdevice> + <avrdeviceseries>none</avrdeviceseries> + <OutputType>Executable</OutputType> + <Language>CPP</Language> + <OutputFileName>$(MSBuildProjectName)</OutputFileName> + <OutputFileExtension>.elf</OutputFileExtension> + <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory> + <AssemblyName>test</AssemblyName> + <Name>test</Name> + <RootNamespace>test</RootNamespace> + <ToolchainFlavour>Native</ToolchainFlavour> + <KeepTimersRunning>true</KeepTimersRunning> + <OverrideVtor>false</OverrideVtor> + <CacheFlash>false</CacheFlash> + <ProgFlashFromRam>true</ProgFlashFromRam> + <RamSnippetAddress>0x20000000</RamSnippetAddress> + <UncachedRange /> + <OverrideVtorValue>exception_table</OverrideVtorValue> + <BootSegment>2</BootSegment> + <eraseonlaunchrule>1</eraseonlaunchrule> + <AsfFrameworkConfig> + <framework-data xmlns=""> + <options /> + <configurations /> + <files /> + <documentation help="" /> + <offline-documentation help="" /> + <dependencies> + <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.17.0" /> + </dependencies> + </framework-data> + </AsfFrameworkConfig> + <avrtool>com.atmel.avrdbg.tool.edbg</avrtool> + <avrtoolinterface>SWD</avrtoolinterface> + <com_atmel_avrdbg_tool_samice> + <ToolOptions> + <InterfaceProperties> + <SwdClock>4000000</SwdClock> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.samice</ToolType> + <ToolNumber>28010306</ToolNumber> + <ToolName>SAM-ICE</ToolName> + </com_atmel_avrdbg_tool_samice> + <UseGdb>True</UseGdb> + <com_atmel_avrdbg_tool_edbg> + <ToolOptions> + <InterfaceProperties> + <SwdClock>4000000</SwdClock> + </InterfaceProperties> + <InterfaceName>SWD</InterfaceName> + </ToolOptions> + <ToolType>com.atmel.avrdbg.tool.edbg</ToolType> + <ToolNumber>ATML2320021800000012</ToolNumber> + <ToolName>EDBG</ToolName> + </com_atmel_avrdbg_tool_edbg> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>NDEBUG</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../cmsis/linkerScripts</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tsamd21g18a_flash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + </ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <ToolchainSettings> + <ArmGccCpp> + <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex> + <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss> + <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep> + <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin> + <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec> + <armgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcc.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcc.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>F_CPU=48000000</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcc.compiler.symbols.DefSymbols> + <armgcc.compiler.directories.DefaultIncludePath>False</armgcc.compiler.directories.DefaultIncludePath> + <armgcc.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + <Value>../../../../../../../../libraries/WiFi/src</Value> + </ListValues> + </armgcc.compiler.directories.IncludePaths> + <armgcc.compiler.optimization.level>Optimize (-O1)</armgcc.compiler.optimization.level> + <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.optimization.PrepareDataForGarbageCollection>True</armgcc.compiler.optimization.PrepareDataForGarbageCollection> + <armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcc.compiler.miscellaneous.OtherFlags>-std=c99</armgcc.compiler.miscellaneous.OtherFlags> + <armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>DEBUG</Value> + <Value>USB_VID=0x2341</Value> + <Value>USB_PID=0x004d</Value> + <Value>F_CPU=48000000</Value> + <Value>ARDUINO=156</Value> + </ListValues> + </armgcccpp.compiler.symbols.DefSymbols> + <armgcccpp.compiler.directories.DefaultIncludePath>False</armgcccpp.compiler.directories.DefaultIncludePath> + <armgcccpp.compiler.directories.IncludePaths> + <ListValues> + <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value> + <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value> + <Value>../../../../arduino</Value> + <Value>../../../../arduino/USB</Value> + <Value>../../../../../variants/arduino_zero</Value> + <Value>../../../../../libraries/SPI</Value> + <Value>../../../../../libraries/Wire</Value> + <Value>../../../../../../../../libraries/WiFi/src</Value> + </ListValues> + </armgcccpp.compiler.directories.IncludePaths> + <armgcccpp.compiler.optimization.level>Optimize (-O1)</armgcccpp.compiler.optimization.level> + <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.optimization.PrepareDataForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareDataForGarbageCollection> + <armgcccpp.compiler.optimization.DebugLevel>Maximum (-g3)</armgcccpp.compiler.optimization.DebugLevel> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.compiler.miscellaneous.OtherFlags>-std=c++98</armgcccpp.compiler.miscellaneous.OtherFlags> + <armgcccpp.linker.general.UseNewlibNano>True</armgcccpp.linker.general.UseNewlibNano> + <armgcccpp.linker.libraries.Libraries> + <ListValues> + <Value>libm</Value> + </ListValues> + </armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.libraries.LibrarySearchPaths> + <ListValues> + <Value>../../../../../variants/arduino_zero/linker_scripts/gcc</Value> + </ListValues> + </armgcccpp.linker.libraries.LibrarySearchPaths> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.memorysettings.ExternalRAM /> + <armgcccpp.linker.miscellaneous.LinkerFlags>-Tflash.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.assembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.assembler.general.IncludePaths> + <armgcccpp.assembler.debugging.DebugLevel>Default (-g)</armgcccpp.assembler.debugging.DebugLevel> + <armgcccpp.preprocessingassembler.general.DefaultIncludePath>False</armgcccpp.preprocessingassembler.general.DefaultIncludePath> + <armgcccpp.preprocessingassembler.general.IncludePaths> + <ListValues> + <Value>../../../arduino</Value> + </ListValues> + </armgcccpp.preprocessingassembler.general.IncludePaths> + <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel> + </ArmGccCpp> + </ToolchainSettings> + </PropertyGroup> + <ItemGroup> + <Folder Include="core" /> + <Folder Include="WiFi" /> + <Folder Include="WiFi\utility" /> + <Folder Include="Wire" /> + <Folder Include="SPI" /> + <Folder Include="variant" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\test.cpp"> + <SubType>compile</SubType> + <Link>test.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\pins_arduino.h"> + <SubType>compile</SubType> + <Link>variant\pins_arduino.h</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.cpp"> + <SubType>compile</SubType> + <Link>variant\variant.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\variants\arduino_zero\variant.h"> + <SubType>compile</SubType> + <Link>variant\variant.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Arduino.h"> + <SubType>compile</SubType> + <Link>core\Arduino.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\binary.h"> + <SubType>compile</SubType> + <Link>core\binary.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Client.h"> + <SubType>compile</SubType> + <Link>core\Client.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.c"> + <SubType>compile</SubType> + <Link>core\delay.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\delay.h"> + <SubType>compile</SubType> + <Link>core\delay.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\HardwareSerial.h"> + <SubType>compile</SubType> + <Link>core\HardwareSerial.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\hooks.c"> + <SubType>compile</SubType> + <Link>core\hooks.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.cpp"> + <SubType>compile</SubType> + <Link>core\IPAddress.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\IPAddress.h"> + <SubType>compile</SubType> + <Link>core\IPAddress.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.c"> + <SubType>compile</SubType> + <Link>core\itoa.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\itoa.h"> + <SubType>compile</SubType> + <Link>core\itoa.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\main.cpp"> + <SubType>compile</SubType> + <Link>core\main.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.cpp"> + <SubType>compile</SubType> + <Link>core\Print.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Print.h"> + <SubType>compile</SubType> + <Link>core\Print.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Printable.h"> + <SubType>compile</SubType> + <Link>core\Printable.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.cpp"> + <SubType>compile</SubType> + <Link>core\Reset.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Reset.h"> + <SubType>compile</SubType> + <Link>core\Reset.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.cpp"> + <SubType>compile</SubType> + <Link>core\RingBuffer.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\RingBuffer.h"> + <SubType>compile</SubType> + <Link>core\RingBuffer.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.cpp"> + <SubType>compile</SubType> + <Link>core\SERCOM.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\SERCOM.h"> + <SubType>compile</SubType> + <Link>core\SERCOM.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Server.h"> + <SubType>compile</SubType> + <Link>core\Server.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\startup.c"> + <SubType>compile</SubType> + <Link>core\startup.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.cpp"> + <SubType>compile</SubType> + <Link>core\Stream.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Stream.h"> + <SubType>compile</SubType> + <Link>core\Stream.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.c"> + <SubType>compile</SubType> + <Link>core\syscalls.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\syscalls.h"> + <SubType>compile</SubType> + <Link>core\syscalls.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Tone.h"> + <SubType>compile</SubType> + <Link>core\Tone.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.cpp"> + <SubType>compile</SubType> + <Link>core\Uart.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\Uart.h"> + <SubType>compile</SubType> + <Link>core\Uart.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\Udp.h"> + <SubType>compile</SubType> + <Link>core\Udp.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WCharacter.h"> + <SubType>compile</SubType> + <Link>core\WCharacter.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.c"> + <SubType>compile</SubType> + <Link>core\WInterrupts.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\WInterrupts.h"> + <SubType>compile</SubType> + <Link>core\WInterrupts.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.c"> + <SubType>compile</SubType> + <Link>core\wiring.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring.h"> + <SubType>compile</SubType> + <Link>core\wiring.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.c"> + <SubType>compile</SubType> + <Link>core\wiring_analog.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_analog.h"> + <SubType>compile</SubType> + <Link>core\wiring_analog.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_constants.h"> + <SubType>compile</SubType> + <Link>core\wiring_constants.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.c"> + <SubType>compile</SubType> + <Link>core\wiring_digital.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_digital.h"> + <SubType>compile</SubType> + <Link>core\wiring_digital.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_private.h"> + <SubType>compile</SubType> + <Link>core\wiring_private.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_pulse.h"> + <SubType>compile</SubType> + <Link>core\wiring_pulse.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.c"> + <SubType>compile</SubType> + <Link>core\wiring_shift.c</Link> + </Compile> + <Compile Include="..\..\..\arduino\wiring_shift.h"> + <SubType>compile</SubType> + <Link>core\wiring_shift.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.cpp"> + <SubType>compile</SubType> + <Link>core\WMath.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WMath.h"> + <SubType>compile</SubType> + <Link>core\WMath.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.cpp"> + <SubType>compile</SubType> + <Link>core\WString.cpp</Link> + </Compile> + <Compile Include="..\..\..\arduino\WString.h"> + <SubType>compile</SubType> + <Link>core\WString.h</Link> + </Compile> + <Compile Include="..\..\..\arduino\WVariant.h"> + <SubType>compile</SubType> + <Link>core\WVariant.h</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.cpp"> + <SubType>compile</SubType> + <Link>SPI\SPI.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\SPI\SPI.h"> + <SubType>compile</SubType> + <Link>SPI\SPI.h</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.cpp"> + <SubType>compile</SubType> + <Link>Wire\Wire.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\libraries\Wire\Wire.h"> + <SubType>compile</SubType> + <Link>Wire\Wire.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\debug.h"> + <SubType>compile</SubType> + <Link>WiFi\utility\debug.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\server_drv.cpp"> + <SubType>compile</SubType> + <Link>WiFi\utility\server_drv.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\server_drv.h"> + <SubType>compile</SubType> + <Link>WiFi\utility\server_drv.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\spi_drv.cpp"> + <SubType>compile</SubType> + <Link>WiFi\utility\spi_drv.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\spi_drv.h"> + <SubType>compile</SubType> + <Link>WiFi\utility\spi_drv.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\wifi_drv.cpp"> + <SubType>compile</SubType> + <Link>WiFi\utility\wifi_drv.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\wifi_drv.h"> + <SubType>compile</SubType> + <Link>WiFi\utility\wifi_drv.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\wifi_spi.h"> + <SubType>compile</SubType> + <Link>WiFi\utility\wifi_spi.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\wl_definitions.h"> + <SubType>compile</SubType> + <Link>WiFi\utility\wl_definitions.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\utility\wl_types.h"> + <SubType>compile</SubType> + <Link>WiFi\utility\wl_types.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFi.cpp"> + <SubType>compile</SubType> + <Link>WiFi\WiFi.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFi.h"> + <SubType>compile</SubType> + <Link>WiFi\WiFi.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFiClient.cpp"> + <SubType>compile</SubType> + <Link>WiFi\WiFiClient.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFiClient.h"> + <SubType>compile</SubType> + <Link>WiFi\WiFiClient.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFiServer.cpp"> + <SubType>compile</SubType> + <Link>WiFi\WiFiServer.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFiServer.h"> + <SubType>compile</SubType> + <Link>WiFi\WiFiServer.h</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFiUdp.cpp"> + <SubType>compile</SubType> + <Link>WiFi\WiFiUdp.cpp</Link> + </Compile> + <Compile Include="..\..\..\..\..\..\..\libraries\WiFi\src\WiFiUdp.h"> + <SubType>compile</SubType> + <Link>WiFi\WiFiUdp.h</Link> + </Compile> + </ItemGroup> + <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" /> +</Project> \ No newline at end of file diff --git a/cores/validation/validation_shield_wifi/test.cpp b/cores/validation/validation_shield_wifi/test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ecfb8f2af5e251b280b40808b5e2acef4192c10f --- /dev/null +++ b/cores/validation/validation_shield_wifi/test.cpp @@ -0,0 +1,178 @@ +/* + + This example connects to an unencrypted Wifi network. + Then it prints the MAC address of the Wifi shield, + the IP address obtained, and other network details. + + Circuit: + * WiFi shield attached + + created 13 July 2010 + by dlf (Metodo2 srl) + modified 31 May 2012 + by Tom Igoe + */ + #include "Arduino.h" + #include <SPI.h> + #include <WiFi.h> + +void printCurrentNet(); +void printWifiData(); +void httpRequest(); + +char ssid[] = "AVRGUEST"; // your network SSID (name) +char pass[] = "MicroController"; // your network password +int status = WL_IDLE_STATUS; // the Wifi radio's status + +WiFiClient client; + +void setup() { + WiFi = WiFiClass(); + client = WiFiClient(); + + delay(500); // Waiting for initialization + +// SPI.begin(); + //Initialize Serial5 and wait for port to open: + Serial5.begin(9600); + while (!Serial5) { + ; // wait for Serial5 port to connect. Needed for Leonardo only + } + + // check for the presence of the shield: + if (WiFi.status() == WL_NO_SHIELD) { + Serial5.println("WiFi shield not present"); + // don't continue: + while(true); + } + + // attempt to connect to Wifi network: + while ( status != WL_CONNECTED) { + Serial5.print("Attempting to connect to WPA SSID: "); + Serial5.println(ssid); + // Connect to WPA/WPA2 network: + status = WiFi.begin(ssid, pass); + + // wait 10 seconds for connection: + delay(10000); + } + + // you're connected now, so print out the data: + Serial5.print("You're connected to the network"); + printCurrentNet(); + printWifiData(); + +} + +void loop() { + // check the network connection once every 10 seconds: + delay(10000); + printCurrentNet(); + + // Trying to connect to http://hasthelargehadroncolliderdestroyedtheworldyet.com/ + Serial5.println("Trying to connect to : www.hasthelargehadroncolliderdestroyedtheworldyet.com :"); + httpRequest(); + while( client.available() ) + { + Serial5.print((char)(client.read())); + } + Serial5.println("END"); +} + +void printWifiData() { + // print your WiFi shield's IP address: + IPAddress ip = WiFi.localIP(); + Serial5.print("IP Address: "); + Serial5.println(ip); + Serial5.println(ip); + + // print your MAC address: + byte mac[6]; + WiFi.macAddress(mac); + Serial5.print("MAC address: "); + Serial5.print(mac[5],HEX); + Serial5.print(":"); + Serial5.print(mac[4],HEX); + Serial5.print(":"); + Serial5.print(mac[3],HEX); + Serial5.print(":"); + Serial5.print(mac[2],HEX); + Serial5.print(":"); + Serial5.print(mac[1],HEX); + Serial5.print(":"); + Serial5.println(mac[0],HEX); + +} + +void printCurrentNet() { + // print the SSID of the network you're attached to: + Serial5.print("SSID: "); + Serial5.println(WiFi.SSID()); + + // print the MAC address of the router you're attached to: + byte bssid[6]; + WiFi.BSSID(bssid); + Serial5.print("BSSID: "); + Serial5.print(bssid[5],HEX); + Serial5.print(":"); + Serial5.print(bssid[4],HEX); + Serial5.print(":"); + Serial5.print(bssid[3],HEX); + Serial5.print(":"); + Serial5.print(bssid[2],HEX); + Serial5.print(":"); + Serial5.print(bssid[1],HEX); + Serial5.print(":"); + Serial5.println(bssid[0],HEX); + + // print the received signal strength: + long rssi = WiFi.RSSI(); + Serial5.print("signal strength (RSSI):"); + Serial5.println(rssi); + + // print the encryption type: + byte encryption = WiFi.encryptionType(); + Serial5.print("Encryption Type:"); + Serial5.println(encryption,HEX); + Serial5.println(); +} + +void httpRequest() { + // close any connection before send a new request. + // This will free the socket on the WiFi shield + client.stop(); + + // if there's a successful connection: + if (client.connect("www.hasthelargehadroncolliderdestroyedtheworldyet.com", 80)) { + Serial5.println("connecting..."); + // send the HTTP PUT request: + client.println("GET / HTTP/1.1"); + client.println("Host: www.hasthelargehadroncolliderdestroyedtheworldyet.com"); + //client.println("User-Agent: ArduinoWiFi/1.1"); + client.println("Connection: close"); + client.println(); + + if( client.connected() ) + { + Serial5.println("\tClient connected"); + while( client.available() == 0 ) + { + //Waiting for data + if( !client.connected() ) + { + Serial5.println("\tClient disconnected !"); + break; + } + } + } + else + { + Serial5.println("\tClient not connected"); + } + + } + else { + // if you couldn't make a connection: + Serial5.println("\tconnection failed"); + } +} diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 8eb5ac2976e3deb1ade58553c7a296b823cc5a85..4369aba907d9cab47725c46fb112aee4bda3803e 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -11,36 +11,43 @@ #include "SPI.h" #include "wiring_digital.h" #include "assert.h" +#include "variant.h" - -SPIClass::SPIClass(SERCOM *s) +SPIClass::SPIClass(SERCOM *p_sercom, uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI) { - assert(s != NULL ); - sercom = s; + assert(p_sercom != NULL ); + _p_sercom = p_sercom; + + _uc_pinMiso = uc_pinMISO; + _uc_pinSCK = uc_pinSCK; + _uc_pinMosi = uc_pinMOSI; } -void SPIClass::begin() { - // PIO init - pinPeripheral(18, g_APinDescription[18].ulPinType); - pinPeripheral(20, g_APinDescription[20].ulPinType); - pinPeripheral(21, g_APinDescription[21].ulPinType); +void SPIClass::begin() +{ + // PIO init + pinPeripheral(_uc_pinMiso, g_APinDescription[_uc_pinMiso].ulPinType); + pinPeripheral(_uc_pinSCK, g_APinDescription[_uc_pinSCK].ulPinType); + pinPeripheral(_uc_pinMosi, g_APinDescription[_uc_pinMosi].ulPinType); + // Default speed set to 4Mhz, SPI mode set to MODE 0 and Bit order set to MSB first. - sercom->initSPI(SPI_PAD_2_SCK_3, SERCOM_RX_PAD_0, SPI_CHAR_SIZE_8_BITS, MSB_FIRST); - sercom->initSPIClock(SERCOM_SPI_MODE_0, 4000000); + _p_sercom->initSPI(SPI_PAD_2_SCK_3, SERCOM_RX_PAD_0, SPI_CHAR_SIZE_8_BITS, MSB_FIRST); + _p_sercom->initSPIClock(SERCOM_SPI_MODE_0, 4000000); - sercom->enableSPI(); + _p_sercom->enableSPI(); } -void SPIClass::end() { - sercom->resetSPI(); +void SPIClass::end() +{ + _p_sercom->resetSPI(); } void SPIClass::setBitOrder(BitOrder order) { if(order == LSBFIRST) - sercom->setDataOrderSPI(LSB_FIRST); + _p_sercom->setDataOrderSPI(LSB_FIRST); else - sercom->setDataOrderSPI(MSB_FIRST); + _p_sercom->setDataOrderSPI(MSB_FIRST); } void SPIClass::setDataMode(uint8_t mode) @@ -48,19 +55,19 @@ void SPIClass::setDataMode(uint8_t mode) switch(mode) { case SPI_MODE0: - sercom->setClockModeSPI(SERCOM_SPI_MODE_0); + _p_sercom->setClockModeSPI(SERCOM_SPI_MODE_0); break; case SPI_MODE1: - sercom->setClockModeSPI(SERCOM_SPI_MODE_1); + _p_sercom->setClockModeSPI(SERCOM_SPI_MODE_1); break; case SPI_MODE2: - sercom->setClockModeSPI(SERCOM_SPI_MODE_2); + _p_sercom->setClockModeSPI(SERCOM_SPI_MODE_2); break; case SPI_MODE3: - sercom->setClockModeSPI(SERCOM_SPI_MODE_3); + _p_sercom->setClockModeSPI(SERCOM_SPI_MODE_3); break; default: @@ -70,22 +77,16 @@ void SPIClass::setDataMode(uint8_t mode) void SPIClass::setClockDivider(uint8_t div) { - sercom->setBaudrateSPI(div); + _p_sercom->setBaudrateSPI(div); } byte SPIClass::transfer(uint8_t data) { - //Can writing new data? - while(!sercom->isDataRegisterEmptySPI()); - //Writing the data - sercom->writeDataSPI(data); - - //Data sent? new data to read? - while(!sercom->isTransmitCompleteSPI() || !sercom->isReceiveCompleteSPI()); + _p_sercom->writeDataSPI(data); //Read data - return sercom->readDataSPI(); + return _p_sercom->readDataSPI(); } void SPIClass::attachInterrupt() { @@ -96,4 +97,4 @@ void SPIClass::detachInterrupt() { // Should be disableInterrupt() } -SPIClass SPI(&sercom4); +SPIClass SPI(&sercom4, 18, 20, 21); diff --git a/libraries/SPI/SPI.h b/libraries/SPI/SPI.h index 1d27bb6e3eaafff25822d483cca83de4eeb296c1..db8a45b00321d44211ceced827c9cf4dcb1a5d0b 100644 --- a/libraries/SPI/SPI.h +++ b/libraries/SPI/SPI.h @@ -12,7 +12,6 @@ #define _SPI_H_INCLUDED #include "variant.h" -#include "SERCOM.h" #include "wiring_constants.h" #define SPI_MODE0 0x02 @@ -22,7 +21,7 @@ class SPIClass { public: - SPIClass(SERCOM *s); + SPIClass(SERCOM *p_sercom, uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI); byte transfer(uint8_t data); @@ -34,15 +33,18 @@ class SPIClass { void end(); void setBitOrder(BitOrder order); - void setDataMode(uint8_t mode); - void setClockDivider(uint8_t div); + void setDataMode(uint8_t uc_mode); + void setClockDivider(uint8_t uc_div); private: - SERCOM *sercom; + SERCOM *_p_sercom; + uint8_t _uc_pinMiso; + uint8_t _uc_pinMosi; + uint8_t _uc_pinSCK; }; #if SPI_INTERFACES_COUNT > 0 -extern SPIClass SPI; + extern SPIClass SPI; #endif #endif diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 9ab0d25a182a2a8b146ccf1f8d03cb3f0fb48cc5..7b92a534f9d2a67f48a0771011661fcd8f31b5a6 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -50,18 +50,28 @@ void TwoWire::begin(uint8_t address) { uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool stopBit) { - size_t toRead = quantity + 1; + if(quantity == 0) + { + return 0; + } + + + size_t byteRead = 0; if(sercom->startTransmissionWIRE(address, WIRE_READ_FLAG)) { + + // Read first data + rxBuffer.store_char(sercom->readDataWIRE()); + // Connected to slave - while(toRead--) - //for(toRead = quantity; toRead >= 0; --toRead) + //while(toRead--) + for(byteRead = 0; byteRead < quantity; ++byteRead) { - if( toRead == 0) // Stop transmission + if( byteRead == quantity - 1) // Stop transmission { sercom->prepareNackBitWIRE(); // Prepare NACK to stop slave transmission - sercom->readDataWIRE(); // Clear data register to send NACK + //sercom->readDataWIRE(); // Clear data register to send NACK sercom->prepareCommandBitsWire(WIRE_MASTER_ACT_STOP); // Send Stop } else // Continue transmission @@ -73,7 +83,7 @@ uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool stopBit) } } - return quantity - toRead; + return byteRead; } uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity) diff --git a/platform.txt b/platform.txt index 713035280250de750946d71a60eff5769a014b3c..2212fdacb95066ac8976ed37b129da84392d4b83 100644 --- a/platform.txt +++ b/platform.txt @@ -12,12 +12,14 @@ version=1.5.6 compiler.path={runtime.ide.path}/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/ compiler.c.cmd=arm-none-eabi-gcc -compiler.c.flags=-c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf +compiler.c.flags=-c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf +#-std=gnu99 compiler.c.elf.cmd=arm-none-eabi-g++ compiler.c.elf.flags=-Os -Wl,--gc-sections compiler.S.flags=-c -g -x assembler-with-cpp compiler.cpp.cmd=arm-none-eabi-g++ -compiler.cpp.flags=-c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf +compiler.cpp.flags=-c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf +#-std=gnu++11 compiler.ar.cmd=arm-none-eabi-ar compiler.ar.flags=rcs compiler.objcopy.cmd=arm-none-eabi-objcopy @@ -55,7 +57,9 @@ recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -m recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{build.path}/{archive_file}" "{object_file}" ## Combine gc-sections, archives, and objects -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -o "{build.path}/{build.project_name}.elf" --specs=nano.specs "-L{build.path}" -Wl,--start-group -lm -lgcc -Wl,--end-group -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.path}/{archive_file}" -Wl,--end-group +#recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -o "{build.path}/{build.project_name}.elf" --specs=nano.specs "-L{build.path}" -Wl,--start-group -lm -lgcc -Wl,--end-group -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.path}/{archive_file}" -Wl,--end-group +#recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -Wa,-a,-ad -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -o "{build.path}/{build.project_name}.elf" --specs=nano.specs "-L{build.path}" -Wl,--start-group -lm -lgcc -Wl,--end-group -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.path}/{archive_file}" -Wl,--end-group +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -save-temps -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" -o "{build.path}/{build.project_name}.elf" --specs=nano.specs "-L{build.path}" -Wl,--start-group -lm -lgcc -Wl,--end-group -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.path}/{archive_file}" -Wl,--end-group ## Create eeprom recipe.objcopy.eep.pattern= diff --git a/variants/arduino_zero/variant.h b/variants/arduino_zero/variant.h index 7ffbb3f56c63968cd7561bc317f4915ba3439c5d..3ca7c59716fee500594df6646b27c605163e43f4 100644 --- a/variants/arduino_zero/variant.h +++ b/variants/arduino_zero/variant.h @@ -153,12 +153,12 @@ static const uint8_t SCK = PIN_SPI_SCK; /* * Analog pins */ -static const uint8_t A0 = 20 ; -static const uint8_t A1 = 21 ; -static const uint8_t A2 = 22 ; -static const uint8_t A3 = 23 ; -static const uint8_t A4 = 24 ; -static const uint8_t A5 = 25 ; +static const uint8_t A0 = 24 ; +static const uint8_t A1 = 25 ; +static const uint8_t A2 = 26 ; +static const uint8_t A3 = 27 ; +static const uint8_t A4 = 28 ; +static const uint8_t A5 = 29 ; #define ADC_RESOLUTION 12 /*