void int1_init(void) { #if MULLE_BOARD __disable_interrupt(); //interrupt control register (polaritiy select bit: faling edge, Interrupt Level 1) INT1IC |= 0x01; INT1IC &= 0xC9; //reset interrupt request bit INT1IC &= 0xF7; //Interrupt request cause select register (int pol. switching bit: one edge) IFSR &= 0xFD; puts("INT1 initialized.\n"); __enable_interrupt(); #endif //MULLE_BOARD } //------End Initialize INT1---------------------------------------- //-------INT1 Interrupt Service Routine---------------- #pragma vector=INT1 __interrupt void int1_handler(void) { //only for testing printf("INT1 int %d\n", data_counter); //receive 8 Bit every time an INT1 Interrupt occurs //Transmit/receive data starts after setting transmitting data in SI/O3 transmit/receive register S3TRR = S3TRR; //reset interrupt request bit INT1IC &= 0xF7; // Simon: // SI/O3 Interrupt request bit setzen ? // zum aufruf von SI/O3 ISR aufgerufen S3IC |= (1<<3); } //--------End INT1 Interrupt Service Routine------------------------------------ /*------------------------------------------------------------------------ SIO3 Init added/changed by ----------------------------------------------------------------------*/ void sio3_init(void) { #if MULLE_BOARD __disable_interrupt(); /*------------------------------------------------------------------------\ | SI/O3 Control register (protect off before writing to this register) | |//Sout3 output, Input-output-port, MSB first, external clock, high output| \------------------------------------------------------------------------*/ // setting up configuration ---------------------------------------------- //PROTECT OFF PRCR = 7; S3C |= 0xA0; //S3BRG must not be set, Transfer Bitrate is determined by ext. clk from ECK Chip ! // Interrupt behaviour -------- //Interrupt control register (polarity select bit: rising edge, Interrupt Level 6) S3IC = 0x06; //in Interrupt cause select register: select SI/O3 IFSR = 0x00; //reset Interrupt request bit for SI/O3 S3IC &= ~(1<<3); //PROTECT ON PRCR = 0x00; //Transmit/receive data starts after setting transmitting data in SI/O3 transmit/receive register //S3TRR = 0x00; puts("SI/O3 initialized.\n"); __enable_interrupt(); #endif //MULLE_BOARD } /*------------------------------------------------------------------------ SIO3 ISR added/changed by ----------------------------------------------------------------------*/ #pragma vector = SIO3 __interrupt void sio3_handler(void) { //only for testing printf("SIO3 int %d\n", data_counter); //save S3TRR content in daten Array daten[data_counter] = S3TRR; //increment array data_counter++; //reset Interrupt enable bit to 0 S3IC &= ~(1<<3); }