From: VaibhavGhadiok <vai...@gm...> - 2010-02-21 00:08:17
|
hi everyone I have added two additional interrupts to i2c-io. I am having a problem with one of them. On the robostix, I receive messages from the gumstix to update throttle values. I wanted to have an emergency stop system. On detecting an interrupt on INT4 the robostix would disable the interrupts that are used to receive messages from the gumstix via i2c. And will set the throttle value to a lower value. (See INT4_vect interrupt routine below). Is there a better method to do this? When only the robostix program is running (gumstix program not running), the interrupt on INT 4 is detected and the throttle value updated to a lower value as seen on the oscilloscope. This should disable interrupts 0-3 and this should disable receiving messages from the gumstix. However, this is not the case. Problem 1: Even after entering the INT4_vect routine and disabling the interrupts, I am again able to receive I2C messages if I start a gumstix program. Problem 2: While running the gumstix program, the code doesn't interrupt. After I stop the gumstix program, I am again able to interrupt the robostix program. Is this because of the use of the SIGNAL routine (for receiving commands from the gumstix for i2c) instead of ISR. I believe SIGNAL doesn't allow itself to be interrupted. //Emergency Stop Setup DDRE &= 0xEF; //Make Interrupt 4 as input EICRB |= 0x03; //Interrupt on rising edge EIMSK |= (1 << INT4); //Enable Interrupt 4, PWM 3B sei(); //Enable all INterrupts while (1) {...} // ************************************************************************** // PWM Interrupt //This interrupt works completely fine. Have it here for completeness ISR(TIMER1_COMPA_vect) { //sei(); ICR1 = pulse_usec[counter++]; if (counter == 14) counter = 0; } //*************************************************************************** // Emergency Stop Interrupt PWM 3B //This is the routine with the problem ISR(INT4_vect) { EIMSK &= 0xF0; //Disbale Interrupts 0,1, 2, 3, all the I2C and TX, RX //Which are the interrupts that I need to disable in order to stop receiving messages from the gumstix pulse_usec[4] = 1025; //Change the throtle value; } Thanks Vaibhav -- View this message in context: http://old.nabble.com/Additional-interrupt-problem-in-i2c-io-tp27671803p27671803.html Sent from the Gumstix mailing list archive at Nabble.com. |