Auteur Sujet: Utilisation d'ATTiny  (Lu 47676 fois)

chris_bzg

  • Global Moderator
  • Full Member
  • *****
  • Messages: 101
    • Voir le profil
Re : Re : Re : Re : Utilisation d'ATTiny
« Réponse #75 le: mars 04, 2017, 07:21:20 pm »
Bonjour Christian,

J'utilise mySmartUSB light http://doczz.fr/doc/385084/mysmartusb-light pour la programmation des Attiny et Atmega. Il se pilote aisément depuis avrdude.

Marc-Henri

Bonjour Marc-Henri,

J'ai déjà vu ce genre de petits programmateurs USB pour les µC AVR Atmel.
Tout de même, que de progrès en quelques années pour programmer simplement les µC !
Raison pour laquelle je fais de moins en moins d'électronique classique et de plus en plus d'électronique programmable.  ;)

CATPLUS

  • Sr. Member
  • ****
  • Messages: 251
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #76 le: mars 07, 2017, 07:02:43 pm »
Bonsoir,

Si certains sont comme moi qui je cherche des réponses simples (et surtout je ne trouve pas)
Quelles sont les différences entre tous ces ATtiny?

Même tension
Même brochage

Uniquement la taille de la mémoire

ATtiny 13 => 1KB
ATtiny 25 => 2KB
ATtiny 45 => 4KB
ATtiny 85 => 8KB

C'est bon pour la mémoire !!!!!!

Cordialement
Marcel


Best Regards

Marc-Henri

  • Full Member
  • ***
  • Messages: 139
    • Voir le profil
    • Modélisme ferroviaire & électronique
Re : Utilisation d'ATTiny
« Réponse #77 le: mars 07, 2017, 08:41:59 pm »
Bonsoir Marcel,

Les paramètres qui distinguent les Attiny (comme les Atmega) sont:
  • la mémoire programme (FLASH), c'est ce que tu as mentionné.
  • la mémoire de travail (SRAM), pour les variables du programme.
  • la mémoire non volatile (EEPROM), pour conserver des données hors tension.
  • les fonctions, tous ne disposent pas d'un convertisseur analogique-numérique.
  • le nombre de pattes.
  • le type de boîtier, pour les amateurs, il est plus facile de travailler avec les boîtiers PDIP traditionnels et éviter les versions à souder en surface.
  • la consommation électrique, il existe des versions pico-power
  • la tension ne semble pas être un paramètre, la plupart fonctionnent entre 1.8 et 5.5 V.

Le site du fabricant Atmel liste les 2 familles:
Meilleures salutations.

Marc-Henri

CATPLUS

  • Sr. Member
  • ****
  • Messages: 251
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #78 le: mars 07, 2017, 09:19:37 pm »
Merci pour ces renseignements
Marcel
Best Regards

chris_bzg

  • Global Moderator
  • Full Member
  • *****
  • Messages: 101
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #79 le: mars 30, 2017, 01:55:12 pm »
Voici un nouvel article sur le microcontrôleur ATtiny45 :
http://locoduino.org/spip.php?article192

Une fois de plus, nous vous proposons un montage qui trouvera sa place sur votre réseau de trains pour un prix très modique.

Bonne lecture.

Christian

PhB22

  • Invité
Re : Utilisation d'ATTiny
« Réponse #80 le: avril 02, 2017, 09:10:14 am »
Bonjour à tous,
Petite info : dans le dernier Loco Revue, en première fiche pratique, un court article pour programmer le ATTINY45

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1918
  • 100% Arduino et N
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #81 le: avril 02, 2017, 10:11:07 am »
Normal, la fiche pratique de LR837 ET les articles de Locoduino sont du même auteur : Christian Bézanger  ;D

Il est sur tous les fronts et mérite nos applaudissements  :D :D :D
Cordialement

chris_bzg

  • Global Moderator
  • Full Member
  • *****
  • Messages: 101
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #82 le: avril 10, 2017, 07:12:39 pm »
Bonjour à tous ceux qui aiment se secouer les puces (ATtiny bien sûr !)

Je cherche quelqu'un qui utilise des puces de la série ATtiny24/44/84, enfin surtout 44 et 84 car le 24 n'a pas assez de mémoire pour ce que je veux tenter.
Si vous avez l'expérience et qu'il vous reste une puce que vous pouvez (re)programmer, je vous demanderai de réaliser une expérience pour moi.

Vous pourrez ainsi faire avancer la science...  ;)

chris_bzg

  • Global Moderator
  • Full Member
  • *****
  • Messages: 101
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #83 le: mai 01, 2017, 11:09:20 am »
L'événement Trainsmania à Lille a été l'occasion pour l'équipe de LOCODUINO de se réunir (autour d'une bonne table mais aussi pour travailler !!!). Beaucoup de projets vont sortir mais en attendant, je vous propose un nouvel article sur l'ATtiny :

Le microcontrôleur ATtiny45 (6)

Encore un montage pour allumer des LED me direz-vous ? Oui, mais ce sera le dernier et celui-ci vous propose une astuce de montage à connaître pour économiser les ressources de l'ATtiny45.

Le prochain article (dans quatre semaines) parlera du contrôle d'un servomoteur avec... un ATtiny !   :) (Mais si c'est possible !)


CATPLUS

  • Sr. Member
  • ****
  • Messages: 251
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #84 le: mai 01, 2017, 06:06:38 pm »
Je reviens sur ma demande

comment programmer l'ATtiny avec le programme de "Rudysmodelrailway"

J'ai cherché et trouvé le code, hélas je n'arrive pas à faire fonctionner le dit ATtiny (surement quelque chose que je n'ai pas compris)
J'aimerai savoir où se trouve la ligne de code pour changer le numéro du décodeur

Cordialement
Marcel

#include <DCC_Decoder.h>
#define kDCC_INTERRUPT 0

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Fill in the number of accessories / functions you want to control
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const byte maxaccessories = 1;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

typedef struct {
  int               address;          // User Configurable. DCC address to respond to
  byte              mode;             // User Configurable. Mode: 1=Continuous, 2=Oneshot, 3=Flasher
  byte              outputPin;        // User Configurable. Arduino pin where accessory is connected to
  byte              outputPin2;       // User Configurable. 2nd pin for AlternatingFlasher (e.g. railway crossing)
  int               ontime;           // User Configurable. Oneshot or Flasher on time in ms
  int               offtime;          // User Configurable. Flasher off time in ms
  byte              dccstate;         // Internal use. DCC state of accessory: 1=on, 0=off
  byte              onoff;            // Internal use. Output state of accessory: 1=on, 0=off
  byte              onoff2;           // Internal use. Output state of AlternatingFlasher 1=on, 0=off
  byte              finished;         // Internal use. Memory that says the Oneshot is finished
  unsigned long     onMilli;          // Internal use.
  unsigned long     offMilli;         // Internal use.
} DCCAccessoryAddress;

DCCAccessoryAddress accessory[maxaccessories];

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Fill in the attributes for every accessory / function
// COPY - PASTE as many times as you have functions. The amount must be same as in line 18 above!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void ConfigureDecoderFunctions() // The amount of accessories must be same as in line 26 above!
{
  accessory[0].address = 1; // DCC address
  accessory[0].mode = 1; // Continuous: HIGH until DCC switches the address off again
  accessory[0].outputPin = 1; // Arduino pin to which this accessory is connected
/*
  accessory[1].address = 2;
  accessory[1].mode = 2; // Oneshot: HIGH for ontime ms, then LOW and stays LOW.
  accessory[1].outputPin = 1;
  accessory[1].ontime = 1000;
 
  accessory[2].address = 3;
  accessory[2].mode = 3; // Flasher: HIGH for ontime ms, LOW for offtime ms, repeats till DCC off
  accessory[2].outputPin = 0;
  accessory[2].outputPin2 = 1; // Flasher can use 2 outputs, they will flash  on/off alternatively
  accessory[2].ontime = 500;
  accessory[2].offtime = 500;
 
  accessory[3].address = 4; // DCC address
  accessory[3].mode = 4; // Continuous: HIGH until DCC switches the address off again
  accessory[3].outputPin = 3; // Green signal
  accessory[3].outputPin2 = 4; // Red Signal
  accessory[3].onoff2 = 1; // Initially set Red signal to ON
*/
}  // END ConfigureDecoderFunctions

  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // DCC accessory packet handler
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  void BasicAccDecoderPacket_Handler(int address, boolean activate, byte data)
  {
    // Convert NMRA packet address format to human address
    address -= 1;
    address *= 4;
    address += 1;
    address += (data & 0x06) >> 1;

    boolean enable = (data & 0x01) ? 1 : 0;

    for (int i=0; i<maxaccessories; i++)
    {
      if (address == accessory.address)
      {
        if (enable) accessory.dccstate = 1;
        else accessory.dccstate = 0;
      }
    }
  } //END BasicAccDecoderPacket_Handler

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Setup (run once)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
  DCC.SetBasicAccessoryDecoderPacketHandler(BasicAccDecoderPacket_Handler, true);
  ConfigureDecoderFunctions();
  DCC.SetupDecoder( 0x00, 0x00, kDCC_INTERRUPT );
  pinMode(2,INPUT); // Interrupt 0, use an external pull up resistor on the opto coupler circuit !

  pinMode(0, OUTPUT);
  digitalWrite(0, HIGH);
  pinMode(1, OUTPUT);
  digitalWrite(1, HIGH);
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH); 
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  pinMode(5, OUTPUT);
  digitalWrite(4, HIGH);
} // END setup

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Main loop (run continuous)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
  static int addr = 0;//0

  DCC.loop(); // Loop DCC library
 
  if( ++addr >= maxaccessories ) addr = 0; // Next address to test 0

  if (accessory[addr].dccstate)
  {
    switch (accessory[addr].mode)
    {
    case 1: // Continuous
      accessory[addr].onoff = HIGH;
      break;
    case 2: // Oneshot
      if (!accessory[addr].onoff && !accessory[addr].finished)
      {
        accessory[addr].onoff = HIGH;
        accessory[addr].offMilli = millis() + accessory[addr].ontime;
      }
      if (accessory[addr].onoff && millis() > accessory[addr].offMilli)
      {
        accessory[addr].onoff = LOW;
        accessory[addr].finished = true; //this is reset to flase below in the 'else' statement
      }
      break;
    case 3: // Flasher, is an 'alternating' flasher together with outputPin2
      if (!accessory[addr].onoff && millis() > accessory[addr].onMilli)
      {
        accessory[addr].onoff = 1;
        accessory[addr].onoff2 = 0;
        accessory[addr].offMilli = millis() + accessory[addr].ontime;
      }
      if (accessory[addr].onoff && millis() > accessory[addr].offMilli)
      {
        accessory[addr].onoff = 0;
        accessory[addr].onoff2 = 1;
        accessory[addr].onMilli = millis() + accessory[addr].offtime;
      }
      break;
    case 4: // Signal
      accessory[addr].onoff = 1;
      accessory[addr].onoff2 = 0;
      break;
    }
  }
  else //accessory[addr].dccstate == 0
  {
    accessory[addr].onoff = 0;
    if (accessory[addr].mode == 4) accessory[addr].onoff2 = 1; else accessory[addr].onoff2 = 0;
    if (accessory[addr].mode == 2) accessory[addr].finished = false; // Oneshot finished by DCCstate, not by ontime
  }

  // activate outputpin, based on value of onoff
  if (accessory[addr].onoff) digitalWrite(accessory[addr].outputPin, LOW);
  else digitalWrite(accessory[addr].outputPin, HIGH);
  if (accessory[addr].onoff2) digitalWrite(accessory[addr].outputPin2, LOW);
  else digitalWrite(accessory[addr].outputPin2, HIGH);
 
} //END loop


Best Regards

jeanmi67

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Re : Utilisation d'ATTiny
« Réponse #85 le: mai 04, 2017, 11:19:12 pm »
...Je cherche quelqu'un qui utilise des puces de la série ATtiny24/44/84, enfin surtout 44 et 84 car le 24 n'a pas assez de mémoire pour ce que je veux tenter.
Si vous avez l'expérience et qu'il vous reste une puce que vous pouvez (re)programmer, je vous demanderai de réaliser une expérience pour moi....

Bonjour,

Je ne sais pas si cette demande est toujours d'actualité, mais je viens de recevoir mes deux premiers ATtiny 84.
Je n'ai pas d'expérience particulière (j'en suis au stade de reproduire les exemples donnés ici  :) ) mais je veux bien, si je suis guidé, réaliser une expérience, pour "faire avancer la science"  ;D ;D ;D

Cordialement.

Jean-Michel
« Modifié: mai 05, 2017, 12:29:25 pm par jeanmi67 »
jeaNmi

chris_bzg

  • Global Moderator
  • Full Member
  • *****
  • Messages: 101
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #86 le: mai 08, 2017, 06:03:59 pm »
Bonjour,

Oui, cette demande est toujours d'actualité.
Si vous disposez d'ATtiny84 et si vous avez déjà réussi à les programmer avec un simple module UNO, il y a une expérience à faire.
Ce serait de charger le programme donné en exemple -> Servo -> Sweep et de voir s'il est possible de le téléverser sur un ATtiny84.
Ce programme compile bien pour l'ATtiny84 et utilise 2084 octets et 52 octets de RAM, donc logiquement on doit pouvoir le téléverser.

Ensuite, brancher un servomoteur sur la pin qui va bien (voir dans le programme) et observer si le servo obéit aux ordres de déplacement.
Si oui, cela ouvre un champ de possibilités avec la bibliothèque Servo.

Merci de me tenir au courant si la manip est faisable.

Christian

jeanmi67

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #87 le: mai 08, 2017, 08:43:09 pm »
Bonsoir,

Je suis toujours volontaire pour "faire avancer la science", mais je ne remplis pas trop le cahier des charges :
    . Je dispose d'ATtiny84 (ATtiny84A-PU)
    . Mon module est un ATMEGA2560 (et non un UNO)
    . Quand je compile à blanc le programme Sweep, celui-ci utilise 3128 octets (et non 2084) et 163 octets de RAM (et non 52)
    . Je n'ai pas dans l'immédiat de servomoteur disponible, ce dispositif ne figurant pas dans mes axes de développement, mais je pense pouvoir en trouver un
La manip est elle faisable ?

Cordialement.

Jean-Michel
jeaNmi

chris_bzg

  • Global Moderator
  • Full Member
  • *****
  • Messages: 101
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #88 le: mai 10, 2017, 02:51:27 pm »
Bonjour Jean-Michel,

Tout d'abord, une question : as-tu déjà programmé un ATtiny84 avec ton module Mega ? (Il me faut quelqu'un qui maîtrise cette procédure)
Si oui, il n'y a pas de différence entre UNO et MEGA puisque les deux jouent simplement le rôle de programmateur.

Le nombre d'octets utilisés par la compilation de Sweep dépend du type de carte (processeur) utilisé ; ce n'est donc pas anormal d'avoir un chiffre pour l'ATtiny84 et un pour la carte Mega. J'ai compilé de mon côté pour une Mega et j'obtiens comme toi.

Le but de la manip est de téléverser le programme Sweep dans un ATtiny84 et de voir ensuite si celui-ci peut commander un servomoteur (attaché à la bonne sortie) pour obtenir ce mouvement de balayage. Si c'est le cas, cela veut dire que la bibliothèque Servo est utilisable avec l'ATtiny84, ce qui serait une aide précieuse pour utiliser des servos.

Christian


chris_bzg

  • Global Moderator
  • Full Member
  • *****
  • Messages: 101
    • Voir le profil
Re : Utilisation d'ATTiny
« Réponse #89 le: mai 10, 2017, 03:12:25 pm »
INFORMATION IMPORTANTE

Les articles concernant les microcontrôleurs ATtiny45 (actuellement, il y en a 6 et d'autres sont prévus) sont visibles dans l'onglet "Projets ferroviaires de niveau 2".
Je les ai retirés de l'onglet "Les composants électroniques" car cet onglet est situé dans la colonne réservée aux débutants. Or, cela ne me parait pas une bonne idée de chercher à programmer des microcontrôleurs tant qu'on n'a pas acquis de solides bases dans l'utilisation d'Arduino et de son IDE.

Après, chacun fait comme il en a envie, mais ma responsabilité d'auteur est de faire savoir que la programmation de microcontrôleurs est plutôt du domaine des initiés (pas forcément expert) et qu'il peut y avoir des problèmes à résoudre. Toute l'équipe de LOCODUINO est prête à vous aider, mais il est parfois difficile de trouver la cause d'un problème à distance.

Merci de votre compréhension.

Christian