Проблема с памятью

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Народ помогите!!!

Ошибка:

Low memory available, stability problems may occur.

Так понимаю что это нехватка динамической памяти  на Arduino Robot - плата Robot Control.

После заливки скетча Compass с образцов не могу больше ничего залить.

Скетч Compass:

/* Robot Compass

 The robot has an on-board compass module, with
 which it can tell the direction the robot is
 facing. This sketch will make sure the robot
 goes towards a certain direction.

 Beware, magnets will interfere with the compass
 readings.

 Circuit:
 * Arduino Robot

 created 1 May 2013
 by X. Yang
 modified 12 May 2013
 by D. Cuartielles

 This example is in the public domain
 */

// include the robot library
#include <ArduinoRobot.h>
#include <Wire.h>
#include <SPI.h>

int speedLeft;
int speedRight;
int compassValue;
int direc = 180;  //Direction the robot is heading

void setup() {
  // initialize the modules
  Robot.begin();
  Robot.beginTFT();
  Robot.beginSD();
  Robot.displayLogos();
}

void loop() {
  // read the compass orientation
  compassValue = Robot.compassRead();

  // how many degrees are we off
  int diff = compassValue - direc;

  // modify degress
  if (diff > 180)
    diff = -360 + diff;
  else if (diff < -180)
    diff = 360 + diff;

  // Make the robot turn to its proper orientation
  diff = map(diff, -180, 180, -255, 255);

  if (diff > 0) {
    // keep the right wheel spinning,
    // change the speed of the left wheel
    speedLeft = 255 - diff;
    speedRight = 255;
  } else {
    // keep the right left spinning,
    // change the speed of the left wheel
    speedLeft = 255;
    speedRight = 255 + diff;
  }
  // write out to the motors
  Robot.motorsWrite(speedLeft, speedRight);

  // draw the orientation on the screen
  Robot.drawCompass(compassValue);
}

 

Может ли кто-нибудь что-нибудь посоветовать?

 

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Сталкивался с таким на Ардуино Уно. На Меге скетч занимал где-то 18% памяти, а Уно отказывался работать.

Скорее всего нехватка памяти, отведенной под глобальные переменные. Вероятно программа (кроме, собственно, кучи глобальных переменных) что-то емкое формирует в памяти. У меня затык был при формировании HTML-страницы. Именно тогда перешел на использование микроСД в своих проектах...

Radjah
Offline
Зарегистрирован: 06.08.2014

Скорее всего вся та хрень, что выводится на дисплей сначал формируется в памяти, потом скармливается устройству.

Araris
Offline
Зарегистрирован: 09.11.2012

Для приблизительного контроля объема свободной памяти пользуюсь

int freeRam()
{
extern int __heap_start, *__brkval; 
int v; 
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

Рекомендую.

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Araris

Я очень извиняюсь далеко не кодер.

Немогли бы Вы показать контроль объема свободной памяти на примере представленного мною кода.

Очень надо, сам не разберусь.

 

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Radjah

Думаю Вы правы!

Причем вся инфа выводящаяся на дисплей не дает залить ничего другого - память то переполнена.

Народ, как же мне быть то?

Можно ли как-то затереть этот скетч???

Araris
Offline
Зарегистрирован: 09.11.2012

SlPromirianix пишет:

Немогли бы Вы показать контроль объема свободной памяти на примере представленного мною кода.

Все просто очень. На этапе сборки/отладки скетча там, где мне надо, вставляю вот это











int fram = freeRam(); Serial.println(fram);

и просто "глазами контролирую", сколько съедено, сколько остается.

Справка, например, здесь : http://arduino.cc/en/Tutorial/Memory, читаем про SRAM, Вы будете удивлены объемами )))

Вот так я в свое время познал магию PROGMEM...

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

PROGMEM - это хорошо, а что делать если другой скетч никак не залить?

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

Можно ли как-то удалить уже залитый?

Araris
Offline
Зарегистрирован: 09.11.2012

SlPromirianix пишет:

PROGMEM - это хорошо, а что делать если другой скетч никак не залить?

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

Можно ли как-то удалить уже залитый?

What ???

Вообщето скетч всегда заливается ВМЕСТО залитого, а не плюс к нему, так что проблема точно не в этом.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А что такое " никак не залить" ? Тип платы и  компорт правильные? На ресет реагирует?

Какие  сообщения появляются в окошечке внизу? (при новой заливке)

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Плата - Arduino Robot (ATmega32u4).
Адрес: http://amperka.ru/product/arduino-robot

После того как загрузил образец скетча (из библиотеки Arduino IDE-1.5.8) Compass, никакой другой скетч не загружается.

Код ошибки:

Arduino: 1.5.8 (Linux), Board: "Arduino Robot Control"

Using library Robot Control in folder: /opt/arduino-1.5.8/libraries/Robot_Control
Using library Wire in folder: /opt/arduino-1.5.8/hardware/arduino/avr/libraries/Wire
Using library SPI in folder: /opt/arduino-1.5.8/hardware/arduino/avr/libraries/SPI

/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=158 -DARDUINO_AVR_ROBOT_CONTROL -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x8038 -DUSB_MANUFACTURER= -DUSB_PRODUCT="Robot Control" -I/opt/arduino-1.5.8/hardware/arduino/avr/cores/arduino -I/opt/arduino-1.5.8/hardware/arduino/avr/variants/robot_control -I/opt/arduino-1.5.8/libraries/Robot_Control/src -I/opt/arduino-1.5.8/hardware/arduino/avr/libraries/Wire -I/opt/arduino-1.5.8/hardware/arduino/avr/libraries/SPI /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp -o /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/glcdfont.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/EEPROM_I2C.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/communication.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/ArduinoRobot.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Fat16.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Squawk.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/RobotSdCard.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/lcd.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Arduino_LCD.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/information.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/keyboard.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/SdCard.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Multiplexer.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Compass.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Melody.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/EasyTransfer2.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/helper.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Sensors.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/Motors.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/SquawkSD.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/utility/VirtualKeyboard.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/utility/Adafruit_GFX.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Robot Control/utility/RobotTextManager.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Wire/Wire.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Wire/utility/twi.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/SPI/SPI.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/wiring_shift.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/hooks.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/wiring_digital.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/wiring_pulse.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/WInterrupts.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/wiring_analog.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/wiring.c.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Print.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/HardwareSerial.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/CDC.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/HardwareSerial1.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/USBCore.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/HID.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Tone.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/HardwareSerial0.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/WMath.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/abi.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/HardwareSerial3.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/WString.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/main.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/new.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/HardwareSerial2.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/IPAddress.cpp.o
Using previously compiled file: /tmp/build1088502564841717068.tmp/Stream.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/wiring_shift.c.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/hooks.c.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/wiring_digital.c.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/wiring_pulse.c.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/WInterrupts.c.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/wiring_analog.c.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/wiring.c.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/Print.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/HardwareSerial.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/CDC.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/HardwareSerial1.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/USBCore.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/HID.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/Tone.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/HardwareSerial0.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/WMath.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/abi.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/HardwareSerial3.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/WString.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/main.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/new.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/HardwareSerial2.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/IPAddress.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-ar rcs /tmp/build1088502564841717068.tmp/core.a /tmp/build1088502564841717068.tmp/Stream.cpp.o
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-gcc -w -Os -Wl,--gc-sections -mmcu=atmega32u4 -o /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.elf /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/glcdfont.c.o /tmp/build1088502564841717068.tmp/Robot Control/EEPROM_I2C.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/communication.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/ArduinoRobot.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Fat16.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Squawk.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/RobotSdCard.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/lcd.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Arduino_LCD.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/information.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/keyboard.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/SdCard.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Multiplexer.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Compass.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Melody.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/EasyTransfer2.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/helper.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Sensors.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/Motors.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/SquawkSD.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/utility/VirtualKeyboard.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/utility/Adafruit_GFX.cpp.o /tmp/build1088502564841717068.tmp/Robot Control/utility/RobotTextManager.cpp.o /tmp/build1088502564841717068.tmp/Wire/Wire.cpp.o /tmp/build1088502564841717068.tmp/Wire/utility/twi.c.o /tmp/build1088502564841717068.tmp/SPI/SPI.cpp.o /tmp/build1088502564841717068.tmp/core.a -L/tmp/build1088502564841717068.tmp -lm
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.elf /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.eep
/opt/arduino-1.5.8/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.elf /tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.hex

Sketch uses 26 560 bytes (92%) of program storage space. Maximum is 28 672 bytes.
Global variables use 2 011 bytes (78%) of dynamic memory, leaving 549 bytes for local variables. Maximum is 2 560 bytes.
Low memory available, stability problems may occur.
Forcing reset using 1200bps open/close on port /dev/ttyACM0
PORTS {/dev/ttyACM0, } / {} => {}
PORTS {} / {/dev/ttyACM0, } => {/dev/ttyACM0, }
Found upload port: /dev/ttyACM0
/opt/arduino-1.5.8/hardware/tools/avr/bin/avrdude -C/opt/arduino-1.5.8/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega32u4 -cavr109 -P/dev/ttyACM0 -b57600 -D -Uflash:w:/tmp/build1088502564841717068.tmp/R11_Hello_User.cpp.hex:i

avrdude: Version 6.0.1, compiled on Apr 3 2014 at 21:52:43
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "/opt/arduino-1.5.8/hardware/tools/avr/etc/avrdude.conf"
User configuration file is "/home/sl_promirianix/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/ttyACM0
Using Programmer : avr109
Overriding Baud Rate : 57600
AVR Part : ATmega32U4
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
flash 65 6 128 0 yes 32768 128 256 4500 4500 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : butterfly
Description : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .avrdude: Send: . [1b]
avrdude: Send: S [53]
avrdude: ser_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
Проблема загрузки на плату. Для достижения дзен, курить http://www.arduino.cc/en/Guide/Troubleshooting#upload .

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Т.е. вместо залитого я не могу загрузить никакой другой, и даже этот же.

Полагаю что проблема в нехватке памяти, а именно в том что залитый скетч захватил какую-то область памяти и не дает залить другой (за место себя).
Ну как то так (я не спец, новенький). Объясните Нубу, что и как это исправить.

Можно ли как то обнулить микроконтроллер.

Резет работает, но не помогает.

Уже курил, с английским не очень, переводил с помощью гугла.
Ничего внятного не узнал.

Русскоговорящие Help me Please!!!

Radjah
Offline
Зарегистрирован: 06.08.2014

Тогда заказываешь программатор usbasp и заливаешь через него. Только тогда загрузчик затрется, на чип прошьется. Но там на Win8/8.1 с дровами проблема, так что или линукс или Win7.

Или прошивать вторую ардуину как программатор и шить через нее. Такой программатор работает с железом, а не через загрузчик. Если плата исправна, то прошьет.

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Вот черт.
А третьего не дано?

И как грамонтно прошить ардуину как программатор, дабы не возникло вопросов и по второй?

И да у мня Линукс

Radjah
Offline
Зарегистрирован: 06.08.2014

gcc-avr и дудка (avrdude) под линукс изначально.

В IDE в меню Tools/Programmer выбираешь usbasp для программатора или "Arduino as ISP" для прошитой соответствующим скетчем ардуины.

В случае с usbasp просто открываешь скетч, выбираешь тип платы и процессора, подключаешь программатор к плате (есть даже перходники 10-6 контактов) и прошиваешь скетч командой "File / Upload Using Programer".

Подключение прошитой ардуины есть в примере ArduinoISP.

В платах выбираешь прошиваему ардуину, т.е. если наной прошиваешь уну, то выбирать надо UNO и порт, на котором висит Nano.

Вроде всё.

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Radiah

Спасибо за исчерпывающий ответ.
Очень подробненько, как только куплю USBasp-программатор буду пробовать.

Пока нет финансов, все карманные потратил на робота.

Еще раз спасибо большое за потраченное время.

А случаем нет схемы подключения Arduino UNO (c ArduinoISP) к плате Robot Control или может знаешь где поискать?

В просторах гугла не могу найти?

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Всем СПАСИБО за участие.
Проблема решилась очень банально и просто.
Цитирую:
"...Одиночное нажатие кнопки сброса перезапустит вашу программу. После двойного нажатия кнопки сброса будет инициализирован загрузчик."

Я не просто НУБ, да еще и читать не умею!!! :)

Sorry ВСЕМ, за ФЛУД...

Единственное оправдание, может найдется еще такой же как я.
Ему пригодится, а так можно тему удалить.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

SlPromirianix пишет:
После двойного нажатия кнопки сброса будет инициализирован загрузчик."

Вобще говоря, это не совсем стандартное поведение загрузчика. По ресету должен делать паузу для работы загрузчика, а потом запускать что есть.

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Ничего утверждать не могу, опыта нет.

Просто так написано в руководстве.
Адрес: http://amperka.ru/product/arduino-robot
В самом низу -> Сброс и инициализация загрузчика.

На UNO не проверял, но учту.

А резет всегда надо нажимать перед заливкой скетча?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

вот это поворот...

Maverik
Offline
Зарегистрирован: 12.09.2012

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

 

 

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Тогда шить через ICSP.

Алекс
Offline
Зарегистрирован: 13.03.2015
SlPromirianix
SlPromirianix аватар
Зарегистрирован:25.10.2014
 
 

Всем СПАСИБО за участие.
Проблема решилась очень банально и просто.
Цитирую:
"...Одиночное нажатие кнопки сброса перезапустит вашу программу. После двойного нажатия кнопки сброса будет инициализирован загрузчик."

Я не просто НУБ, да еще и читать не умею!!! :)

Sorry ВСЕМ, за ФЛУД...

Единственное оправдание, может найдется еще такой же как я.

 

Нашелся , у меня такая же в точности проблема. Но мне двойной щелчон не помогает ЛЮДИ ПОМОГИТЕ

Алекс
Offline
Зарегистрирован: 13.03.2015

Люди получилось зашел в настроики Arduino IDE и обрал все галочки после трех четырех попыток нерного нажмания на ресет на робот контрол получилось скеч залился. Никогда не заливайте этот проклятый R04_Compass.

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

Наверное все таки настройки ни при чем.

Что касается скетча Compass, то я его потом заливал и неоднократно (так для проверки). Двойное нажатие на резет и заливай что угодно.

3
Алекс
Offline
Зарегистрирован: 13.03.2015

А что у тебя происходит при двойном нажатии ??

потомучто уменя он секунд 5-7 тормозил и перезагружался

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

После полной загрузки уже загруженного скетча, двойной рестарт и все - заливаю новый скетч.

 

Алекс
Offline
Зарегистрирован: 13.03.2015

Спасибло за информацию.

если не жалко может скинешь что интересного сделал с роботом .

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

После проб со встроенными скетчами забросил.

Нехватка времени. Работа, суета.

Но очень будет интересно следить за развитием этой платформы.

Предлагаю Вам создать Тему на форуме и выкладывать свои наработки.

Там же можно открыть обсуждение проблем и т.п.

Думаю это будет очень интересно многим, не только мне.

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

 

Управление светом уже реализовано, но на другой платформе - UNO.

Есть кое какие наработки с веб мордой (cеpвер организован на Raspberry Pi B+), но для показа все это негодится. Вдобавок Wi-Fi модуль на малинке никак не заводится, хотя все покупалось как комплект в Amperka.ru, так что пока все через провод.

С декодированием сигналов с пульта проблемы, у меня Samsung Smart TV, коды получаю, а протокол декодировать пока не удается, использовал  ИК  - VS1838B. Может частота не та?

 

329

 

Алекс
Offline
Зарегистрирован: 13.03.2015

Спасибо за отклик я думаю создать такую тему . Работаю над умным домом с применбота как получтся то что не стыдно показать выложу.

Алекс
Offline
Зарегистрирован: 13.03.2015

"с применбота" = с применением робота

SlPromirianix
SlPromirianix аватар
Offline
Зарегистрирован: 25.10.2014

 

Создашь тему 349

Создашь тему!

Пригласи, сообщи если не трудно будет!