Перейти к содержанию
    

.......................
Господа(товарисчи... кому как больше нравится...), хватит измываться над автором темы...

 

Автор,

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

получить, в студию...

 

Тогда точно найдутся желающие Вам подсказать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Автор,

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

получить, в студию...

post-32020-1194555585_thumb.jpg

/*****************************************************
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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А где код инициализации ADC ?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

#include <mega163.h>

Так ATmega16, как в теме, или ATmega163? AVCC желательно подать ч/з резистор 100 Ом или дроссель 10 мкГ, конденсатор 0.1 мкФ на AVCC, светодиод можно напрямую к порту. В симуляторе бит ADEN выставляется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А где код инициализации ADC ?

 

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

 

Скажу сразу: я не профи в этом деле, поэтому с инициализацией у меня прблемы :(

imho, ADEN выставляется в регистре ADCSR?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если бы удосужились почитать Help на CV, то поняли бы что строка:

Представляет собой - чушь

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

 

Скажу сразу: я не профи в этом деле, поэтому с инициализацией у меня прблемы :(
Ее у вас просто нет :( Возьмите описание АЦП, раздел регистры, выпишите все три описанных там регистра, далее читая описание на каждый из битов регистра решите, какое значение вам нужно записать в этот бит, чтобы АЦП сделало то, что вы хотите. И поставьте запись этих битов в эти регистры в функцию инициализации перед разрешением прерываний.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если бы удосужились посмотреть приведенный исходник, то поняли бы, что это вовсе не функция из библиотеки CV.

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

"Программирование мышкой"? Ну-ну.

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

 

Лично сам пишу работаю в AVR Studio (для asm), CodeVision и IAR (для С), потому "программирование мышкой" - не ко мне.

Офф-топ закончен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если бы удосужились более внимательно прочитать пост #17, который я цитировал, то наверное заметили бы, что там внизу текста приведена фраза "Программа CodeVisionAVR.",
Удосужился. CodeVisionAVR - это компилятор. Использовать или нет идущие в его комплекте библиотеки - личное дело программиста. В процитированном вами посте #17 библиотеки не используются. Вывод - ссылка на help по библиотекам неуместна.
вот и привел правильный кусок программы для CV.
Использование библиотек не является ни необходимым, ни тем более достаточным условием правильности программы. Короче - в посте #22 вы вместо ответа на цитируемый пост #17 написали ответ на какие-то свои мысли, да еще с претензией. На что я вам и указал. И это как раз не оффтоп.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

#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;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

defunct,в CV это не пройдет.Почему-то у него нет хидера ioavrxxx.h или как он там в яре называется.

Соответственно,компилятор не поймет атмеловские название битов регистров.

Надо или напрямую в байтах загружать или один раз руками прописать и добавить в библиотеку(или

содрать иаровский :) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в CV это не пройдет.Почему-то у него нет хидера ioavrxxx.h или как он там в яре называется.

Соответственно,компилятор не поймет атмеловские название битов регистров.

эх :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...