реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> ATMega16 и АЦП, настройка
singlskv
сообщение Nov 7 2007, 19:41
Сообщение #16


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(mr_onnik @ Nov 6 2007, 23:15) *
.......................
Господа(товарисчи... кому как больше нравится...), хватит измываться над автором темы...

Автор,
полную схему со ВСЕМИ параметрами, полностью софт, и подробное описание того что Вы хотели
получить, в студию...

Тогда точно найдутся желающие Вам подсказать...
Go to the top of the page
 
+Quote Post
mr_onnik
сообщение Nov 8 2007, 21:22
Сообщение #17





Группа: Новичок
Сообщений: 6
Регистрация: 3-11-07
Пользователь №: 32 020



Цитата(singlskv @ Nov 7 2007, 21:41) *
Автор,
полную схему со ВСЕМИ параметрами, полностью софт, и подробное описание того что Вы хотели
получить, в студию...

Прикрепленное изображение

Код
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.7a Evaluation
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 02.11.2007
Author  : Freeware, for evaluation and non-commercial use only
Company :
Comments:


Chip type           : ATmega163
Program type        : Application
Clock frequency     : 4,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega163.h>  
#include <stdio.h>  
#include <stdlib.h>  
#include <io.h>
#include <stdint.h>  
#include <delay.h>  

#define F_CPU 4000000UL


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


// ADC initialization
// ADC Clock frequency: 115,200 kHz
// ADC Voltage Reference: Int., cap. on AREF

                      
void init_avr(void)
{

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC = 0x00;
DDRC = 0xF0;/* set port C pins 7-4 as outputs, 3-0 as inputs */

PORTD=0x00;
DDRD=0x0F;

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

}

// Declare your global variables here

void main(void)
{ unsigned int a = 0;
  
PORTD = 0x00;
PORTC = 0x00;
// Declare your local variables here

init_avr();

while (1)
      
      {
                 a = read_adc(0);                  
                 PORTC.6 = 1;  
                 delay_ms(a);
                 PORTC = 0x00;
                 delay_ms(a);
      
      
      };
}


Программа CodeVisionAVR.
Требуется сделать так, чтобы частота мигания светодиода прямопропорционально зависела от напряжения, подаваемого на ADC0. help.gif
Go to the top of the page
 
+Quote Post
sergeeff Jr.
сообщение Nov 8 2007, 22:15
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 568
Регистрация: 8-07-07
Из: Занзибар
Пользователь №: 28 964



PWM организуй при помощи таймера...


--------------------
"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 8 2007, 23:53
Сообщение #19


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(mr_onnik @ Nov 9 2007, 00:22) *
Код
// ADC initialization
// ADC Clock frequency: 115,200 kHz
// ADC Voltage Reference: Int., cap. on AREF
А где код инициализации ADC ?

Вы там случаем битик ADEN выставить не забыли ?
Go to the top of the page
 
+Quote Post
SergeiCh
сообщение Nov 9 2007, 04:43
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 99
Регистрация: 22-03-07
Из: Novosibirsk
Пользователь №: 26 415



Цитата(mr_onnik @ Nov 9 2007, 04:22) *
Код
#include <mega163.h>
Так ATmega16, как в теме, или ATmega163? AVCC желательно подать ч/з резистор 100 Ом или дроссель 10 мкГ, конденсатор 0.1 мкФ на AVCC, светодиод можно напрямую к порту. В симуляторе бит ADEN выставляется?
Go to the top of the page
 
+Quote Post
mr_onnik
сообщение Nov 22 2007, 21:28
Сообщение #21





Группа: Новичок
Сообщений: 6
Регистрация: 3-11-07
Пользователь №: 32 020



Цитата(singlskv @ Nov 9 2007, 01:53) *
А где код инициализации ADC ?

Вы там случаем битик ADEN выставить не забыли ?


Скажу сразу: я не профи в этом деле, поэтому с инициализацией у меня прблемы sad.gif
imho, ADEN выставляется в регистре ADCSR?
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Nov 23 2007, 04:45
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата
while (1)
{
a = read_adc(0);
PORTC.6 = 1;
delay_ms(a);
PORTC = 0x00;
delay_ms(a);
};

Почитал посты, тут как я понял мало кто использует CV, добавлю свою каплю, так как в CV работал около 1 года.
Так вот зацитированная выше мною часть ИМХО должна выглядеть так:
Цитата
while (1)
{
read_adc(0); //Запуск преобразования АЦП
a = ADCW; //Считывание преобразованного значения
PORTC.6 = 1; //Установили вывод
delay_ms(a); //Пауза
PORTC.6 = 0; //Сбросили вывод
delay_ms(a); //Пауза
};

Если бы удосужились почитать Help на CV, то поняли бы что строка:
Цитата
a = read_adc(0);

Представляет собой - чушь
Правильность конфигурирования выводов и АЦП не проверяю, Wizard для этого есть

Сообщение отредактировал mrKirill - Nov 23 2007, 04:48
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 23 2007, 10:25
Сообщение #23


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(mrKirill @ Nov 23 2007, 06:45) *
Если бы удосужились почитать Help на CV, то поняли бы что строка:
Представляет собой - чушь
А если бы удосужились посмотреть приведенный исходник, то поняли бы, что это вовсе не функция из библиотеки CV.
Цитата(mrKirill @ Nov 23 2007, 06:45) *
Правильность конфигурирования выводов и АЦП не проверяю, Wizard для этого есть
"Программирование мышкой"? Ну-ну.

Цитата(mr_onnik @ Nov 22 2007, 23:28) *
Скажу сразу: я не профи в этом деле, поэтому с инициализацией у меня прблемы sad.gif
Ее у вас просто нет sad.gif Возьмите описание АЦП, раздел регистры, выпишите все три описанных там регистра, далее читая описание на каждый из битов регистра решите, какое значение вам нужно записать в этот бит, чтобы АЦП сделало то, что вы хотите. И поставьте запись этих битов в эти регистры в функцию инициализации перед разрешением прерываний.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Nov 23 2007, 11:11
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(Сергей Борщ @ Nov 23 2007, 16:25) *
А если бы удосужились посмотреть приведенный исходник, то поняли бы, что это вовсе не функция из библиотеки CV.

Если бы удосужились более внимательно прочитать пост #17, который я цитировал, то наверное заметили бы, что там внизу текста приведена фраза "Программа CodeVisionAVR.", вот и привел правильный кусок программы для CV.
Цитата
"Программирование мышкой"? Ну-ну.

Насколько я понял в деле программирования и конфигурирования он не силен, потому пусть тыкается в Визарде, потом может научится все правильно конфигурировать

Лично сам пишу работаю в AVR Studio (для asm), CodeVision и IAR (для С), потому "программирование мышкой" - не ко мне.
Офф-топ закончен.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 23 2007, 11:26
Сообщение #25


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(mrKirill @ Nov 23 2007, 13:11) *
Если бы удосужились более внимательно прочитать пост #17, который я цитировал, то наверное заметили бы, что там внизу текста приведена фраза "Программа CodeVisionAVR.",
Удосужился. CodeVisionAVR - это компилятор. Использовать или нет идущие в его комплекте библиотеки - личное дело программиста. В процитированном вами посте #17 библиотеки не используются. Вывод - ссылка на help по библиотекам неуместна.
Цитата(mrKirill @ Nov 23 2007, 13:11) *
вот и привел правильный кусок программы для CV.
Использование библиотек не является ни необходимым, ни тем более достаточным условием правильности программы. Короче - в посте #22 вы вместо ответа на цитируемый пост #17 написали ответ на какие-то свои мысли, да еще с претензией. На что я вам и указал. И это как раз не оффтоп.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 23 2007, 13:16
Сообщение #26


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Код
#define ADC_CONTROL (1 << ADEN)|(0 << ADIE)|(0 << ADPS2)|(1 << ADPS1)|(1 << ADPS0)
#define MUX_CONTROL (0 << REFS1)|(0 << REFS0)|(0 << ADLAR) // ARef / 10 bit

int ReadAdc(unsigned char channel)
{
    ADMUX = MUX_CONTROL | channel;
    ADCSR = ADC_CONTROL | (1 << ADSC);

    while ( (ADCSR & (1 << ADIF)) == 0); // wait till conversion completes
    return ADCW;
}
Go to the top of the page
 
+Quote Post
WHALE
сообщение Nov 23 2007, 15:14
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



defunct,в CV это не пройдет.Почему-то у него нет хидера ioavrxxx.h или как он там в яре называется.
Соответственно,компилятор не поймет атмеловские название битов регистров.
Надо или напрямую в байтах загружать или один раз руками прописать и добавить в библиотеку(или
содрать иаровский smile.gif .


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 23 2007, 16:26
Сообщение #28


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(WHALE @ Nov 23 2007, 18:14) *
в CV это не пройдет.Почему-то у него нет хидера ioavrxxx.h или как он там в яре называется.
Соответственно,компилятор не поймет атмеловские название битов регистров.

эх sad.gif
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 21:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01487 секунд с 7
ELECTRONIX ©2004-2016