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

Dlaczego w tym kodzie wyskakuje mi błąd?

Object Storage Arubacloud
0 głosów
132 wizyt
pytanie zadane 5 listopada 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)

Cześć, chcę odczytać wartość (analogową)  z pinu PC1 mikrokontrolera Atmega8A. Robię tak jak autor poradnik z drobnymi modyfikacjami dotyczącymi portów. Dlaczego wyrzuca mi błąd 43 linii, że nie zadeklarowano tych dwóch rejestrów? Czy ten kod da mi zamierzony efekt, jeżeli tak to jak mam zapisać odczytaną wartość do zmiennej.

/*
    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);
    LCD_Initalize(); //  Toggle LED
    SetupADC();

    while(1)
    {
        LCD_Clear();
        LCD_GoTo(2,0);
        LCD_WriteText("Temperatura : ");
        LCD_GoTo(5,1);
        LCD_WriteText("10");
        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;
}

void SetupADC()
{
    ADMUX = (1<<REFS0) | (1<<MUX0);
    ADCSRA = (1<<ADEN) | (1<<ADIE)| (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2);
    DIDR0 = (1<<ADC5D);
    startConversion();
}

void startConversion()
{
    ADCSRA |= (1<<ADSC);
}

ISR(ADC_vect)
{
    dutyCycle = ADC;
    startConversion();
}

 

komentarz 6 listopada 2020 przez mokrowski Mędrzec (156,100 p.)
Makra F_CPU nie umieszcza się w kodzie. Ustawia się je na etapie kompilacji.

Poza tym... pewien jesteś że chcesz robić include dla pliku *.c ?

Brakuje <stdint.h> dla typów uinX_t .

Pamiętaj także by budować program w trybie debug. Inaczej wywołania _delay_*(...) nie rozwijają się poprawnie (to makra).

2 odpowiedzi

0 głosów
odpowiedź 5 listopada 2020 przez Wiciorny Ekspert (270,910 p.)
DIDR0 - a gdzie jest deklaracja portu ?
Być możę takiego portu nie ma, to nie jest "tak że dowolnosć" portów jest dowolna, u Ciebie pierwsze porty są inne, byc może płytka jest inna
DIDR0 - to digital input, moze jest w innymi miejscu lub nie jest w tej sekwencji ?

Dodatkowo, nie obsługujesz przerwać na początku programu, co jeśli nastąpi zmiana impulsu?
0 głosów
odpowiedź 5 listopada 2020 przez adrian17 Ekspert (345,220 p.)

Dlaczego wyrzuca mi błąd 43 linii, że nie zadeklarowano tych dwóch rejestrów? 

Ta?

DIDR0 = (1<<ADC5D);

Tak jak patrzę w datasheet (https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf) to nie ma tam ani takiego rejestru, ani takiego bitu - więc kompilator ma rację. Nie wiem skąd wziąłeś tą instrukcję, ale prawdopodobnie dotyczy innego kontrolera (np atmega 328).

Podobne pytania

0 głosów
2 odpowiedzi 216 wizyt
pytanie zadane 15 stycznia 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
0 odpowiedzi 106 wizyt
pytanie zadane 9 listopada 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 30 grudnia 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...