• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak odczytać wartość pinu w Atmega8a ?

VPS Starter Arubacloud
0 głosów
201 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez tonn204 Mądrala (7,470 p.)

Cześć, mam w planach zrobić prosty termometr i chcę odczytać wartość z pinu PC1 mikrokontrolera Atmega8a. Wartość to pinu podłączona jest środkowa nóżka z tego analogowego czujnika temperatury. Czy ktoś może mi powiedzieć jak mam to zrobić? Próbowałem odczytać wartość , ale jako wynik dostawałem tylko 1 albo 0.  Dziękuję za pomoc.

/*
    Program to control Atmega8A
 */
#define F_CPU 8000000L

#include <avr/io.h>
#include <util/delay.h>
#include <hd44780.c>

int main(void)
{
    char buffer[33];
    uint8_t temperature;

    // Insert code
    DDRB |= (1 << PB0);
	DDRC |= (1 << PC1);
	DDRC &= ~(1 << PINC1);
    LCD_Initalize(); //  Toggle LED
	temperature= PINC & (1 << PINC1);
	itoa(temperature, buffer, 10)
	
    while(1)
    {
        LCD_Clear();
        LCD_GoTo(2,0);
        LCD_WriteText("Temperatura : ");
        LCD_GoTo(5,1);
        LCD_WriteText(buffer);
        LCD_WriteText(" C");
        _delay_ms(500);

        PORTB |= (1 << PB0);
        _delay_ms(1000);      //  delay 1 second
        PORTB &= ~(1 << PB0);
        _delay_ms(1000);      //  delay 1 second
    }

    return 0;
}

 

komentarz 5 listopada 2020 przez Oscar Nałogowiec (29,340 p.)
Masz trochę szczęścia, bo akurat pin PC1 może pracować jako wejście ADC. Odczyt ADC jest nieco bardziej skomplikowany niż pin cyfrowy bo przetwornik ADC jest urządzeniem, które potrzebuje kilku kroków do wykonania swojej roboty, więc to trwa. Ale zanim zaczniesz programować trzeba sprawdzić czy czujnik jest dobry i czy jest dobrze połączony i dopasowany - tzn napięcie wyjściowe czujnika temperatury mieści się w zakresie napięć wejściowych ADC. Co to jest za czujnik? Masz w domu miernik elektryczny - teraz nawet w markecie można coś takiego kupić za kilkadziesiąt zł?

1 odpowiedź

0 głosów
odpowiedź 4 listopada 2020 przez adrian17 Ekspert (349,740 p.)

Próbowałem odczytać wartość , ale jako wynik dostawałem tylko 1 albo 0.

No tak, bo

PINC & (1 << PINC1);

W tym miejscu czytasz dokładnie jeden bit - czy na porcie jest napięcie.

Musisz użyć konwertera napięcia analogowego na sygnał cyfrowy (liczbę) - ADC. Poczytaj jak się używa ADC w atmedze, jak jego wynik zamienić na napięcie w woltach, a stamtąd możesz już policzyć wskazanie temperatury.

Podobne pytania

0 głosów
0 odpowiedzi 256 wizyt
pytanie zadane 15 listopada 2020 w C i C++ przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 361 wizyt
0 głosów
0 odpowiedzi 218 wizyt
pytanie zadane 31 grudnia 2020 w C i C++ przez tonn204 Mądrala (7,470 p.)

93,012 zapytań

141,977 odpowiedzi

321,266 komentarzy

62,354 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...