|
ATMega16 и АЦП, настройка |
|
|
|
Nov 7 2007, 19:41
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(mr_onnik @ Nov 6 2007, 23:15)  ....................... Господа(товарисчи... кому как больше нравится...), хватит измываться над автором темы... Автор, полную схему со ВСЕМИ параметрами, полностью софт, и подробное описание того что Вы хотели получить, в студию... Тогда точно найдутся желающие Вам подсказать...
|
|
|
|
|
Nov 8 2007, 21:22
|
Группа: Новичок
Сообщений: 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.
|
|
|
|
|
Nov 8 2007, 23:53
|
дятел
    
Группа: Свой
Сообщений: 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 выставить не забыли ?
|
|
|
|
|
Nov 22 2007, 21:28
|
Группа: Новичок
Сообщений: 6
Регистрация: 3-11-07
Пользователь №: 32 020

|
Цитата(singlskv @ Nov 9 2007, 01:53)  А где код инициализации ADC ?
Вы там случаем битик ADEN выставить не забыли ? Скажу сразу: я не профи в этом деле, поэтому с инициализацией у меня прблемы  imho, ADEN выставляется в регистре ADCSR?
|
|
|
|
|
Nov 23 2007, 04:45
|
Местный
  
Группа: Свой
Сообщений: 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
|
|
|
|
|
Nov 23 2007, 10:25
|

Гуру
     
Группа: Модераторы
Сообщений: 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)  Скажу сразу: я не профи в этом деле, поэтому с инициализацией у меня прблемы  Ее у вас просто нет  Возьмите описание АЦП, раздел регистры, выпишите все три описанных там регистра, далее читая описание на каждый из битов регистра решите, какое значение вам нужно записать в этот бит, чтобы АЦП сделало то, что вы хотите. И поставьте запись этих битов в эти регистры в функцию инициализации перед разрешением прерываний.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 23 2007, 11:11
|
Местный
  
Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391

|
Цитата(Сергей Борщ @ Nov 23 2007, 16:25)  А если бы удосужились посмотреть приведенный исходник, то поняли бы, что это вовсе не функция из библиотеки CV. Если бы удосужились более внимательно прочитать пост #17, который я цитировал, то наверное заметили бы, что там внизу текста приведена фраза "Программа CodeVisionAVR.", вот и привел правильный кусок программы для CV. Цитата "Программирование мышкой"? Ну-ну. Насколько я понял в деле программирования и конфигурирования он не силен, потому пусть тыкается в Визарде, потом может научится все правильно конфигурировать Лично сам пишу работаю в AVR Studio (для asm), CodeVision и IAR (для С), потому "программирование мышкой" - не ко мне. Офф-топ закончен.
|
|
|
|
|
Nov 23 2007, 11:26
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Nov 23 2007, 15:14
|

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

|
defunct,в CV это не пройдет.Почему-то у него нет хидера ioavrxxx.h или как он там в яре называется. Соответственно,компилятор не поймет атмеловские название битов регистров. Надо или напрямую в байтах загружать или один раз руками прописать и добавить в библиотеку(или содрать иаровский  .
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|