Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
14.09.2010, 11:26
|
|
Частый гость
Регистрация: 16.11.2004
Сообщений: 24
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Помогите разобраться ,АЦП Тину 13, что то не так...
Добрый день, помогите разобраться, не пойму чей глюк, мой или програмный.
Коде вижен выдал код для последовательного опроса двух портов АЦП и закидывания результата в массив, я вставил простенький код (красным изменения), откомпилировал коде вижен без ошибок и предупреждений, в протеусе накидал схемку, при запуске выдаёт предупреждение "эмуляция не может происходить в реальном времени т.к. процессор перегружен", даже когда на листе просто один контроллер с прошивкой подцепленной пишет о загрузке CPU почти 100%, посмотрите пожалуйста может чего не так:
#include ‹tiny13.h›
#include ‹delay.h›
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 1
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x00
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
static unsigned char input_index=0;
// Read the AD conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index › (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned char adc_a=0;
unsigned char adc_b=0;
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=Out Func3=Out Func2=In Func1=Out Func0=Out
// State5=T State4=0 State3=0 State2=T State1=1 State0=1
PORTB=0x03;
DDRB=0x1B;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Bandgap Voltage Reference: Off
// ADC Auto Trigger Source: None
// Digital input buffers on ADC0: Off, ADC1: Off, ADC2: On, ADC3: On
DIDR0&=0x03;
DIDR0|=0x24;
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCB;
// Global enable interrupts
#asm("sei")
while (1)
{
adc_a=(unsigned char)~(adc_data[0]››2);
adc_b=(unsigned char)~(adc_data[1]››2);
if(adc_a›(638/5)) {PINB.0=0;}
else {PINB.0=1;}
if(adc_b›(638/5)) {PINB.1=0;}
else {PINB.1=1;}
};
}
|
|
|
|
14.09.2010, 16:56
|
|
Частый гость
Регистрация: 20.07.2006
Сообщений: 37
Сказал спасибо: 2
Сказали Спасибо 7 раз(а) в 4 сообщении(ях)
|
Re: Помогите разобраться ,АЦП Тину 13, что то не так...
сорри, если не прав, но обратил внимание, что когда я в "Коде вижен выдал код для последовательного опроса двух портов АЦП..." в одной из строк стоит register , а дальше как у Вас.
Код:
|
register static unsigned char input_index=0; |
|
|
|
Эти 2 пользователя(ей) сказали Спасибо sasareccer за это сообщение:
|
|
|
14.09.2010, 18:31
|
|
Частый гость
Регистрация: 16.11.2004
Сообщений: 24
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Помогите разобраться ,АЦП Тину 13, что то не так...
Спасибо за помощь, этот "регистер" добавляется при одной из "махровых" конфигураций работы АЦП, я просто наверное немного не так достаю из масива, свои переменные создал, когда наверное надо попробывать иначе как то.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:25.
|
|