АЦП и внешнее прерывание в ATtiny13
Добавлено: Ср июл 26, 2017 19:31:01
Здравствуйте! Друзья помогите разобраться с причиной того, почему не работает, АЦП и внешнее прерывание в tiny13? Возможно я, что-то напортачил с настройкой.
При подключении переменника и вращении в определенный момент должен появляться высокий лог. уровень на PB4, тоже самое и с внешним прерыванием, при нажатии на кнопку.
#include <avr/io.h>
#define F_CPU 12000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/sfr_defs.h>
unsigned char s;
unsigned int RezultatACP;
ISR (ADC_vect)
RezultatACP = ADCW;
if (RezultatACP < 2046)
{
s=1;
}
else
{
s=0;
}
ADCSRA = ADCSRA | 0x40;
}
ISR (INT0_vect)
{
_delay_ms(20);
PORTB |= (1<<PB4);
}
int main(void)
{
DDRB |= (1<<PB2)|(1<<PB4);
PORTB |= (1<<PB0);
ADMUX = 3;
ADCSRA = 0xCE
MCUCR = (1<<ISC01)| (1<<ISC00);
GIMSK = (1<<INT0);
sei();
while(1)
{
if (bit_is_clear(PINB,PB0))
{
if (s==1)
{
PORTB|=(1<<PB4);
}
}
else
{
PORTB&=~(1<<PB4);
}
}
}
При подключении переменника и вращении в определенный момент должен появляться высокий лог. уровень на PB4, тоже самое и с внешним прерыванием, при нажатии на кнопку.
#include <avr/io.h>
#define F_CPU 12000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/sfr_defs.h>
unsigned char s;
unsigned int RezultatACP;
ISR (ADC_vect)
RezultatACP = ADCW;
if (RezultatACP < 2046)
{
s=1;
}
else
{
s=0;
}
ADCSRA = ADCSRA | 0x40;
}
ISR (INT0_vect)
{
_delay_ms(20);
PORTB |= (1<<PB4);
}
int main(void)
{
DDRB |= (1<<PB2)|(1<<PB4);
PORTB |= (1<<PB0);
ADMUX = 3;
ADCSRA = 0xCE
MCUCR = (1<<ISC01)| (1<<ISC00);
GIMSK = (1<<INT0);
sei();
while(1)
{
if (bit_is_clear(PINB,PB0))
{
if (s==1)
{
PORTB|=(1<<PB4);
}
}
else
{
PORTB&=~(1<<PB4);
}
}
}