Ignore:
Timestamp:
Apr 30, 2016, 11:29:25 PM (8 years ago)
Author:
ertl-honda
Message:

1.7.10のファイルに更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rtos_arduino/trunk/arduino_lib/hardware/arduino/samd/libraries/SPI/SPI.h

    r136 r224  
    1414#include "variant.h"
    1515#include "wiring_constants.h"
     16#include <Arduino.h>
     17 
     18//#define LSBFIRST 0 //already defined in wiring_constants.h
     19//#define MSBFIRST 1
    1620
    1721#define SPI_MODE0 0x02
     
    2024#define SPI_MODE3 0x01
    2125
     26
     27#define SPI_CLOCK_DIV2 6       //8 MHz
     28#define SPI_CLOCK_DIV4 12      //4 MHz
     29#define SPI_CLOCK_DIV8 24      //2 MHz
     30#define SPI_CLOCK_DIV16 48     //1 MHz
     31#define SPI_CLOCK_DIV32 96     //500 KHz
     32#define SPI_CLOCK_DIV64 192    //250 KHz
     33#define SPI_CLOCK_DIV128 384   //125 KHz
     34
     35#ifndef intStatus
     36#define intStatus() __intStatus()
     37static inline unsigned char __intStatus(void) __attribute__((always_inline, unused));
     38static inline unsigned char __intStatus(void) {
     39        unsigned int primask, faultmask;
     40        asm volatile ("mrs %0, primask" : "=r" (primask));
     41        if (primask) return 0;
     42        asm volatile ("mrs %0, faultmask" : "=r" (faultmask));
     43        if (faultmask) return 0;
     44        return 1;
     45}
     46#endif
     47
     48class SPISettings {
     49        public:
     50                SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode)
     51                {
     52                        interface_clock = clock;
     53                        bit_order = bitOrder;
     54                        data_mode = dataMode;
     55                       
     56                        /*Serial.print("clock: ");
     57                        Serial.println(interface_clock);
     58                        Serial.print("bit order: ");
     59                        Serial.println(bit_order);
     60                        Serial.print("data mode: ");
     61                        Serial.println(data_mode);*/
     62                }
     63               
     64                SPISettings(void)
     65                {
     66                        interface_clock = 4000000;
     67                        bit_order = MSBFIRST;
     68                        data_mode = SPI_MODE0;
     69                       
     70                        /*Serial.print("clock: ");
     71                        Serial.println(interface_clock);
     72                        Serial.print("bit order: ");
     73                        Serial.println(bit_order);
     74                        Serial.print("data mode: ");
     75                        Serial.println(data_mode);*/
     76                }
     77        private:
     78                uint32_t interface_clock;
     79                uint8_t bit_order;
     80                uint8_t data_mode;
     81       
     82        friend class SPIClass; 
     83};
     84
     85
    2286class SPIClass {
    2387  public:
     
    2589
    2690        byte transfer(uint8_t data);
    27 
     91        void transfer(void *data, size_t count);
     92        byte read(void);
     93        uint16_t transfer16(uint16_t data);
     94        void write(uint8_t data);
    2895        // SPI Configuration methods
     96        void beginTransaction(SPISettings settings);
     97        void endTransaction(void);
     98       
    2999        void attachInterrupt();
    30100        void detachInterrupt();
     101       
     102        void usingInterrupt(uint8_t interruptNumber);
    31103
    32104        void begin();
     105        void beginSlave();
    33106        void end();
    34107       
    35108        void setBitOrder(BitOrder order);
    36109        void setDataMode(uint8_t uc_mode);
    37         void setClockDivider(uint8_t uc_div);
     110        void setClockDivider(uint16_t uc_div);
    38111
    39112  private:
     
    42115        uint8_t _uc_pinMosi;
    43116        uint8_t _uc_pinSCK;
     117        uint8_t interruptMode;
     118        uint32_t interruptMask;
     119        uint8_t interruptSave;
     120        uint8_t inTransactionFlag;
    44121};
    45122
Note: See TracChangeset for help on using the changeset viewer.