Я программирую микроконтроллер AVR.
У него есть POT, который считывает аналоговый контакт. Кажется, что прерывание вызывается постоянно, и его нужно вызывать во время метода LCD_display, так как он возится с моим ЖК-дисплеем.
Есть ли способ ОСТАНОВИТЬ вторжение до тех пор, пока блок не будет запущен?
int main(void)
{
/*Turn on ADC Interrupt */
ADCSRA |= (1 << ADIE);
/*Turn On GLobal Interrupts*/
sei();
/* Intalise LCD */
lcd_init(LCD_DISP_ON); /* initialize display, cursor off */
lcd_clrscr();
lcd_puts("READY");
DDRB &= ~(1 << PINB5); //set input direction
ADC_Init(128, 0); //initalize ADC
while (1)
{
if (!bit_is_clear(PINB, 5))
{
_delay_ms(500);
if (!pressed)
{
lcd_gotoxy(0,0);
lcd_clrscr();
lcd_puts("test"); //Doesnt work unless I dont comment out the last line of interrupt
pressed = 1;
}
}
/* INTERRUPTS */
//ADC INTERRUPT
ISR(ADC_vect)
{
char adcResult[4];
uint8_t theLowADC = ADCL;
uint16_t theTenBitResults = ADCH<<8 | theLowADC;
itoa(theTenBitResults, adcResult, 10);
ADCSRA |= (1 << ADSC); //next conversion *if i comment out this line it works*
}
ADCSRA
- это регистр специальной функции, который напрямую управляет настройками оборудования. Он определяется как летучий. - person Fake Name   schedule 21.06.2013