ЦАП max509

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

ЦАП max509

Сообщение Карлсон » 11 фев 2007, 20:01

У меня задача - выводить через этот цап разнообразные по форме сигналы.
решил начать с простого - с пилы.

общаюсь с цапом по 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 МГц.
контроллер рабочий.

смотрел в протеусе цифровую диаграмму на пять секунд работы - нигде рассинхронизации нету.

кто-нибудь может подсказать, в чем возможная проблема?
Аватара пользователя
Карлсон
 
Сообщения: 114
Зарегистрирован: 30 окт 2005, 13:10
Откуда: Москва

Сообщение avr123.nm.ru » 11 фев 2007, 20:40

Вежливому человеку всегда помогут !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Сергей » 11 фев 2007, 22:12

Блин, мог бы и подсказать нормально вместо своего флуда :evil:
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Сообщение Карлсон » 12 фев 2007, 00:15

так, запустив симуляцию еще раз, обнаружилось следующее:

SIMULATION LOG
==============
Design:   UNTITLED.DSN
Doc. no.: <NONE>
Revision: <NONE>
Author:   <NONE>
Created:  11/02/07
Modified: 11/02/07

Compiling source files...
Build completed OK.
Compiling netlist...
Linking netlist...
Partition analysis...

Simulating partition 1 [B40BED2E]...
PROSPICE Release 6.9 SP5 (C) Labcenter Electronics 1993-2006.
SPICE Kernel Version 3f5. (C) Berkeley University ERL.

Reading netlist...
Reading SPICE models...
Building circuit...
Warning: Net #00023 has no DC path to ground.
Check pins: U1-AVCC
Warning: Net #00024 has no DC path to ground.
Check pins: U1-AREF
Instantiating SPICE models...
Simulating...
[U1] AVR model release 6.8 SP4.
[U1] Loaded 512 bytes of persistent EEPROM data.
[U1] Loading HEX file 'C:\cvavr\projects\3phase-atmega8-2\unit1.hex'.
[U1] Read total of 364 bytes from file 'C:\cvavr\projects\3phase-atmega8-2\unit1.hex'.
Warning: [U1] Attempted to write invalid address at pc=00A7
Totaliters=114, Totalsteps=58, Goodsteps=58, Badsteps=0

PROSPICE took 5.56 seconds


Simulation COMPLETE.


вот там ворнинг написан - как и где посмотреть, что его вызывает?
в смысле U1 - это мой контроллер.
куда ткнуться в протеусе?
и почему тогда количество хороших шагов равно количеству всех шагов?
Аватара пользователя
Карлсон
 
Сообщения: 114
Зарегистрирован: 30 окт 2005, 13:10
Откуда: Москва

Сообщение Карлсон » 15 фев 2007, 19:19

проблема успешно разрешилась.
всего то надо было CLR подтянуть к +5.
Аватара пользователя
Карлсон
 
Сообщения: 114
Зарегистрирован: 30 окт 2005, 13:10
Откуда: Москва


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15