Обнулить Arduino
- Войдите на сайт для отправки комментариев
Вс, 26/01/2014 - 14:28
Ребят, такая проблема.
В поисках методов уменьшения внутренних шумов АЦП наткнулся на такой код:
#include < avr/sleep.h >
void setup()
{
Serial.begin(9600);
}
void loop()
{
int reading;
reading = analogNoiseReducedRead(0);
Serial.println();
delay(500);
}
int analogNoiseReducedRead(int pinNumber)
{
int reading;
ADCSRA |= _BV( ADIE ); //Set ADC interrupt
set_sleep_mode(SLEEP_MODE_ADC); //Set sleep mode
reading = analogRead(pinNumber); //Start reading
sleep_enable(); //Enable sleep
do
{ //Loop until reading is completed
sei(); //Enable interrupts
sleep_mode(); //Go to sleep
cli(); //Disable interrupts
} while(((ADCSRA & (1 << ADSC) ) != 0)); //Loop if the interrupt that woke the cpu was something other than the ADC finishing the reading
sleep_disable(); //Disable sleep
ADCSRA &= ~ _BV( ADIE ); //Clear ADC interupt
sei(); //Enable interrupts
return(reading);
}
Записал на Freaduino Micro V1.2 (ATmega 32u4) (leonardo) и все, плата перестала отвечать. В диспечере устройств пропал COM порт для платы и она (плата) перешла в Unknown Device. Попытки отключать плату и замыкать пин Reset никакого результата не дают. При перезагрузке появляется Arduino leonardo bootloader, затем плата уходит в Unknown Device. Помогите откачать и вернуть к жизни устройство :).
Решил проблему путем перешпрошивки bootloader'а при помощи второй ардуины (ArduinoISP).
конечно перестанет отвечать, у вас чтение данных незацикленно было в loop(). У вас скорей всего 1 раз прочитало, а потом по выходу из loop, крутилось в заглушке, не на что не отвечая. Да и в порт нифига не выводили.
Надо было хоть так сделать
void loop() { int reading; while (1) { reading = analogNoiseReducedRead(0); Serial.println(reading); delay(500); } }