Не запоминается скетч во флеш памяти

Hamiltonian
Offline
Зарегистрирован: 23.01.2012

Подскажите пожалуйста, в чем может быть причина такой проблемы: после отключения от USB порта и повторного включения ардуино Duemilanove скетч перестает выполнятся, хотя, по логике он должен хранится во флеш памяти и никуда не сбрасываться при отключении питания. После перезаливки программы все работает как и должно было.

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

1. Любой скетч не выполняется после отключения/включения, даже Blink (File/Examples/Basics/Blink)?

2. А если во время выполнения скетча нажать и отпустить кнопку reset (она одна на плате), что происходит?

Mastino
Offline
Зарегистрирован: 03.12.2011

Hamiltonian пишет:

Подскажите пожалуйста, в чем может быть причина такой проблемы: после отключения от USB порта и повторного включения ардуино Duemilanove скетч перестает выполнятся, хотя, по логике он должен хранится во флеш памяти и никуда не сбрасываться при отключении питания. После перезаливки программы все работает как и должно было.

залей этот код oтключи от usb, а потом опять подключи к usb и смотри что пишет Serial Monitor. Если все OK, то скорее всего села твоя батарейка.

long time = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("start");
}

void loop() {
  time++;
  delay(100);
  Serial.println(time);
}

 

Hamiltonian
Offline
Зарегистрирован: 23.01.2012

Нет, Blink работает. Мой скетч занимает около 6 кбайт, что сильно больше Блинка, может быть в этом дело?

При нажатии Reset начались проблемы с взаимодействующей программой на компьютере, которая принимает от ардуино некую информацию и потом обрабатывает (похоже где-то циклит, даже вижу уже где), но после перезапуска программы на компе без выдергивания USB и перезаливки скетча все продолжает работать как надо.

Hamiltonian
Offline
Зарегистрирован: 23.01.2012

 А вот вопрос еще возникает: после отключения питания и запуска снова ардуино начинает выполнять программы с самого начала, с Setup() и потом Loop() или с той точки, где она была прервана при отключении питания(что, по моему весьма не логично)?

Hamiltonian
Offline
Зарегистрирован: 23.01.2012

Mastino пишет:

залей этот код oтключи от usb, а потом опять подключи к usb и смотри что пишет Serial Monitor. Если все OK, то скорее всего села твоя батарейка.

long time = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("start");
}

void loop() {
  time++;
  delay(100);
  Serial.println(time);
}

 

Каждый раз когда включаю Serial monitor, не вынимая USB, начинает со start и отсчитывает по 100 мс. После отключения от USB начинает снова со start и т.д.

Mastino
Offline
Зарегистрирован: 03.12.2011

Hamiltonian пишет:

 А вот вопрос еще возникает: после отключения питания и запуска снова ардуино начинает выполнять программы с самого начала, с Setup() и потом Loop() или с той точки, где она была прервана при отключении питания(что, по моему весьма не логично)?

с самого начала

Mastino
Offline
Зарегистрирован: 03.12.2011

Hamiltonian пишет:

Каждый раз когда включаю Serial monitor, не вынимая USB, начинает со start и отсчитывает по 100 мс. После отключения от USB начинает снова со start и т.д.

скорее всего села твоя батарейка, или для кода не хватает SRAM (2kb)

Hamiltonian
Offline
Зарегистрирован: 23.01.2012

Немного не понял, у ардуино есть встроенная батарейка для поддержания ОЗУ? Вроде ж не должно быть. А я, т.к. ардуино должна работать только в связке с компом, не подключал внешнее питание от батареи.

По поводу SRAM. Я правильно понимаю, что скетч после заливки должен обязательно хранится во флеш памяти или это не всегда так? Если так, то на выполнения кода 2 кбайт ОЗУ вполне хватает, т.к. прога вполне рабоает. Но веси скетч около 6 кбайт.

Hamiltonian
Offline
Зарегистрирован: 23.01.2012

Боюсь, что мои наговоры на флеш память оказались ложными. Прошу прощения и спасибо большое за советы, они натолкнули меня на одну изощренную проверку, которая показала, что ошибка была в коде программы принимающей от ардуино данные.

Mastino
Offline
Зарегистрирован: 03.12.2011

Hamiltonian пишет:

Немного не понял, у ардуино есть встроенная батарейка для поддержания ОЗУ? Вроде ж не должно быть. А я, т.к. ардуино должна работать только в связке с компом, не подключал внешнее питание от батареи.

По поводу SRAM. Я правильно понимаю, что скетч после заливки должен обязательно хранится во флеш памяти или это не всегда так? Если так, то на выполнения кода 2 кбайт ОЗУ вполне хватает, т.к. прога вполне рабоает. Но веси скетч около 6 кбайт.

я имел в виду если arduino не подключина к PC. для ее работы нужна энергия или от батарейки или ещё откуда нибудь...