решил начать с простого - с пилы.
общаюсь с цапом по spi при помощи atmega8.
устройство пока что находится на макетке.
с цапами до этого ни разу не работал.
выходной сигнал смотрю на осциллографе.
сначала, буквально полторы секунды, вижу нормальную пилу.
а потом - какие-то мельтешащие точки.
вот код:
- Код: Выделить всё
#include <mega8.h>
#include <delay.h>
#include <spi.h>
unsigned char value=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if(value>254){
value=0;
}
value++;
TCNT0 = 0xCE;
}
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
PORTC.0=0;
delay_us(1);
spi(0x03);
spi(value);
PORTC.0=1;
TCNT1H = 0xFF;
TCNT1L = 0xD8;
}
void main(void)
{
DDRB=0x2C;
PORTC=0x03;
DDRC=0x03;
PORTD=0x00;
DDRD=0x00;
TCCR0 = 0x00;
TCNT0 = 0xCE;
TCCR0 = 0x02;
TCCR1B = 0x00;
TCNT1H = 0xFF;
TCNT1L = 0xD8;
OCR1AH = 0x00;
OCR1AL = 0x28;
OCR1BH = 0x00;
OCR1BL = 0x28;
ICR1H = 0x00;
ICR1L = 0x28;
TCCR1A = 0x00;
TCCR1B = 0x01;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x05;
ACSR=0x80;
SFIOR=0x00;
SPCR=0x50;
SPSR=0x00;
#asm("sei")
while (1)
{
};
}
LDAC посажен на землю, чтобы цап постоянно обновлялся.
пробовал и программно играться с ldac - те же плюшки.
ума не приложу, в чем может быть проблема.
цап включен по даташиту, все референсные напряжения - 5В.
кварц 4 МГц.
контроллер рабочий.
смотрел в протеусе цифровую диаграмму на пять секунд работы - нигде рассинхронизации нету.
кто-нибудь может подсказать, в чем возможная проблема?