eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaADC w ATMEGA16 i ilość stanówRe: ADC w ATMEGA16 i ilość stanów
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.onet.pl!not-for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: ADC w ATMEGA16 i ilość stanów
    Date: Fri, 30 Jul 2010 22:16:08 +0200
    Organization: http://onet.pl
    Lines: 49
    Message-ID: <i2vbt7$1ti$1@news.onet.pl>
    References: <f...@f...googlegroups.com>
    <i2uu17$sq6$1@news.onet.pl>
    <8...@d...googlegroups.com>
    NNTP-Posting-Host: c6-100.icpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1280520936 1970 62.21.6.100 (30 Jul 2010 20:15:36 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Fri, 30 Jul 2010 20:15:36 +0000 (UTC)
    User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706)
    In-Reply-To: <8...@d...googlegroups.com>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:593015
    [ ukryj nagłówki ]

    Jan Górski pisze:
    > Powinno być ?
    Nie wiem co masz w układzie - to Twój projekt

    Taka uwaga - nie wiem skąd u programistów uC bierze się maniera do
    pisania w hex. Może od razu podawać adresy rejestrów zamiast ich
    definicji? np. ((*(volatile uint8_t *)((0x06) + 0x20))) |= 0x20;
    Jak piszesz ADMUX=0X40; to bez zajrzenia do dokumentacji kompletnie nie
    wiem o co chodzi. A zaglądanie do dokumentacji marnuje mój czas. Jak byś
    napisał ADMUX=_BV(REFS0); (jak twój kompilator nie ma to #define _BV(a)
    (1<<a)) to od razu byłoby wiadomo co ustawiasz.

    > KOD --------------
    > void adc_init(void) // Function to initialise the ADC feature
    > {
    > ADCSRA=0X00;
    > ADMUX=0X40;
    > ADCSRA=0X47; // prescaler (128) + ADSC
    > ADCSRA|=0X80; // ENABLE
    Dla zasady wypadałoby tu poczekać na zakończenie tej pierwszej konwersji.
    > }
    > ------------------------
    void setup_adc()
    {
    ADMUX = _BV(REFS0);
    ADCSRA = 0b111;// /128
    ADCSRA |= _BV(ADEN) | _BV(ADSC);
    while( ADCSRA & _BV(ADSC) )
    ;
    }
    nie jest czytelniejsze?

    > unsigned int adc_start(unsigned char channel) // Function to perform
    > an ADC conversion, Takes 0-8 as input
    > // to select which input to convert
    > {
    > unsigned char i;
    > ADCH=0x00; // Clear the previous result
    > ADCL=0x00; // Clear the previous result
    Zbędne, niezdefiniowane zachowanie, ale chyba nie powinno powodować błędów.

    > ADMUX=i|0x60; // Enter which line to perform in the ADC control
    > register
    Dlaczego ustawiasz ADLAR?


    --
    Pozdrawiam
    Michoo

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: