Страница 1 из 1
Помогите разобраться с отладкой кода в Atmel Studio 6
Добавлено: Пт дек 08, 2017 16:10:36
201bazza
Всем привет! Пишу код программы, зашиваю в микроконтроллер и все работает не так как надо. С отладкой написанного кода тоже проблемы. Не могу понять как записываются значения в регистры. По замыслу нужно с ножки таймера-счетчика 2 в режиме ШИМ присвоить значения в ножку B0. Вот скриншот самой программы:

Re: Помогите разобраться с отладкой кода в Atmel Studio 6
Добавлено: Вс дек 10, 2017 07:50:46
Z_h_e
PINB3 это константа.
Можно сделать например так
Re: Помогите разобраться с отладкой кода в Atmel Studio 6
Добавлено: Вс дек 10, 2017 08:52:09
Dimon456
Автор пытается программный ШИМ реализовать.
Я так понимаю что PB3 занят, верно?
Если уж программный ШИМ, то
Спойлер
Код: Выделить всё
unsigned char counter=0;
unsigned char lev_ch;
unsigned char buf_lev_ch;
interrupt [TIM2_OVF] void timer2_ovf_isr(void) //обработка прерывания по переполнению таймера
{
if (++counter==0) //счетчик перехода таймера через ноль
{
buf_lev_ch=lev_ch; //значения длительности ШИМ
PORTB |=(1<<0); //подаем 1 на канал
}
if (counter==buf_lev_ch) PORTB&=~(1<<0); //подаем 0 на канал
}
void main(void)
{
DDRB=0b00000001; // установка PortB пины 0 выход
ASSR=0x00;
TCCR2=0b00000001; // настройка таймера, делитель выкл
TCNT2=0x00;
OCR2=0x00;
TIMSK = 0b01000000; // включить прерывание по переполнению таймера
#asm("sei") // разрешить прерывания
lev_ch=0; //начальные значения длительности ШИМ
while (1) //бесконечная шарманка
{
if(lev_ch < 255) lev_ch++; //увеличиваем значения длительности ШИМ канала
delay_ms(50); //пауза 50мс
}
}