Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <compiler.h>
- #include <sysclk.h>
- #include <board.h>
- #include <gpio.h>
- #include <delay.h>
- #include <pm.h>
- //#include <.h>
- #include <intc.h>
- #include <spi.h>
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- #define SPI0 (&AVR32_SPI0)
- #define SPI1 (&AVR32_SPI1)
- spi_options_t spi_options_0 = {
- .baudrate = 1000000,
- .bits = 8,
- .modfdis = 1,
- .reg = 0,
- .spck_delay = 0,
- .spi_mode = SPI_MODE_0,
- .stay_act = 1,
- .trans_delay = 0
- };
- spi_options_t spi_options_1 = {
- .baudrate = 1000000,
- .bits = 8,
- .modfdis = 1,
- .reg = 1,
- .spck_delay = 0,
- .spi_mode = SPI_MODE_0,
- .stay_act = 1,
- .trans_delay = 0
- };
- void SPI0_setup(){//FUNCTION A!
- static const gpio_map_t spi0_gpio_map = {{AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION}, //SPI0 MISO = PA10
- {AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION}, //SPI0 MOSI = PA11
- {AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION}, //SPI0 SCK = PA08
- {AVR32_SPI0_NPCS_0_0_PIN, AVR32_SPI0_NPCS_0_0_FUNCTION}}; //SPI0 SS =
- gpio_enable_module(spi0_gpio_map,sizeof(spi0_gpio_map)/sizeof(spi0_gpio_map[0]));
- }
- void SPI1_setup(){//Function B
- static const gpio_map_t spi1_gpio_map = {{AVR32_SPI1_MISO_0_1_PIN, AVR32_SPI1_MISO_0_1_FUNCTION}, //SPI1 MISO = PA19
- {AVR32_SPI1_MOSI_0_1_PIN, AVR32_SPI1_MOSI_0_1_FUNCTION}, //SPI1 MOSI = PA16
- {AVR32_SPI1_SCK_0_1_PIN, AVR32_SPI1_SCK_0_1_FUNCTION}, //SPI1 SCK = PA15
- //{AVR32_SPI1_NPCS_0_1_PIN, AVR32_SPI1_NPCS_0_1_FUNCTION}//
- }; //SPI SS = PA17
- gpio_enable_module(spi1_gpio_map,sizeof(spi1_gpio_map)/sizeof(spi1_gpio_map[0]));
- }
- void SPI0_init(){
- sysclk_enable_pba_module(SYSCLK_SPI0);
- sysclk_enable_peripheral_clock(SPI0);
- SPI0_setup();
- //printf("initMaster %d \r\n", spi_initMaster(SPI_RADIO_1,&spi_options_radio));
- spi_initMaster(SPI0,&spi_options_0);
- spi_setupChipReg(SPI0,&spi_options_0,sysclk_get_pba_hz());
- //printf("setupChipReg %d \r\n", spi_setupChipReg(SPI_RADIO_1,&spi_options_radio,sysclk_get_pba_hz()));
- spi_enable(SPI0);
- spi_setupChipReg(SPI0,&spi_options_0,FOSC0);
- }
- void SPI1_init(){
- sysclk_enable_pba_module(SYSCLK_SPI1);
- sysclk_enable_peripheral_clock(SPI1);
- SPI1_setup();
- //printf("initMaster %d \r\n", spi_initMaster(SPI_RADIO_1,&spi_options_radio));
- spi_initMaster(SPI1,&spi_options_1);
- spi_setupChipReg(SPI1,&spi_options_1,1000000);
- //spi_setupChipReg(SPI1,&spi_options_1,sysclk_get_pba_hz());
- //printf("setupChipReg %d \r\n", spi_setupChipReg(SPI_RADIO_1,&spi_options_radio,sysclk_get_pba_hz()));
- spi_enable(SPI1);
- spi_setupChipReg(SPI1,&spi_options_1,1000000);
- }
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- volatile bool ledFlag = 0;
- volatile bool ledFlag_old = 0;
- __attribute__((__interrupt__))
- static void int_handler_01(void)
- {
- if(gpio_get_pin_interrupt_flag( GPIO_PUSH_BUTTON_0 ))
- ledFlag_old = ledFlag;
- ledFlag=!ledFlag;
- LED_Toggle(LED0|LED1|LED2|LED3);
- gpio_clear_pin_interrupt_flag( GPIO_PUSH_BUTTON_0 );
- }
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- int main(void)
- {
- sysclk_init();
- pm_switch_to_osc0(&AVR32_PM,FOSC0,3);
- sysclk_enable_peripheral_clock(SYSCLK_INTC | SYSCLK_GPIO | SYSCLK_PM | SYSCLK_SPI0 | SYSCLK_SPI1);
- board_init();
- SPI1_init();
- //SPI0_init();
- LED_Off(LED0|LED1|LED2|LED3);
- gpio_enable_pin_interrupt(GPIO_PUSH_BUTTON_0,GPIO_FALLING_EDGE);
- Disable_global_interrupt();
- INTC_init_interrupts();
- INTC_register_interrupt( &int_handler_01, AVR32_GPIO_IRQ_0 + (GPIO_PUSH_BUTTON_0/8),AVR32_INTC_INT0);
- Enable_global_interrupt();
- while (1) {
- // gpio_toggle_pin(LED0_GPIO);
- // delay_ms(500);
- //spi_selectChip(SPI0,1);
- //while(!spi_is_tx_ready(SPI0));
- //uint16_t txdata0 = 0x80;
- // spi_put(SPI0,txdata0);
- // while(!spi_is_tx_empty(SPI0));
- //spi_unselectChip(SPI0,1);
- //////////////////////////////////////////////////////////////////////////
- spi_selectChip(SPI1,0);
- while(!spi_is_tx_ready(SPI1));
- uint16_t txdata1 = 0x80;
- spi_write(SPI1,txdata1);
- while(!spi_is_tx_empty(SPI1));
- spi_unselectChip(SPI1,0);
- LED_Toggle(LED0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement