Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma CODE_SEG __NEAR_SEG NON_BANKED
- interrupt void RTI_ISR(void) {
- absoluteTime++;
- /* clear RTIF bit */
- CRGFLG = 0x80;
- }
- #pragma CODE_SEG __NEAR_SEG NON_BANKED
- interrupt void TOF_ISR(void) {
- PORTA = PORTA+1;
- TFLG2 = 0x80;
- }
- #pragma CODE_SEG DEFAULT
- static void RTIInit(void) {
- /* setup of the RTI interrupt frequency */
- /* adjusted to get 1 millisecond (1.024 ms) with 16 MHz oscillator */
- RTICTL = 0x1F; /* set RTI prescaler */
- CRGINT = 0x80; /* enable RTI interrupts */
- }
- static void TimerInit(void){
- DDRA = 0xFF; /* PORTA output*/
- TSCR1 = 0x80; /* Turn on timer*/
- TSRC2 = 0x85; /*Enable timer overflow, set prescalar */
- TFLG2 = 0x80; /*Clear timer interrupt flag*/
- }
- static void PWMInit(void){
- PWMCTL = 0x00; /* 8-bit Mode */
- PWMPOL = 0xFF; /* High polarity mode */
- PWMCAE = 0x00; /* Left-Aligned */
- PWMPRCLK = PWMPRCLK & ~0x07; /* PCKA = 0 */
- PWMCLK = PWMCLK | 0x01; /* PCLK0 = 1 */
- PWMSCLA = 30;
- PWMPER0 = 200;
- PWME = PWME | 0x01; /* Enable PWM Channel 0 */
- PWDTY0 = 120; /* 60% duty cycle on Channel 0 */
- }
- static void SPI0_Init(void){
- // SPI communication initialization as a master
- SPI0BR = 0b00100101; // Baud rate = 24MHz/16 = 1.5MHz 0x53;
- SPI0CR2 = 0b00010000; // SPI0CR2_SPISWAI=1 : Stop SPI clocks when in wait mode
- SPI0CR1 = 0b01010010; // Enable SPI ; Master mode ; CPHA = 1 ;
- WOMS = 0;
- }
- static void SPI0_send(char x){
- // Send a byte to the slave blocking(CPU will wait)
- while( SPI0SR_SPTEF == 0); // Wait until SPIDR becomes empty.
- SPI0DR = 0xAA; // Clear the flag SPI0SR_STEF
- while( SPI0SR_SPIF == 0 ); // Wait until the end of an SPI transfer.
- data = SPI0DR;
- }
- char SPI0_receive(void) {
- // Receive a byte from the slave
- while(SPI0SR_SPTEF == 0); // Wait until the SPI0DR is empty
- SPI0DR = 0x00; // Read SPI0DR to clear the SPI0SR_SPTEF flag
- while(SPI0SR_SPIF == 0); // Wait until a SPI transfer is finished
- return SPI0DR; // Write the received data to data
- }
- void main(void)
- RTIInit();
- TimerInit();
- PWMInit();
- SPI0_Init();
- EnableInterrupts;
- SPI0_send('a');
- for(;;)
- {
- }
- /* Interrupt Vector Table
- * const IsrFunc _vectab[] @0x3e00 /*0xFF80 =
- {
- (IsrFunc)0,
- (RTI_ISR)0, RTI 0xFFF0
- (TOF_ISR)0, Timer Overflow 0xFFDE
- (IsrFunc)0,
- */
Advertisement
Add Comment
Please, Sign In to add comment