Страница 1 из 2

Проблемки с АЦП + USART

Добавлено: Чт авг 16, 2012 14:44:26
casino777
Проблема заключается в том, что при таком коде на экран терминала выдаётся только первый символ, то есть должно выдаваться "5 volt" а выдаёт только "5"
И еще к ножке PA0 ничего не подключено а на экран выдаёт 2 вольта как это понимать, но при подключении земли выдаёт 0, а питания 5 вольт соответственно.
Спойлер#include <mega16.h>
#include <stdio.h>
#include <delay.h>

#define ADC_VREF_TYPE 0xC0
unsigned int result;// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

// Declare your global variables here

void main(void)
{

PORTB=0x00;
DDRB=0xFF;

PORTD=0xFF;
DDRD=0x00;

GICR|=0xC0;
MCUCR=0x0A;
MCUCSR=0x00;
GIFR=0xC0;

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: Int., cap. on AREF
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;



// Global enable interrupts
#asm("sei")

while (1)
{

float volt;
delay_ms(1000) ;

volt=read_adc(0);
result=ADCW*5/1023;

#asm ("cli")
printf("%uvolt\n",result);
#asm ("sei")





};
}

Re: Проблемки с АЦП + USART

Добавлено: Чт авг 16, 2012 18:32:06
YS
ничего не подключено а на экран выдаёт 2 вольта
Наводки.

Не нашел, где объявлена переменная result.

Re: Проблемки с АЦП + USART

Добавлено: Чт авг 16, 2012 18:34:04
casino777
unsigned int result;// Read the AD conversion result

5-ая строчка

Re: Проблемки с АЦП + USART

Добавлено: Чт авг 16, 2012 19:09:26
YS
А, да.

Попробуйте забить на всякие printf'ы, а работать непосредственно с UART.

Re: Проблемки с АЦП + USART

Добавлено: Чт авг 16, 2012 21:32:46
casino777
непосредственно - это чрез регистр UDR выдавать данные, правильно понимаю? (

Re: Проблемки с АЦП + USART

Добавлено: Чт авг 16, 2012 21:41:29
YS
Да, как делают все нормальные люди. Использовать printf() во встроенной системе такого уровня - экзотическое извращение. :)

Применять тип float тоже очень не рекомендуется.

Re: Проблемки с АЦП + USART

Добавлено: Чт авг 16, 2012 21:48:11
casino777
спасибо, я учту)

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 11:12:09
casino777
Переделал - заработало, спасибо
А как избавиться от наводок?
и можно ли с помощью АЦП напрямую ток измерять, объясню: мне необходимо поддерживать заданную мощность нагревателя, который является нихромовая спираль, у которой сопротивление от температуры меняется, если да то как выглядит строчка кода,

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 13:36:47
Jack_A
casino777 писал(а): и можно ли с помощью АЦП напрямую ток измерять
Можно, если сделать преобразователь "ток-напряжение", в простейшем случае это резистор, но надо думать, как его подключить ко входам АЦП. Короче говоря, строчка кода будет выглядеть приблизительно так : "Товарисч, нарисуй сначала предполагаемую схему подключения". А ток переменный ? Тогда дополнительная забота - добавить к нему постоянную подставку для укладывания данных в диапазон 0...Uref. И по полученному массиву значений вычислить Ieff. И синхронизировать цикл оцифровки с фазой переменного тока, чтобы показания не плавали. В общем, пустяки :)
Или же использовать выпрямление, но тогда понизится точность.
А если нужна мощность, то еще и напряжение мерить надо, пот`ом перемножать. Это если нагреватель питается не от стабилизированного источника.

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 14:35:06
casino777
ясно) источник постоянный, а что делать с наводками?

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 15:09:12
Аlex
casino777 писал(а):что делать с наводками?
С какими ?
Вы собрали устройство и Вам мешают наводки ? Как они проявляются, откуда берутся, .... ?
мне необходимо поддерживать заданную мощность нагревателя
Я надеюсь, что Вы не собираетесь греть что-то серьёзное, типа куриных яичек ? А то, что-то мне страшно становится, как бы амлетик не получился, с такими познаниями... :(

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 15:14:35
casino777
Написал программу, а мне выдаёт постоянно значенияот 2,3 вольта до 2,5 В хоть к порту ничего не подключал, но когда к порту подсоединяю землю - выдаёт 0, питание - 5 В

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 15:46:59
ploop
хоть к порту ничего не подключал
Ну а что он вам должен выдать? Он всё правильно выдаёт - погоду на Марсе.
подсоединяю землю - выдаёт 0, питание - 5 В
Всё у вас правильно работает значит. Подцепите батарейку для уверенности - должен 1,5В показать.

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 16:03:15
Аlex
casino777 писал(а):хоть к порту ничего не подключал
Дак подключите. Или у Вас в конструкции он будет висеть в воздухе ? Чёто я не понимаю Вас совсем... :dont_know: Что Вы хотели увидеть при висячем в воздухе ПИНе ?
Странные люди какие-то... Используют что-то не так как нужно и удивляются что у них это "что-то" не работает...

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 16:45:21
casino777
зачем понимать? мне было интересно - раз ответа нет, спасибо и на этом

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 16:49:15
ploop
Нет ответа НА ЧТО???
Что будет на висячем пине?

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 17:10:45
Аlex
раз ответа нет, спасибо и на этом
А Вы сами любите отвечать на вопросы ? Посмотрите, сколько их было к Вам, ни на один Вы не ответили...
Или Вы думаете, что тут экстрасенсы собрались ?

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 17:12:03
casino777
вот именно ничего нет НИЧЕГО , а 2 ,5 вольта пишет

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 17:12:52
Аlex
нет НИЧЕГО
Это как понять ? Ничего не должно быть на дисплее ? :)

Re: Проблемки с АЦП + USART

Добавлено: Пт авг 17, 2012 17:14:47
Аlex
Если где-то нет кого-то, значит кто-то где-то есть.
Ну и где-же этот "кто-то" и куда он мог залезть... :)))