Я использую Atmega328
с arduino bootloader
. Весь мой код работает нормально. Теперь мне нужно использовать analogRead()
для получения значений АЦП, но как только PC
увидит analogRead()
, он перезапустит микроконтроллер. Вот пример кода.
void setup() {
Serial.begin(19200);
while(!Serial);
Serial.println("Setup finish");
delay(200);
}
void loop() {
Serial.println("Reading analong Values");
uint16_t a = analogRead(A0);
Serial.println(a);
delay(1000);
}
Выход,
Setup finish
�Setup finish
�Setup finish
�Setup finish
�Setup finish
�Setup finish
�Setup finish
�Setup finish
�
Я также пытался поставить delay()
до и после него, но тщетно. Как это исправить. Спасибо.
Обновление: я пробовал
0
вместоA0
, но не напрасно.Обновление: проблема сводится к
voltage selection(3.3 or 5V)
включению программатора FTDI. Установка на 5В работает отлично, но при переключении на 3,3В проблема возникает снова.
Serial.println("n");
, где n - это число между всем вашим кодом, чтобы увидеть, где именно он зависает, на случай, если это не аналоговое чтение. - person Turk   schedule 02.12.2016analogReference(INTERNAL)
, ошибка исчезает. но когда я используюanalogReference(DEFAULT)
, проблема появляется снова. - person Oli   schedule 02.12.2016A0 -- A7
и вывожу14 -- 21
. Согласно техническому описанию, физические аналоговые контакты наAtmega328p-PU
имеют номера «23 — 28». - person Oli   schedule 02.12.2016AREF
на моей печатной плате подключен к конденсатору100nF
, а другой конец кground
, как иArduino Uno Schematic
. - person Oli   schedule 02.12.2016