LOCODUINO

Parlons Arduino => Débuter => Discussion démarrée par: Ludo5687 le décembre 16, 2020, 12:20:44 pm

Titre: attiny85 non reconnu
Posté par: Ludo5687 le décembre 16, 2020, 12:20:44 pm
Bonjour à tous,

j'ai fait l'acquisition d'un attiny85 pour piloter mes signaux de on réseau, mais quand je le branche dans un port usb de mon pc il n'est pas reconnu et je n'arrive pas à le faire reconnaitre par mon pc.
Comment faut-il faire pour pouvoir l'utiliser?

Je travail sous Windows10.

Merci
Titre: Re : attiny85 non reconnu
Posté par: Dominique le décembre 16, 2020, 01:14:42 pm
Si c’est un model « digispark » il faut installer le « digistump » pour qu’il soit reconnu par l’IDE.
Voir les tutos :
 https://digistump.com/wiki/digispark/tutorials/connecting (https://digistump.com/wiki/digispark/tutorials/connecting)
Ca ne marche pas comme les ATMega !
Titre: Re : attiny85 non reconnu
Posté par: CATPLUS le décembre 16, 2020, 04:18:48 pm
Bonjour
http://forum.locoduino.org/index.php?topic=256.165
http://forum.locoduino.org/index.php?topic=256.msg8566#msg8566
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 17, 2020, 02:27:47 am
Merci pour les différents liens,
mais c'est quand je connecte l'Attiny85 en usb qu'il n'est pas reconnu, malgré que j'ai installé les drivers.

Je travail avec Windows 10
Titre: Re : attiny85 non reconnu
Posté par: Dominique le décembre 17, 2020, 09:34:08 am
Quel produit connectez-vous !
Ce ne peut pas être le chip ATTiny 85, mais c’est sans doute une carte avec son connecteur USB ? Non ?
Soyez plus clair svp. Quel montage voulez-vous faire ?
Qu’affiche l’IDE au televersement?
Titre: Re : attiny85 non reconnu
Posté par: Dominique le décembre 17, 2020, 10:54:11 am
J'ai testé une carte ATTiny 85 avec l"exemple Start situé dans le dossier Exemples/Digispark_Examples

Ca marche du premier coup  !
Evidemment on ne voit pas l 'ATTiny dans la ligne "Port" de l'IDE !!! C'est normal et expliqué dans ce forum.
J'ai quand même l'impression que vous n'avez pas lu les liens donnés par Catplus et moi ...
Ou alors votre carte est défectueuse
Expliquez-vous mieux  :D

Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
> Please plug in the device ...
> Press CTRL+C to terminate the program.
> Device is found!
connecting: 16% complete
connecting: 22% complete
connecting: 28% complete
connecting: 33% complete
> Device has firmware version 1.6
> Available space for user applications: 6012 bytes
> Suggested sleep time between sending pages: 8ms
> Whole page count: 94  page size: 64
> Erase function sleep duration: 752ms
parsing: 50% complete
> Erasing the memory ...
erasing: 55% complete
erasing: 60% complete
erasing: 65% complete
> Starting to upload ...
writing: 70% complete
writing: 75% complete
writing: 80% complete
> Starting the user app ...
running: 100% complete
>> Micronucleus done. Thank you!
Titre: Re : attiny85 non reconnu
Posté par: Dominique le décembre 17, 2020, 11:28:44 am
Je viens de trouver une autre complément de l'IDE Arduino pour la famille ATTiny :

https://github.com/SpenceKonde/ATTinyCore (https://github.com/SpenceKonde/ATTinyCore)

Il y a un lien pour l'installation :

https://github.com/SpenceKonde/ATTinyCore/blob/master/Installation.md (https://github.com/SpenceKonde/ATTinyCore/blob/master/Installation.md)

L'ATTiny85 se trouve dans le menu ATTinyCore : ATTiny85 (MicroNucleus/Digispark)

L'exemple suivant permet de tester la connexion :
// the setup routine runs once when you press reset:
void setup() {               
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A  or Pro
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, HIGH);
  delay(250);               // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(1, LOW);
  delay(250);               // wait for a second
}

Au moment du téléversement, il ne faut pas que la carte Digispark soit connectée à l'USB : il faut la connecter quand c'est demandé par l'IDE dans les lignes rouges sous le sketch : le délai est de 60 s.

Je viens de tester aussi sur un ATTiny 167 aussi Digispark et ça marche aussi !

Est-ce OK pour vous maintenant ?
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 17, 2020, 01:39:18 pm
tout ce passe correctement, mais c'est quand place l'attiny dans le port usb que ça ne fonctionne pas.
(http://)
Titre: Re : attiny85 non reconnu
Posté par: Dominique le décembre 17, 2020, 02:00:23 pm
Bon, vous persistez à ne pas répondre sur ce que vous voulez faire et comment.

Il est indiqué partout que le port serie USB n’est pas visible, ni sous Windows, ni MacOS, sauf à utiliser un software serial. Et un adaptateur externe.

Donc :
- quel est votre ATTiny ?
- quel est votre montage ?
- quel est votre sketch (bibliothèques incluses) et pour quoi faire ?
- comment est configure votre IDE.
- qu’affiche l’IDE quand le sketch est televersé?

Il n’y aura plus de réponse sans cela, j’ai déjà passé la matinée pour vous  :D
Titre: Re : Re : attiny85 non reconnu
Posté par: msport le décembre 17, 2020, 06:07:45 pm
... ça ne fonctionne pas ...

Mais quelques précisions nous seraient utiles.

Effectivement ce composant est un piège à lui tout seul.

Voir les "petits" détails qui gâchent tout (et la vidéo) :

https://forum.locoduino.org/index.php?topic=601.msg6783#msg6783
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 17, 2020, 06:56:12 pm
Voilà mon projet, enfin...

Je voudrais utiliser l'attiny comme décodeur pour mes signaux de trains, j'ai vu cette vidéo https://www.youtube.com/watch?v=1CZm-1rwTGs&t=840s (https://www.youtube.com/watch?v=1CZm-1rwTGs&t=840s) et je trouvais pratique.
J'ai suivi son explication et les autres des divers liens partagé dans cette discution, mais je dois surement me planter sur un point.

Voici l'attiny en question (https://www.alwaylookgoodonyou.com/image/cache/bflw/CX0353B_1-600x600.jpg)

Voici le sketch
#include <EEPROM.h>
#include <NmraDcc.h>
// die NmraDCC - Library gibt es unter https://github.com/mrrwa/NmraDCC/archive/master.zip
// anzupassende Konstante:

#define DCC_DECODER_VERSION_ID 02 // Versions-ID zur Speicherung in CV 7

//#define DB_PRINT( ... ) sprintf( dbgbuf,"Dbg: " __VA_ARGS__ ) ; Serial.println( dbgbuf )
//char dbgbuf[80];

#define LEDanzahl  5
#define Adressen 1
//byte ledpins [] = {8,9,10,11,12}; // Uno
byte ledpins [] = {0,1,3,4,5}; //Attiny85

int DCC_ADDR = 1;   // DCC-Adresse
byte Signalbildgruppe = 0;  // 0=Sh0 2=Hauptsignal
boolean Prog = false;
byte Signalbild [4][5] = { 
    {1,1,0,0,0}, // Sh0
    {0,0,1,1,0}, // Sh1
    {1,0,0,1,0}, // Hp0 Vr0
    {0,1,1,1,0}  // Hp2 Vr2
   
  }; 
byte Letztes_Signalbild=7; //aus
const word CV_Letztes_Signalbild = 33; 
const word CV_Signalbildgruppe= 34;

// CV Speicher Struktur
struct CVPair
{
  uint16_t  CV;
  uint8_t   Value;
};

// CV Default-Werte

CVPair FactoryDefaultCVs [] =
{ {CV_ACCESSORY_DECODER_ADDRESS_LSB, DCC_ADDR%256},
  {CV_ACCESSORY_DECODER_ADDRESS_MSB, DCC_ADDR/256},
  {CV_Letztes_Signalbild, 0},
  {CV_Signalbildgruppe, 0},
};

NmraDcc DCC;
//DCC_MSG  Packet ;

///////////////////////////////////////////////////////////////
void setup() {
   //Serial.begin(115200);
   for (int i=0; i< LEDanzahl; i++) {
      pinMode(ledpins, OUTPUT);    // auf Ausgangschalten und LED aus.
      digitalWrite(ledpins,HIGH);
   }
   Programmieren();
   
   DCC.init( MAN_ID_DIY, DCC_DECODER_VERSION_ID, FLAGS_OUTPUT_ADDRESS_MODE | FLAGS_DCC_ACCESSORY_DECODER,0 );
   DCC.pin(0, 2, 1); // DCC-Signal an Pin2 ( = Int0 );
 
  /////////////////////////////////////
  // DCC-Adresse setzen
  if ( DCC.getCV( 9 ) == 255 ) {              // wenn keine gültige Adresse gespeichert ist
    DCC.setCV( 1, DCC_ADDR % 256 );
    DCC.setCV( 9, DCC_ADDR / 256 );
  }
  /*  // muss weg für Attiny     
  if ( DCC.getCV(CV_Letztes_Signalbild ) == 255 ) {              // wenn keine gültige Adresse gespeichert ist
     DCC.setCV( CV_Letztes_Signalbild, 0);
  }
  if ( DCC.getCV(CV_Signalbildgruppe ) == 255 ) {              // wenn keine gültige Adresse gespeichert ist
     DCC.setCV( CV_Signalbildgruppe, 0);
  }
  DB_PRINT( "CV1:%d, CV9:%d, CV29:%d, CV7=%d, CV8=%d, CV33=%d, CV34=%d", DCC.getCV(1), DCC.getCV(9), DCC.getCV(29), DCC.getCV(7), DCC.getCV(8), DCC.getCV(33), DCC.getCV(34) );
   // */
 
   // Letztes Signalbild laden
   Signalbildgruppe = DCC.getCV(CV_Signalbildgruppe); // Signalbildgruppe/Hauptsignal laden
   exec_function(DCC.getCV(CV_Letztes_Signalbild ));
   //Adresse aus CV 1 und 9 laden
   DCC_ADDR =(DCC.getCV(9)*256)+ DCC.getCV(1);
   
 
}
////////////////////////////////////////////////////////////////
void loop() {
    DCC.process(); // Hier werden die empfangenen Telegramme analysiert
    if(Prog == true){
         for (int i=0; i< LEDanzahl; i++) {
         digitalWrite(ledpins, LOW);
         delay (50);
          }
         
          for (int i=0; i< LEDanzahl; i++) {
             digitalWrite(ledpins, HIGH);
             delay (50);
          }
    }
}

void Programmieren()

  pinMode(2, INPUT);
   long  Zeit;
   Zeit = millis();
   while(digitalRead(2)== LOW) {
   
   }
   if (millis() > Zeit+100){
   // DB_PRINT("Zeit:%d",millis()- Zeit+100);
    Prog = true;
   }
}

//////////////////////////////////////////////////////////////
// Unterprogramme, die von der DCC Library aufgerufen werden:
// Die folgende Funktion wird von DCC.process() aufgerufen, wenn ein Weichentelegramm empfangen wurde
void notifyDccAccState( uint16_t Addr, uint16_t BoardAddr, uint8_t OutputAddr, uint8_t State ){
   
    if (Prog == true ){
        DCC.setCV( 1, Addr % 256 );
        DCC.setCV( 9, Addr / 256 );
        DCC_ADDR =Addr;
        if ( OutputAddr & 0x1 ){
          Signalbildgruppe=2;
          DCC.setCV( CV_Signalbildgruppe, Signalbildgruppe); 
        }
        else{
          Signalbildgruppe=0;
          DCC.setCV( CV_Signalbildgruppe, Signalbildgruppe); 
        }
      Prog= false;
    }
     //DB_PRINT ("CV_Adresse %d, Programm-adrssse %d ", Addr, DCC_ADDR);
     
     for( int k=0; k<Adressen; k++) //
      {   //überprüfe Adresse     
        if (Addr == DCC_ADDR+k) //
        {
           if ( OutputAddr & 0x1 )
              {  exec_function(k*2+Signalbildgruppe);
              }               
            else
              {  exec_function(k*2+1+Signalbildgruppe);
              }
       } //if addr
   }//for
   
}

void exec_function (int SBnr)  {
  #define fadedelay 5
      //  Serial.println(SBnr,DEC);
   
    if (Letztes_Signalbild != SBnr)
       {                                               
              for (int i=0; i<60; i++)    //ausblenden
              {
                for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==0 && Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],1);
                delay(fadedelay*i/60.0);
                for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==0 && Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],0);
                delay(fadedelay-(fadedelay*i/60.0));
              }
                //LEDs Aus
                for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==0 && Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],1);
       
              for (int i=0; i<60; i++)    // einblenden
              {                                         
                for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==1 && !Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],0);
                delay(fadedelay*i/60.0);
                for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==1 && !Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],1);
                delay(fadedelay-(fadedelay*i/60.0));
              }
              // LEDs ein
              for (int j=0; j<5; j++)  digitalWrite( ledpins[j],!Signalbild[SBnr][j]);
              Letztes_Signalbild=SBnr;
              DCC.setCV( CV_Letztes_Signalbild, SBnr);
          }// for
           
}

Même avec celui-ci pas moiyen:
void setup() {               
  // Initialize the digital pin as an output
  pinMode(0, OUTPUT);      // LED on Model B
  pinMode(1, OUTPUT);      // LED on Model A   
}

void loop() {
  digitalWrite(0, HIGH);   // Turn the LED on
  digitalWrite(1, HIGH);
  delay(1000);             // Wait for a second
  digitalWrite(0, LOW);    // Turn the LED off
  digitalWrite(1, LOW);
  delay(1000);             // Wait for a second
}

Titre: Re : attiny85 non reconnu
Posté par: msport le décembre 17, 2020, 07:28:26 pm
Votre problème est l'installation du pseudo driver qui n'apparait que dans les périphériques cachés du gestionnaire de périphériques en tant que "libusb-win32 devices". Y est-il ?

Voir le fil cité plus tôt.
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 17, 2020, 07:33:12 pm
Effectivement, c'est bien ça le problème, "libusb-win32 devices" n'apparait pas.
Titre: Re : attiny85 non reconnu
Posté par: msport le décembre 17, 2020, 09:22:24 pm
C'est que vous n'avez pas suivi la procédure (je fais du copier-coller du fil cité plus haut) :
les "cartes" sont à installer via http://digistump.com/package_digistump_index.json (dans Préférences puis Gestionnaire de cartes)
Puis il faut lancer DPinst64.exe directement (et non via les .bat qui plantent) pour un système x64. (le driver n'apparait que dans les périphériques cachés du gestionnaire de périphériques en tant que "libusb-win32 devices")

Et dans l'IDE il faut choisir Digispark Default 16.5 Mhz comme carte
avec le programmateur Micronucleus

et surtout ne pas connecter le Digispark avant de lancer le télédéversement. Celui-ci sollicite la connexion pendant 60 secondes quand la compilation est terminée.


Vous avez fait tout ça ?
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 17, 2020, 10:01:38 pm
Maintenant le Bootloader est isntallé et apparait dans le gestionnaire, mais toujours pas possible de téléverser.
Voici les captures que je viens de faire,  est-ce que tout est correct?
Titre: Re : Re : attiny85 non reconnu
Posté par: msport le décembre 17, 2020, 11:16:03 pm
... mais toujours pas possible de téléverser ...

Oui, mais avez-vous fait le reste ?
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 18, 2020, 02:12:48 am
oui, j'ai refait la procédure, j'ai également fait des recherches sur le net et j'ai lu qu'il faudrait peut-être un hub usb avec alimentation pour connecter l'attiny et que ça réglerait le problème.
Titre: Re : attiny85 non reconnu
Posté par: Dominique le décembre 18, 2020, 10:59:17 am
Personnellement, moi non plus sur Mac, je ne vois pas le port série USB.

Je ne comprends pas bien pourquoi vous choisissez cet ATtiny pour décoder les commandes de signaux en DCC avec tout ce logiciel !!
Il a peu de mémoire et n'est pas pratique à débugger ou alors il faut des outils plus sophistiqués.


Est-ce une contrainte de place ?
Est-ce un problème de budget ?
Etes-vous débutant en Arduino modélisme ferroviaire ?

Personnellement de prendrais un Nano ou un Pro-mini qui vous permettrait de tout faire sans vous casser comme cela.

Titre: Re : Re : attiny85 non reconnu
Posté par: msport le décembre 18, 2020, 03:35:37 pm
... j'ai refait la procédure ...

Ce n'est pas refaire la procédure qu'il faut, c'est la terminer.

Avez vous lancé DPinst64.exe ?

Faites nous une capture d'écran du résultat.

Tout à fait d'accord avec Dominique que vous n'avez pas choisi la solution la plus simple, mais maintenant que vous êtes près du but ...
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 18, 2020, 09:57:17 pm
Je pense aller chercher un Hub Usb avec alimentation dés lundi pour tenter le coup.
Titre: Re : attiny85 non reconnu
Posté par: Dominique le décembre 18, 2020, 10:47:50 pm
Un port USB délivre 500mA. C’est beaucoup plus que ce que consomme un ATTiny : regardez sa datasheet : vous devriez vous en douter !

En plus c’est faux : mon ATTiny fonctionne bien sur un port USB de mon Mac (juste l’alimentation). Je pense que votre ATTiny est mort  >:(

Laissez tomber l’ATTiny et passez au Nano : vous n’avez toujours pas expliqué pourquoi communiquer avec le PC, inutile pour un décodeur DCC sauf debuggage. Debuggez sur Nano ou installez un port softserial sur ATTiny.

Il n’y a plus de progrès. On tourne en rond. Ce fil devient incompréhensible et n’apporte rien à la communauté ! je vais devoir l’effacer !
Titre: Re : attiny85 non reconnu
Posté par: Ludo5687 le décembre 18, 2020, 11:15:28 pm
Pour programmer mon attiny, je dois quand même passer par le pc, je trouve dommage le ton que vous utilisez, je viens pour avoir de l'aide.
Sinon, comment vous programmer vos attinys?

Effectivement, je pense de plus en plus aux nanos pour mon projet, le choix de l'attiny est du à la vidéo trouvé sur youtube.

J'ai remarqué juste encore une chose, il n'y a pas de port com dans mon IDE, est-ce normale?
Titre: Re : Re : attiny85 non reconnu
Posté par: Dominique le décembre 19, 2020, 09:20:09 am
Pour programmer mon attiny, je dois quand même passer par le pc, je trouve dommage le ton que vous utilisez, je viens pour avoir de l'aide.
Sinon, comment vous programmer vos attinys?

Effectivement, je pense de plus en plus aux nanos pour mon projet, le choix de l'attiny est du à la vidéo trouvé sur youtube.
Désolé pour le ton, il faut parfois mettre les points sur les i.
Bien sûr il faut un port pour programmer, mais cela ça marche : j’ai vérifié plusieurs fois. Mais après programmation, il n’y a plus de port sauf selon ce que j’ai expliqué (softserial).
Dans votre cas passez au Nano, laissez tomber cette vidéo pas claire du tout et surtout lisez les articles où les réponses à vos questions existent.
Bonnes fêtes de fin d’année  :D
Titre: Re : Re : attiny85 non reconnu
Posté par: msport le décembre 19, 2020, 10:53:14 am
Je pense aller chercher un Hub Usb avec alimentation dés lundi pour tenter le coup.

Je crains malheureusement qu'on ne puisse rien faire de plus pour vous :

Nous vous avons donné tous les détails de la procédure et les écueils à éviter. Vous n'en tenez pas compte et vous ne nous donnez pas les résultats.

PS : quand on demande de l'aide, on essaie de remercier et de collaborer plutôt que de se plaindre de se faire critiquer (à juste titre).
Titre: Re : Re : attiny85 non reconnu
Posté par: chris_bzg le décembre 19, 2020, 12:19:01 pm
Pour programmer mon attiny, je dois quand même passer par le pc, je trouve dommage le ton que vous utilisez, je viens pour avoir de l'aide.
Sinon, comment vous programmer vos attinys?

Je vais déjà répondre à la dernière question : programmer les ATtiny est une procédure qui a été largement décrite dans ma série d'articles sur les ATtiny. Il suffit d'une carte Uno et il n'y a pas besoin de Digitruc ou autre gadget. Cela fonctionne très bien ; voyez les applications qu'on propose pour le modélisme ferroviaire.

Ce forum est justement là pour aider ceux qui rencontrent des problèmes avec les microcontrôleurs, ce qui est votre cas. J'ai suivi ce fil et franchement, mes deux collègues ont fait tout leur possible pour vous trouver des solutions, mais vous ne semblez pas vouloir les suivre car ce ne sont pas LA solution que vous aimeriez qu'on vous donne. A ce stade, je ne vois pas ce qu'on peut faire de plus pour vous et on a un peu l'impression de perdre notre temps.

A vous de décider si notre aide vous est utile et si vous n'en voulez pas, nous ne vous en voudrons pas plus pour autant. Sinon, vous êtes le bienvenu si réellement vous êtes là pour résoudre votre problème technique.  :)

Bien cordialement.

Christian - administrateur également.