Wpis z mikrobloga

#atmel #atmega #arduino #c #diy #elektronika

Mirki zerknelibyście na ten kod? Nie mam teraz dostępu do żadnej atmegi, a muszę po raz pierwszy napisać kod do ADC

! /*
! * Przetwornik_ADC.c
! *ATMEGA328P
! * Created: 2015-05-13 16:50:33
! * Author: SEBEK-LAPTOP
! */
! #define F_CPU 16000000UL
! #include
! #include
! int main(void)
! {
! ADMUX |= (1<512)
! {
! PORTD = 255; //Stan wysoki na na całym porcie
! }
! else PORTD = 0; //Stan niski na całym porcie
! }
! }
  • 9
@paw39: @ninetyeight: @aloalo83: Nie znam się, ale się wypowiem, ADC to rejestr mikrokontrolera w którym znajduje się wynik przetwarzania przetwornika

@DS18B20: możliwe, że jeszcze w pętli będziesz musiał wymuszać start przetwornika, jeśli nie chodzi on non stop (free running):
ADCSRA |=(1 << ADSC); //start conversation
ewentualnie włączyć free running:
bit ADATE w rejestrze ADCSRA
Nie znam się, ale się wypowiem,


@CCCCC: atmega jako 8 bitwy procek ma 2 rejestry wynikowe (górny i dolny), jeśli jego biblioteka ma zdefiniowane ADC jako 16bitowy rejestr składający się z dwóch (HiL) - to brawo. Z załączonego kodu to nie wynika.
@aloalo83: Definicje 16 - bitowych rejestrów znajdują się w tym samym pliku nagłówkowym co definicje 8 - bitowych rejestrów. Założyłem, że skoro kolega używa nazw rejestrów ośmiobitowych i ma dołączony nagłówek
#include to raczej wszystko jest na miejscu.
@DS18B20: Najlepiej pomiar wykonywać w przerwaniu od timera, wtedy pomiary wykonywane są w równych odstępach czasowych a i masz też kontrolę nad częstotliwością próbkowania. Należy wtedy zwrócić szczególną uwagę na fakt, iż przetwornik ADC dla zbyt krótkich czasów może "nie nadążać". Aby precyzyjnie dobrać częstotliwość wykonywania przerwania należy otworzyć notę katalogową na stronie traktującej o przetworniku ADC.