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

 
 
 
Reply to this topicStart new topic
> Разбор кода ADC, Небольшой ADC код
konstatinopol
сообщение May 26 2009, 15:02
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 31-01-09
Пользователь №: 44 210



Прошу помощи в разборе кода, не прошу обьяснить что делает код а что значит каждый пункт в нём.
Зарание благодарен.

Проц на борте : Atmega8

Код
#include <stdint.h>                                        // Dateitypen
#include <avr/io.h>                                        // In/Outputs
#include <avr/interrupt.h>                                // Interrupts - fuer sei()
#include <avr/signal.h>                                    // Interrupts - fuer signal()

unsigned char al, ah;
unsigned short aw;

int main (void)
{
    DDRD = 252;
    DDRB = 15;
    DDRC = 0;
    PORTC = 0;                

    sei();                                    // Global Interrupt Flag setzen

        ADMUX = 0;
        ADCSRA = 128 + 64 + 8 + 4 + 1;

    while(1)                                // Run forever
    {
//                PORTD = 128;
    }
    

}


SIGNAL(SIG_ADC)                   // Wenn ADC fertig ist
{
        al = ADCL;
        ah = ADCH;
        aw = (ah <<8) | al;
        PORTD = (aw >> 2)&252;
    PORTB = aw & 15;
        ADCSRA |= 64;
}
Go to the top of the page
 
+Quote Post
SysRq
сообщение May 26 2009, 17:12
Сообщение #2


Чайник, 1 литр
****

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



Какие куски именно не понятно?
Go to the top of the page
 
+Quote Post
konstatinopol
сообщение May 26 2009, 17:30
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 31-01-09
Пользователь №: 44 210



непонятен кусок
Код
DDRD = 252;
    DDRB = 15;

Раньше все DDR были либо 0 либо 7(вход/выход), но почему в ADC они начали принимать другие значения?

Код
ADMUX
        ADCSRA

Для чего они нужны?

Что такое ADC Hight и Low?
Ну и что происходит в строках
Код
aw = (ah <<8) | al;
        PORTD = (aw >> 2)&252;
    PORTB = aw & 15;
        ADCSRA |= 64;
Go to the top of the page
 
+Quote Post
SysRq
сообщение May 26 2009, 17:53
Сообщение #4


Чайник, 1 литр
****

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



DDRn - регистр управления портом n микроконтроллера; устанавливает режим работы ног контроллера порта n как вход или выход. Значение в регистр записывается исходя из схемы железки исключительно.

Что означают значения регистров АЦП читаем в официальном datasheet для ATMega8, раздел "Analog-to-Digital Converter". Если что будет не понятно - только тогда спрашиваем.

Что происходит в строках:
http://ru.wikipedia.org/wiki/Битовые_операции (операторы |, &).
http://ru.wikipedia.org/wiki/Битовый_сдвиг (операторы <<, >>).

PS: Брутфорс программировение, акт 2. (посмотрел предыдущие темы автора.)
Go to the top of the page
 
+Quote Post
KRS
сообщение May 26 2009, 21:03
Сообщение #5


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Этот код вообще выкинуть надо, а не разбирать!
Константы не информативные! Их хотя бы в 16ричном виде записать!
Например 252 = 0xFC и сразу понятен смысл выражений (aw >> 2)&0xFC и aw & 0x0F
младшие 4 бита и старшие 6 бит маскируются.
Go to the top of the page
 
+Quote Post
konstatinopol
сообщение May 27 2009, 09:58
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 31-01-09
Пользователь №: 44 210



Материал хороший, уже посмотрел.
А есть подобное, но на русском или на немецком???
Go to the top of the page
 
+Quote Post
Corvus
сообщение May 27 2009, 12:30
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/12.htm
Go to the top of the page
 
+Quote Post
konstatinopol
сообщение May 28 2009, 17:47
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 31-01-09
Пользователь №: 44 210



Всем спасибо за помощь, вроди разобрался
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 02:12
Рейтинг@Mail.ru


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