![]() |
|
|
|
|
#1 |
|
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032 ![]() ![]() ![]() |
Напаял на плату 5 шт резисторов 1 кОм, по схеме
и встал вопрос: А как выглядит analog.read на чистом С? Как обычно и полагается в таких случаях - я погуглил... Так как вопрос мной сформулирован криво, гуглил я долго, но таки нашел: Код:
#include <avr/io.h>
#define PORT_ON(port,pin) port |= (1<<pin) //классные кстати дефайны, надо бы запомнить.
#define PORT_OFF(port,pin) port &= ~(1<<pin)
int main(void)
{
unsigned int adc_value; // Variable to hold ADC result
DDRD=0xff; // Set Port D as Output
PORTD = 0x00;
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0);
// ADEN: Set to turn on ADC , by default it is turned off - тут понятно
//ADPS2: ADPS2 and ADPS0 set to make division factor 32 - А вот тут непонятно! Что это и зачем?
ADMUX=0x05; // ADC input channel set to PC5 Опять не очень понятно, а если у меня 2 независимых входа?
while (1)
{
ADCSRA |= (1<<ADSC); // Start conversion
while (ADCSRA & (1<<ADSC)); // wait for conversion to complete
adc_value = ADCW; //Store ADC value
if (adc_value < 512)
{
PORT_OFF(PORTD,7); // Toggle LEDs
PORT_ON (PORTD,6);
}
else
{
PORT_ON(PORTD,7); // Toggle LEDs
PORT_OFF (PORTD,6);
}
}
}
Пока пойду попробую маны почитать.... |
|
|
|
|
|
#2 | |||
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Цитата:
|
|||
|
|
|
|
|
#3 |
|
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032 ![]() ![]() ![]() |
Читал я даташит, читал... но ничего не понял...
Вот это предделитель частоты семплирования что такое? Мне показалось, что это как то влияет на длительность замера... Какое значение предделителя лучше для моей задачи? А это Одиночное преобразование запускается путем записи лог. 1 в бит запуска преобразования ADC ADSC, то есть есть еще и непрерывное преобразование? Ну и на сладкое, ADCW- содержит результат преобразования, а если в ADMUX=0xFF, то что я увижу в ADCW? Усредненное для всех портов? Как долго хранится значение в ADCW? до следующего измерения? Если янапишу так: Код:
if (!(ADCSRA & (1<<ADSC))){ // if conversion complete
adc_value = ADCW; //Store ADC value
ADCSRA |= (1<<ADSC); // Start new conversion
}
|
|
|
|
|
|
#4 |
|
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032 ![]() ![]() ![]() |
Это плохая идея. Очень близкие значения для кнопок. в дополнении к некачественным тактовым кнопкам бывают ложные срабатывания (то есть жму кнопку 2, а отрабатывает кнопка 3 или даже 4.)
Вообще, насколько резистивные кнопки надежны? Нужно просчитать номиналы точнее или этот головняк не стоит того? |
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|