решил начать с простого - с пилы.
общаюсь с цапом по 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 МГц.
контроллер рабочий.
смотрел в протеусе цифровую диаграмму на пять секунд работы - нигде рассинхронизации нету.
кто-нибудь может подсказать, в чем возможная проблема?




