Pages: [1]   Go Down
Author Topic: [Résolu] Lire la mémoire EEPROM au démarrage  (Read 398 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Edit : La question d'origine à été très vite résolue, et désormais, le deuxième problème l'est aussi.
Pour régler le problème de réponse de avrdude, j'ai appuyé sur le RESET de l'Arduino, j'ai réinstallé l'IDE et j'ai fait gaffe à brancher le cordon USB sans aller jusqu'au bout de la fiche USB en façade.
En effet, la led "L" près de Rx Tx ne s'allumais pas tout le temps.
J'ai donc pris garde à ne pas enfoncer la prise jusqu'au bout et... ça marche!

Merci à tous de votre aide !


Bonjour !


J'ai dans l'idée de dédier un arduino à un projet permanent.
Son job serait d'écouter en permanence sa liaison USB (il aurait aussi une batterie) et, s'il en reçoit l'ordre par la liaison série, d'allumer ou d'éteindre une sortie numérique et d'envoyer un message à l'ordinateur.

L'ordinateur lui, est sous Linux et envoi et reçoi les messages grâce au BASH (ça je maitrise plus ou moins bien).

Le seul problème est que si l'arduino doit redémarrer (en cas de panne de batterie et si l'ordinateur est éteint par exemple), le programme disparait et il faut alors le recharger.

J'ai donc pensé à deux solutions :

- soit un script BASH ré-envoi son programme à l'arduino à chaque fois qu'il se lance
- soit l'arduino stoque son programme dans une mémoire EEPROM

Pour la deuxième solution, il faudrait qu'il sache qu'i doit aller chercher son programme ici au démarrage.

C'est là que ma question se pose : est-ce possible d'ajouter cette instruction dans son bootloader? Si oui, pourriez-vous me donner des pistes pour le faire?

Sinon, la première option vous parait-elle réaliste?


Merci d'avance de votre aide !
« Last Edit: November 07, 2013, 05:14:07 pm by rezemika » Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour

Je crois que tu n'as pas compris comment marche un Arduino.

Ce que tu demandes est déjà le cas : chaque fois que tu fait un UPLOAD (Téléverser), ton programme est écrit non pas en RAM mais dans la mémoire Flash. Si tu éteint et rallume l'Arduino, le programme redémarre aussitot.

Pour t'en convaincre, il te suffit de charger le sketch "Blink", puis de débrancher l'Arduino et de le rebrancher : la LED se remet à clignoter.

A+
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour.

C'est ce qui me semblait au départ, mais j'avais essayé et le programme ne semblait plus fonctionnel.
Je vais retenter, désolé d'avoir abusé de ton temps.

Merci de ta réponse.
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

De rien
Et  n'oublie pas de venir donner le résultat en mettant [Résolu] dans le titre du premier message si tout est ok.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai essayé de transférer le programme, mais c'est là qu'un nouveau problème (à priori sans rapport) survient :
l'IDE n'arrive pas à se connecter à l'arduino.

J'ai ce message d'erreur :

Code:
Taille binaire du croquis : 1 568 octets (d'un max de 258 048 octets)
processing.app.SerialException: Erreur d'ouverture du port série « /dev/ttyACM0 ».
at processing.app.Serial.<init>(Serial.java:178)
at processing.app.Serial.<init>(Serial.java:77)
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:77)
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:172)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
at processing.app.Sketch.upload(Sketch.java:1706)
at processing.app.Sketch.exportApplet(Sketch.java:1662)
at processing.app.Sketch.exportApplet(Sketch.java:1634)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2346)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2355)
at java.lang.Thread.run(Thread.java:724)
Caused by: gnu.io.UnsupportedCommOperationException: Invalid Parameter
at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:213)
at processing.app.Serial.<init>(Serial.java:163)
... 10 more
processing.app.debug.RunnerException: Erreur d'ouverture du port série « /dev/ttyACM0 ».
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:101)
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:172)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
at processing.app.Sketch.upload(Sketch.java:1706)
at processing.app.Sketch.exportApplet(Sketch.java:1662)
at processing.app.Sketch.exportApplet(Sketch.java:1634)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2346)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2355)
at java.lang.Thread.run(Thread.java:724)

Je suis sous Linux, j'ai donc tapé "lsusb" et l'arduino est bien reconnu :

" Bus 001 Device 044: ID 2341:0042 Arduino SA Mega 2560 R3 (CDC ACM) "

Un "dmesg" donne ceci :

Code:
[ 5276.876051] usb 1-1.1: Manufacturer: Arduino (www.arduino.cc)
[ 5276.876055] usb 1-1.1: SerialNumber: A4139373530351516222
[ 5276.876629] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
[ 5281.691453] usb 1-1.1: USB disconnect, device number 53
[ 5283.934000] usb 1-1.2: new full-speed USB device number 54 using ehci_hcd
[ 5284.005956] usb 1-1.2: device descriptor read/64, error -32
[ 5284.181381] usb 1-1.2: device descriptor read/64, error -32
[ 5284.356875] usb 1-1.2: new full-speed USB device number 55 using ehci_hcd
[ 5284.428855] usb 1-1.2: device descriptor read/64, error -32
[ 5284.604276] usb 1-1.2: device descriptor read/64, error -32
[ 5284.779812] usb 1-1.2: new full-speed USB device number 56 using ehci_hcd
[ 5285.186626] usb 1-1.2: device not accepting address 56, error -32
[ 5285.258561] usb 1-1.2: new full-speed USB device number 57 using ehci_hcd
[ 5285.665280] usb 1-1.2: device not accepting address 57, error -32
[ 5285.665476] hub 1-1:1.0: unable to enumerate USB device on port 2
[ 5301.380002] usb 1-1.1: new full-speed USB device number 58 using ehci_hcd
[ 5301.475076] usb 1-1.1: New USB device found, idVendor=2341, idProduct=0042
[ 5301.475083] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 5301.475088] usb 1-1.1: Manufacturer: Arduino (www.arduino.cc)
[ 5301.475092] usb 1-1.1: SerialNumber: A4139373530351516222
[ 5301.475576] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device

NB : les mêmes lignes apparaissent plusieurs fois, mais le chiffre suivant le "ACM" varie.

J'ai essayé les deux ports usb en façade (en USB 2.0) et de réinstaller l'IDE arduino, rien n'y fait.

Le problème vient-il des pilotes?
« Last Edit: November 03, 2013, 10:21:50 am by rezemika » Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ca ressemble au port série déjà ouvert par quelqu'un d'autre.
Un programme fantôme qui utiliserait le port série en même temps que l'IDE ?
« Last Edit: November 03, 2013, 12:14:24 pm by barbudor » Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est possible, je vais essayer d'arrêter un maximum de programmes et de retester.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai essayé de fermer un maximum de logiciels et le problème persiste.
Je devrais peut-être transférer ce problème dans un topic dédié (à moins que ce ne soit assimilable à du flood)?
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Hummm ça sent les droits d’accès en carafe ....

->
Code:
sudo adduser tonnomdutilisateur dialout
Code:
ls -l /dev | grep ACM

Et si tu vois que ça persiste qu'est ce que dit :
Code:
fuser -m /dev/ttyACM0
?
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour.

J'ai réinstallé l'IDE au cas où j'aurai fait une bêtise dans la configuration, le problème a persisté.
La commande d'ajout au groupe dialout me dit que je suis déjà dans ce groupe.

Mais depuis la réinstallation, l'IDE me dit à chaque fois le contraire, ce qui fait que le menu pour choisir le port série est grisé.
J'ai donc tenté de lancer l'IDE avec gksudo et le menu est à nouveau accessible.
Cependant, le téléversement ne marche toujours pas.
L'IDE renvoie (avec ACM0 selectionné) :

Code:
avrdude: stk500_recv(): programmer is not responding

Mais quand je tente de l'envoyer, la led Rx clignote deux fois, donc l'arduino reçoit quelque chose, mais ce n'est pas le programme.
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3032
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
L'ordinateur lui, est sous Linux et envoi et reçoi les messages grâce au BASH (ça je maitrise plus ou moins bien).
Tu n'aurais pas une application lancée au démarrage (ou par un cron) et qui prendrait le port série pour elle?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je n'ai pas encore écris le script dont j'ai parlé, mais j'ai regardé dans /etc/init.d/ et un ls donne ceci :

Code:
acpid              hostname                     resolvconf
acpi-support       hwclock                      rfkill-restore
alsa-restore       hwclock-save                 rfkill-store
alsa-store         irqbalance                   rsync
anacron            kerneloops                   rsyslog
apparmor           killprocs                    saned
apport             kmod                         sendsigs
avahi-cups-reload  lightdm                      setvtrgb
avahi-daemon       modemmanager                 single
binfmt-support     networking                   skeleton
bluetooth          networking.dpkg-new          spamassassin
bootlogd           network-interface            speech-dispatcher
brltty             network-interface-container  stop-bootlogd
console-font       network-interface-security   stop-bootlogd-single
console-setup      network-manager              sudo
cron               ondemand                     udev
cryptdisks         plymouth                     udev-fallback-graphics
cryptdisks-early   plymouth-log                 udev-finish
cryptdisks-enable  plymouth-ready               udevmonitor
cryptdisks-udev    plymouth-splash              udevtrigger
cups               plymouth-stop                ufw
cups-browsed       plymouth-upstart-bridge      umountfs
dbus               pppd-dns                     umountnfs.sh
dmesg              procps                       umountroot
dns-clean          pulseaudio                   unattended-upgrades
failsafe-x         rc                           urandom
friendly-recovery  rc.local                     whoopsie
gdm                rcS                          x11-common
grub-common        README
halt               reboot

Un fichier nommé "cron" est présent, et il ouvre un fichier avec du sh nommé "upstart-job".
Serait-ce la cause du problème?
Logged

Pages: [1]   Go Up
Jump to: