Здравсвуйте уважаемые форумчани, помогите пожалуйста рашить вопрос, написал програмку для формирования импульсов с использованием задаржек,
Код
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0b11011111;DDRB=0b00100000;
PORTC=0x00;DDRC=0b0111111;
PORTD=0xff;DDRD=0x00;
while(1)
{
delay_us(2);
PORTC.0=1;delay_us(7);PORTC.0=0; //импульс 7мкс
delay_us(98);
PORTC.1=1;delay_us(2);PORTC.1=0; //импульс 2мкс
delay_us(116);
PORTC.2=1;delay_us(7);PORTC.2=0; //импульс 7мкс
delay_us(10);
PORTC.3=1;delay_us(2);PORTC.3=0; //импульс 2мкс
delay_us(1);
PORTC.4=1;delay_us(2);PORTC.4=0; //импульс 2мкс
delay_us(2);
PORTC.5=1;delay_us(11);PORTC.5=0; //импульс 11мкс
delay_us(2);
PORTB.5=1;delay_us(1);PORTB.5=0; //импульс 1мкс
delay_us(2479);
}
}
в протеусе проверил, у импульсов не идеальная длительность как хотилось добиться но это второй вопрос, оснавная проблемма в том что в живую не работает конструкция, тоесть первый импульс с PORTC.0 совпадает с программой но остальные вообще не соответствуют длительности то есть на много меньше чем задовал в коде, в чём проблема вообще не пойму, код махенький ни чего особенного, но...,надеюсь на вашу помощь.Кварц в проекте на 10МГц.
P.S. только начал изучать микроконтроллеры.