• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
analogReference(INTERNAL) 'INTERNAL' was not declared in this scope
#1
Próbuję odczytać wartości z przetwornika ADC z użyciem wewnętrznego źródła napięcia czyli funkcji analogReference(INTERNAL);, ale podczas kompilacji kodu wyrzuca błąd: "'NTERNAL' was not declared in this scope" - dlaczego?
 
Odpowiedź
#2
Że tak zapytam bom niekompetentny. Czy trzeba coś "pisać" aby wykorzystywać wewnętrzne źródło napięcia odniesienia? Czy domyślnie nie jest ono podłączone do Vcc.
Poprawcie jak błądzę.
 
Odpowiedź
#3
(08-01-2020, 21:54)Agregacik napisał(a): Że tak zapytam bom niekompetentny. Czy trzeba coś "pisać" aby wykorzystywać wewnętrzne źródło napięcia odniesienia? Czy domyślnie nie jest ono podłączone do Vcc.
Poprawcie jak błądzę.

Zasilanie do którego podłączamy układ lubi "pływać" - jest mało stabilne co przekłada się na pomiary ADC, dlatego można użyć wewnętrznego źródła zasilania jako odniesienie do pomiarów...
 
Odpowiedź
#4
Zgadza sie ale tyczy sie to AVR, a my mamy szklane kule i się domyślimy dlaczego

analogReference(INTERNAL);

wyrzuca błąd: "'NTERNAL' was not declared in this scope"

Nawet nie wiemy o jaki układ chodzi i mamy się domyśleć. Ja się domyślam ale nie chce cię rozczarować,
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#5
Arduino AVR Boards (Uno, Mega, Leonardo, etc.)

DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards)

INTERNAL: an built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328P and 2.56 volts on the ATmega32U4 and ATmega8 (not available on the Arduino Mega)

INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)

INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)

EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.

Arduino SAMD Boards (Zero, etc.)

AR_DEFAULT: the default analog reference of 3.3V

AR_INTERNAL: a built-in 2.23V reference

AR_INTERNAL1V0: a built-in 1.0V reference

AR_INTERNAL1V65: a built-in 1.65V reference

AR_INTERNAL2V23: a built-in 2.23V reference

AR_EXTERNAL: the voltage applied to the AREF pin is used as the reference

Arduino megaAVR Boards (Uno WiFi Rev2)

DEFAULT: a built-in 0.55V reference

INTERNAL: a built-in 0.55V reference

VDD: Vdd of the ATmega4809. 5V on the Uno WiFi Rev2

INTERNAL0V55: a built-in 0.55V reference

INTERNAL1V1: a built-in 1.1V reference

INTERNAL1V5: a built-in 1.5V reference

INTERNAL2V5: a built-in 2.5V reference

INTERNAL4V3: a built-in 4.3V reference

EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference

Arduino SAM Boards (Due)

AR_DEFAULT: the default analog reference of 3.3V. This is the only supported option for the Due.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#6
Pewnie po tym, co zacytował @Robson Kerman wiele się wyjaśniło, a żeby było do końca jasne "INTERNAL" zadziała dla tych płytek, które mają tylko jedno "INTERNAL", te które mają wybór mają swoje inne "słówka kluczowe".
@Agregacik, domyślnie po starcie Arduino AVR używasz odniesienia do VCC, wewnętrzne lub zewnętrzne trzeba ustawić.
Jako ciekawostkę dodam, że w czasach, gdy minimalne U zasilania było >2.7V, wstawiali źródła wewnętrzne 2.56, gdy potem obniżono do minimum 1.8V wewnętrzne źródło podaje wartość 1.1V. Dzięki temu uC może zmierzyć jakim napięciem jest zasilany. W modelach przejściowych dostępne były obie wartości Uo.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#7
Czyli tak w skrócie:
DEFAULT: napięcie odniesienia wynosi 5V lub 3,3V - w zależności od zasilania układu - czyli jest równe napięciu zasilania układu,
INTERNAL: napięcie odniesienia wynosi 1.1V dla ATmega168 i ATmega328 i 2.56V dla ATmega8,
INTERNAL1V1: napięcie odniesienia wynosi 1.1V - tylko ARDUINO MEGA,
INTERNAL2V56: napięcie odniesienia wynosi 2.56V - tylko ARDUINO MEGA,
EXTERNAL: napięcie podłączone do pinu AREF - 0 do 5V.

źródło https://plociennik.info/index.php/funkcje?start=2
 
Odpowiedź
#8
(09-01-2020, 11:58)Agregacik napisał(a): DEFAULT: napięcie odniesienia wynosi 5V lub 3,3V - w zależności od zasilania układu - czyli jest równe napięciu zasilania układu,

To w końcu jest równe napięciu zasilania, czy 5V lub 3.3V ???
AVR'y stabilnie pracują już od 1.8V, więc nie można powiedzieć że dla DEFAULT: napięcie odniesienia wynosi 5V.
Gdy napięcie odniesienia jest ustawione na 

Kod:
ADMUX = (0x01 << REFS0);   /* AVCC with external capacitor at AREF pin */


To napięcie odniesienia jest dokładnie takie, jak zmierzysz na pinie Vin.
Czyli pływa zależnie od obciążenia.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#9
(08-01-2020, 23:02)Jarewa0606 napisał(a): Zgadza sie ale tyczy sie to  AVR, a my mamy szklane kule i się domyślimy dlaczego

analogReference(INTERNAL);

wyrzuca błąd: "'NTERNAL' was not declared in this scope"

Nawet nie wiemy o jaki układ chodzi i mamy się domyśleć. Ja się domyślam ale nie chce cię rozczarować,

Kurcze edytowałem post i podczas pisania padła mi bateria, dlatego nie dopisałem najważniejszego - używam w tym wypadku Wemos D1 mini (klon) opartego na układzie ESP8266-E12E/S...
 
Odpowiedź
#10
Własnie tego się domyślałem, a wiesz że esp8266 ma napięcie referencyjne wewnętrzne 1V??

Żeby uzyskać dobre wyniki trzeba zadbać o dobre zasilanie.... Dlatego w tym przypadku wemos d1 to lipa...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości