Go Down

Topic: Problème code AtTyni45 (Read 6250 times) previous topic - next topic

metalos

Bonjour,

Je suis en trein de construire une cellule de déclenchement pour mon Nikon D3100 qui sera à base de AtTiny45. Pour le branchement et le test avec l'exemple Blink pas de problème. Seulement quand je test mon code le compilateur me donne des erreurs. Voici le code que je voudrais injecter dans l'AtTiny45.

Quote

#define PIN_STATUS 0
#define LIGHTNING_TRIGGER_ANALOG_PIN 3
#define triggerVal 5
int lightningVal;

void setup() {
lightningVal = analogRead(LIGHTNING_TRIGGER_ANALOG_PIN);

pinMode(PIN_STATUS, OUTPUT);
digitalWrite(PIN_STATUS, LOW);
}
void loop() {
{
int newLightningVal = analogRead(LIGHTNING_TRIGGER_ANALOG_PIN);

if ((newLightningVal - lightningVal) > triggerVal)

{
digitalWrite(PIN_STATUS, 1);
delay(300);
digitalWrite(PIN_STATUS, 0);
}

lightningVal = newLightningVal;
}
}



Voici les erreurs de compilations.

Quote

sketch_jul26a:15: error: stray '\' in program
sketch_jul26a.cpp: In function 'void loop()':
sketch_jul26a:15: error: expected `)' before 'u2013'
sketch_jul26a:23: error: expected `)' before 'lightningVal'


Si quelqu'un à une idée du pourquoi et du comment je suis preneur!!! Merci d'avance.

jihelbi

Il faut que tu choisisses la bonne board avant de compiler.

Je te donne un lien sur ce qu'il faut placer dans "Mes documents\Arduino".

http://balbarie.com/arduino/Mes documents-Arduino.zip

Voici le contenu du fichier boards.txt qui va bien pour les Tiny45. Attention il faut que tu fasses un burn bootloader (qui va générer une erreur mais sans conséquence) pour griller les fuses du Tiny pour la clock que tu veux (1, 8 ou 16 MHz).

Quote
attiny45-16.name=ATtiny45 - 16 MHz clock (Arduino as ISP)
attiny45-16.upload.protocol=stk500
attiny45-16.upload.maximum_size=4096
attiny45-16.upload.speed=19200
attiny45-16.upload.using=arduinoisp
attiny45-16.bootloader.low_fuses=0xe1
attiny45-16.bootloader.high_fuses=0xdf
attiny45-16.bootloader.extended_fuses=0xff
attiny45-16.build.mcu=attiny45
attiny45-16.build.f_cpu=16000000L
attiny45-16.build.core=arduino:arduino
attiny45-16.build.variant=tiny8

attiny45-8.name=ATtiny45 - 8 MHz clock (Arduino as ISP)
attiny45-8.upload.protocol=stk500
attiny45-8.upload.maximum_size=4096
attiny45-8.upload.speed=19200
attiny45-8.upload.using=arduinoisp
attiny45-8.bootloader.low_fuses=0xe2
attiny45-8.bootloader.high_fuses=0xdf
attiny45-8.bootloader.extended_fuses=0xff
attiny45-8.build.mcu=attiny45
attiny45-8.build.f_cpu=8000000L
attiny45-8.build.core=arduino:arduino
attiny45-8.build.variant=tiny8

attiny45.name=ATtiny45 - 1 MHz clock (Arduino as ISP)
attiny45.upload.protocol=stk500
attiny45.upload.maximum_size=4096
attiny45.upload.speed=19200
attiny45.upload.using=arduinoisp
attiny45.bootloader.low_fuses=0x62
attiny45.bootloader.high_fuses=0xdf
attiny45.bootloader.extended_fuses=0xff
attiny45.build.mcu=attiny45
attiny45.build.f_cpu=1000000L
attiny45.build.core=arduino:arduino
attiny45.build.variant=tiny8


La directive f_cpu ne concerne que le build du soft et va permettre d'adapter les fonctions millis(), micros() et delay() à la fréquence d'horloge.

A noter que la librairie SerialSoftware générera une erreur si f_cpu est inférieur à 8 Mhz.

La directive mcu est tout aussi importante car le Tiny n'est pas agencé comme un mega (timers, ports et aussi jeu d'instruction réduit).

Le dossier variants doit aussi être présent pour l'affectation des pins.

Bon courage.

JLB

PS : J'aime beaucoup les tiny qui permettent même des choses qu'un ATmega ne fait pas (grâce au PLL interne notamment).

jihelbi

Allez avoues que tu l'as fait exprès pour nous poser une colle !!! J'imagine pas qu'on puisse faire ça par erreur de frappe...

Le seul problème dans ton code c'est que le signe moins n'est pas le signe moins : C'est un caractère graphique (code ASCII 96h).

Il suffit de retaper un vrai moins dans ton test (qui lui a le code ASCII 2Dh) pour que ca compile nickel.

Petit farceur va...

JLB

skywodd

Bonjour,


Allez avoues que tu l'as fait exprès pour nous poser une colle !!! J'imagine pas qu'on puisse faire ça par erreur de frappe...

Le seul problème dans ton code c'est que le signe moins n'est pas le signe moins : C'est un caractère graphique (code ASCII 96h).

Il suffit de retaper un vrai moins dans ton test (qui lui a le code ASCII 2Dh) pour que ca compile nickel.

Effectivement, je constate la même chose de mon côté.

C'est volontaire (p'tit sadique va :P), involontaire (faut le vouloir quand même :smiley-mr-green:) ou c'est un probléme due au fait que tu as utilisé la fonction "Copy for forum" de l'ide ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

metalos

Désolé j'avais pas vue car je l'avais posté sur un autre forum et quand j'ai fait un copier coller ca me donne cà...

Voici les nouvelle erreurs du compilateur avec la lib de jihelbi.

Code: [Select]

Taille binaire du croquis : 924 octets (d'un max de 4 096 octets)
java.lang.NullPointerException
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:88)
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 java.lang.Thread.run(Thread.java:680)

skywodd

Menu -> "File" -> "Upload using programmers" ou avec le raccourci CTRL+MAJ+U ou encore en maintenant la touche MAJ + appui sur le bouton upload ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

jihelbi

En français version 1.01 c'est "Téléverser avec un programmateur". Cette traduction est d'un kitch absolu masis cela m'a aider à la mémoriser...

JLB

PS : Selon ADOPI un téléverseur est un délinquant... Le téléversage est interdit...

metalos

Franchement merci de votre aide  ;)

Voici de nouvelle erreur du débogueur:

Code: [Select]

Taille binaire du croquis : 924 octets (d'un max de 4 096 octets)
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45
avrdude: stk500_recv(): programmer is not responding



jihelbi

qu'utilise tu pour programmer ?

metalos

Une Arduino Uno avec la version 1.0.1 de l'IDE Arduino + la lib AtTiny que tu m'a donné. Je travail sous Mac OX Lion.

skywodd


Une Arduino Uno avec la version 1.0.1 de l'IDE Arduino + la lib AtTiny que tu m'a donné. Je travail sous Mac OX Lion.

La lib en question c'est arduino-tiny ?
http://code.google.com/p/arduino-tiny/

J'ai jamais eu aucun probléme avec cette lib ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

jihelbi

Mais non ce n'est pas une lib. C'est un fichier boards. Cela n'a rien à voir et ne concerne que l'IDE Arduino. Les libs spécifiques aux Tiny sont incluses dans le package Arduino.

- As tu téléverser le soft ArduisoISP dans ton Arduino ?
- As tu mis un condensateur de 10 uF entre masse et reset avant de téléverser ton programme Tiny ?
- As tu bien mis les pins 13, 12, 11 et 10 de l'Arduino sur pin 7, 6, 5 et 1 du Tiny ?
- As tu débrancher ce qui dans ton montage gênerait la programmation par ISP ?

Je programme très souvent des Tiny sans aucun souci, donc il n'y a pas de raison.

Pour ton caractère "-" graphique tu n'as qu'à utiliser un PC comme tout le monde. Laisse donc les Macs aux artistes si ca leur plait de trouver cela mieux cela s'explique par le fait qu'ils fonctionnent sur un registre subjectif et affectif très différent de celui de l'ingénieur... LOL...

JLB

metalos

Mac n'a rien à voir je programme sous linux windows et Mac. Dans le doute je vais tenter sous windows ou linux voir si j'ai le même résultat.

jihelbi

Et Attention......... Tu mélange tout.... Je disais cela pour ton caractère "-" à la base du post.

Pour ton erreur de programmation cela n'a rien à voir. Perds pas ton temps à des essais inutiles. Si tu peux téléverser via le bootloader de l'Arduino tu peux forcément téléverser via programmateur. Cherche le problème ailleurs. Je t'ai donné des pistes dans mon post.

JLB

skywodd


Mais non ce n'est pas une lib. C'est un fichier boards. Cela n'a rien à voir et ne concerne que l'IDE Arduino. Les libs spécifiques aux Tiny sont incluses dans le package Arduino.

Le fichier boards.txt seul ne suffit pas !

Le core arduino n'est conçu que pour les :
Code: [Select]
ATmega8
ATmega168
ATmega328
ATmega1280
ATmega2560

Certain autres ATmega sont compatible, mais pas les ATtiny ...
Je ne sait pas comment tu fait pour compiler "en arduino" sur un ATtiny SANS core arduino optimisé pour la série ATtiny4x/8x !

Pour l'erreur, aprés un rapide coup d'oeil sur la page de man de avrdude il semblerai que ça ne soit pas une erreur empêchant la programmation.
Je sait pas pourquoi ça te le fait à toi en particulier mais normalement le programme doit être dans ton ATtiny même avec l'erreur.
Le plus simple et de tester avec un blink et voir si ça clignote ;)


Pour ton caractère "-" graphique tu n'as qu'à utiliser un PC comme tout le monde. Laisse donc les Macs aux artistes si ca leur plait de trouver cela mieux cela s'explique par le fait qu'ils fonctionnent sur un registre subjectif et affectif très différent de celui de l'ingénieur... LOL...

Oula, quel beau troll bien poilu ... :smiley-mr-green:
Tu sait même sous windows/linux rien ne t'interdit d'insérer un caractére unicode U+02D7 ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up