Problème code AtTyni45

jihelbi:
L'ICSP laisse l'usage des pins MOSI, MISO et CLK comme entrée et comme sortie à condition de ne pas cabler directement dessus une charge ou une source qui empêche le programmateur de bouger les signaux. Il est donc possible de reprogrammer un Tiny par ICSP tout en ayant cablé un port série dessus.

Un port série ou autre port/bus, suffit de bien suivre la procédure décrite par ATMEL.
Il faut aussi faire trés attention si on utilise des modules SPI et un ATmega alimenté en 3v3, la moindre erreur de câblage et c'est le drame.
De même, ne jamais oublier la résistance de 10K entre RESET et +VCC, sinon lors de l'activation du ICSP le circuit peut partir en fumé (retour de tension dans +VCC).

jihelbi:
Le connecteur ICSP n'a pas 8 broches mais 6 (les 4 SPI + l'alim).

MISO, MOSI, SCK, RESET, GND, VCC, ... ok donc je sait plus compter jusqu'à 6 :grin:
Bon donc je retire ce que j'ai dit, il reste 2 broches hors du port ICSP sur un ATtiny :grin:

jihelbi:
De toute façon l'usage des librairies est très limité sur le Tiny à cause de la taille de la flash. Par exemple IRremote n'est pas utilisable et j'ai d'ailleurs mis à dispo dans "Projets finis" une réception RC5 sous interruption mais ultraconcise.

Sur un Attiny45 pourquoi pas, mais sur un ATtiny85 il y a quand même pas mal de place (8Ko).
Moi je programme en avr-c sur ATtiny, mes programmes ne dépasse jamais 4Ko du coup :wink:

Si tu programmes avec l'IDE Arduino mais sans utiliser les fonctions Arduino (digitalRead/Write, analogRead/Write, pinMode, delay, etc... Et bien tu ne prends pas plus de place qu'en avr-c...

Le problème ce sont les librairies. On peut s'en passer et tout écrire soi-même.

JLB

jihelbi:
Si tu programmes avec l'IDE Arduino mais sans utiliser les fonctions Arduino (digitalRead/Write, analogRead/Write, pinMode, delay, etc... Et bien tu ne prends pas plus de place qu'en avr-c...

Oui mais ça ne vaut pas un bon makefile du coup, avec ton choix d'optimisation, de linker, etc ...
Tu peut aussi prévoir ta routine de flash / fusibles et faire un affichage de la taille du prog + sections.
Quitte à programmer en avr-c autant le faire avec un makefile, c'est pas plus compliqué mais tu est libre de faire ce que tu veut :wink:
(Et franchement l'avr-c + makefile c'est vraiment pas plus compliqué que de l'arduino en y regardant ...)

jihelbi:
Le problème ce sont les librairies. On peut s'en passer et tout écrire soi-même.

Moi j'utilise le moins de librairie possible, je fait tout en bas niveau.
J'aime pas ne pas savoir ce que j'utilise :grin:

Je suis d'accord avec toi mais en même temps j'apprécie beaucoup le projet Arduino qui tend à une simplification extrême de l'ensemble de l'IDE tout en assurant une bonne garantie de cohérence.

Je suis surtout ici parce que j'aime bien aider et encourager les débutants. Je m'efforce de présenter correctement mes bouts de code et j'aime montrer qu'on peut tout faire avec l'IDE Arduino sans avoir besoin de devenir un spécialiste des micro-contrôleurs.

Exemple : La compil et le build d'un projet (un sketch, un croquis) sont effectués à chaque téléversement. Ca te parait sans doute rien mais pour un débutant dont le but n'est pas forcément de denir un expert en uControleurs, mais plutôt de faire aboutir un projet, c'est carrément énorme...

JLB

Bonjour
Vu que l'échange, intéressant pour ma part, entre jihelbi et skywodd élargit quelque peu le champs du fil initial au dela d'Arduino j'en profite pour signaler qu'un compilateur C commercial sous Windows, CodeVision, prend en charge de manière assez efficace les Tiny , les 'costauds' comme le 85 et les tout petits...
+++ Bonne aide '=Wizard' pour configurer les périphériques. (l'utilisation de ce Wizzard est même bénéfique à l'utilisateur d'Arduino qui n'est plus débutant et veut commencer à exploiter un peu les périphériques internes au delà de ce que l'IDE propose.... ça permet de vérifier si on a compris la datasheet. Personellement c'est l'utilisation que j'en fait = complément d'Arduino, en lever de doute de lecture de datasheet)
La version d'évaluation de CodeVision est limitée à 4kb .....juste ce qu'il faut pour un Tiny45 !
http://www.hpinfotech.ro/html/cvavr.htm

Chips supported by CodeVisionAVR Standard:
ATtiny4, ATtiny5, ATtiny9, ATtiny10, ATtiny20, ATtiny40 (reduced core)
ATtiny13, ATtiny13A
ATtiny1634
ATtiny167, ATtiny87
ATtiny22
ATtiny2313, ATtiny2313A, ATtiny4313
ATtiny24, ATtiny44, ATtiny84
ATtiny25, ATtiny45, ATtiny85
ATtiny26, ATtiny46, ATtiny86, ATtiny166
ATtiny261, ATtiny461, ATtiny861
ATtiny43U

Bonjour

en fouillant dans le forum j'ai trouvé cà :slight_smile:

et c'est ce que je veux faire :grin:

par contre j'ai 3 petites questions

  1. est ce qu'un tel code rentrerai dans une attiny25 (place disponible suffisante)?
  2. y a t il de la marge pour faire une petite modification ( en gros rajouter un delay)?
  3. a quelle frequnce c'est cadencé? 10 ou 20?

@+

cyle

Bonjour,

cyle:
en fouillant dans le forum j'ai trouvé cà :slight_smile:

et c'est ce que je veux faire :grin:

C'est un sacré déterrage de topic ça :grin:

cyle:

  1. est ce qu'un tel code rentrerai dans une attiny25 (place disponible suffisante)?

A voir, vu le nombre très restreint de ligne de code je pense que oui.

cyle:
2) y a t il de la marge pour faire une petite modification ( en gros rajouter un delay)?

Le meilleur moyen est de faire la modif et de compiler le tout.
Pas besoin d'avoir l'ATtiny sous la main pour compiler :wink:

cyle:
3) a quelle frequnce c'est cadencé? 10 ou 20?

Par défaut l'ATtiny25 avec l'oscillateur interne tourne à 8 MHz.

skywodd:
Bonjour,

cyle:
en fouillant dans le forum j'ai trouvé cà :slight_smile:

et c'est ce que je veux faire :grin:

C'est un sacré déterrage de topic ça :grin:

cyle:

  1. est ce qu'un tel code rentrerai dans une attiny25 (place disponible suffisante)?

A voir, vu le nombre très restreint de ligne de code je pense que oui.

cyle:
2) y a t il de la marge pour faire une petite modification ( en gros rajouter un delay)?

Le meilleur moyen est de faire la modif et de compiler le tout.
Pas besoin d'avoir l'ATtiny sous la main pour compiler :wink:

cyle:
3) a quelle frequnce c'est cadencé? 10 ou 20?

Par défaut l'ATtiny25 avec l'oscillateur interne tourne à 8 MHz.

Salut

Merci de me repondre :slight_smile:

j'ai rien encore pour compiler et flasher dans une attiny.
N'importe quel compilateur peut suffire?je testeterai des modifs ensuite.

je peux donc prendre des attiny -10 à la place des 20

@+

cyle

cyle:
j'ai rien encore pour compiler et flasher dans une attiny.
N'importe quel compilateur peut suffire?je testeterai des modifs ensuite.

Le compilateur c'est forcément Avr-gcc ...
Pour le reste regarde ici : Google Code Archive - Long-term storage for Google Code Project Hosting.

cyle:
je peux donc prendre des attiny -10 à la place des 20

Si tu utilise un quartz externe de 8MHz oui, si tu utilise un quartz externe de 16MHz non.
Si tu utilise l'oscillateur interne il est toujours de 8MHz et tu n'as pas besoin de quartz externe.

Salut

ok je vais regardé pour telecharger AVR-gcc and co.

je cherche à faire ca

et ma question sur la frequence c'etait pour savoir si

ATTINY45-20PU ou ATTINY45-10PU ou bien ATTINY25-20PU ou ATTINY25-10PU

sachant que les 10 ont l'air de fonctionner à des tensions d'alimentation plus basse (c'est mieux pour des systemes portables sur piles ou atteries)

@+

cyle

skywodd:
Si tu utilise un quartz externe de 8MHz oui, si tu utilise un quartz externe de 16MHz non.
Si tu utilise l'oscillateur interne il est toujours de 8MHz et tu n'as pas besoin de quartz externe.

Le board.txt de arduino-tiny définit aussi un mode 16MHz Internal-PLL.

@cyle
Quand la sortie de l'ATtiny est à 0V, la led est allumée mais le transistor est bloqué (pas de conduction).
Quand la sortie est à VCC, la led est éteinte et le trasistor est saturé (conduit)
C'est bien ce que tu veux ?

barbudor:

skywodd:
Si tu utilise un quartz externe de 8MHz oui, si tu utilise un quartz externe de 16MHz non.
Si tu utilise l'oscillateur interne il est toujours de 8MHz et tu n'as pas besoin de quartz externe.

Le board.txt de arduino-tiny définit aussi un mode 16MHz Internal-PLL.

@cyle
Quand la sortie de l'ATtiny est à 0V, la led est allumée mais le transistor est bloqué (pas de conduction).
Quand la sortie est à VCC, la led est éteinte et le trasistor est saturé (conduit)
C'est bien ce que tu veux ?

Salut

je vais remplacer le transistor par un optocoupleur pour proteger un peu plus l'appareil photo

ce que je veux c'est que la led soit allumée et qui il y ait mise en commun des deux fil de par et d'autre du mot APN sur la photo

@+
cyle

cyle:
ce que je veux c'est que la led soit allumée et qui il y ait mise en commun des deux fil de par et d'autre du mot APN sur la photo

Pour l'instant dans ton montage à transistor, c'est l'inverse qui se produit.

cyle:
ok je vais regardé pour telecharger AVR-gcc and co.

Avr-gcc est inclut de base dans l'ide arduino :wink:

cyle:
ATTINY45-20PU ou ATTINY45-10PU ou bien ATTINY25-20PU ou ATTINY25-10PU

sachant que les 10 ont l'air de fonctionner à des tensions d'alimentation plus basse (c'est mieux pour des systèmes portables sur piles ou batteries)

Entre ATtiny 25 / 45 / 85 ce qui change c'est la taille de la mémoire flash interne, pour le reste ils sont identiques (qu'on m'arrête si je dit une connerie).
De toute manière si ton but est de faire durer les piles au maximum le choix x-10PU ou x-20PU ne changera pas grand chose.
C'est en software qu'il faudra mettre le cpu en veille quand il n'est pas utilisé.
(il y a plusieurs topic à ce sujet sur le forum, cherche "avr/sleep.h")

barbudor:
Le board.txt de arduino-tiny définit aussi un mode 16MHz Internal-PLL.

Il y a deux modes possible sur les ATtiny :

  • internal RC oscillator -> 8MHz
  • internal PLL clock -> 64MHz / 4 = 16MHz
    (le deuxième mode est un peu plus précis)

Normalement même un ATtiny25-10PU devrait pouvoir tourner à 16MHz via la PLL et l'oscillateur interne à 8MHz ...
Mais j'en suis pas totalement sûr, faudra tester.

barbudor:

cyle:
ce que je veux c'est que la led soit allumée et qui il y ait mise en commun des deux fil de par et d'autre du mot APN sur la photo

Pour l'instant dans ton montage à transistor, c'est l'inverse qui se produit.

Salut

Ce que je veux c'est quand la cellule photo sensible recoit le flash et que l'on entre dans la boucle du programme et que PIN_STATUS= 1
les 2 fils de part et d'autre de "APN" (sur le schema) soient reliés. Si la led s'eteint à ce moment là c'est pas grave :slight_smile:
normalement c'est ce que ca fait non ?

@+

cyle

Le lien entre l'entrée et la sortie, c'est à ton programme de le faire. Tant qu'on n'aura pas vue de ligne de code, on ne saura pas... :wink:

Je signalait juste qu'il me semblait illogique d'éteindre la LED quand tu activait le transistor.

Si tu passes à un opto-coupleur et que tu pilote LED + Opto en parallèle tu aura la LED qui s'allume quand tu active l'opto coupleur.

barbudor:
Le lien entre l'entrée et la sortie, c'est à ton programme de le faire. Tant qu'on n'aura pas vue de ligne de code, on ne saura pas... :wink:

Je signalait juste qu'il me semblait illogique d'éteindre la LED quand tu activait le transistor.

Si tu passes à un opto-coupleur et que tu pilote LED + Opto en parallèle tu aura la LED qui s'allume quand tu active l'opto coupleur.

Salut

le code c'est le meme qu'en premiere page avec peut etre un truc en plus (delay(300):wink:

#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);
delay(300);
}

lightningVal = newLightningVal;
}
}

@+

cyle

Salut

Personne pour un petit retour

@+

cyle

Bonsoir

Quelqu'un pourrait compiler ce petit bout de programme et me dire si cela rentre dans une attiny25 en gros 2 kbytes :slight_smile:

Merci

cyle