Auteur Sujet: attiny85 non reconnu  (Lu 23114 fois)

Ludo5687

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
attiny85 non reconnu
« 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

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #1 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
Ca ne marche pas comme les ATMega !
Cordialement,
Dominique

CATPLUS

  • Sr. Member
  • ****
  • Messages: 435
    • Voir le profil
Best Regards

Ludo5687

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #3 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

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #4 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?
« Modifié: décembre 17, 2020, 09:36:42 am par Dominique »
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #5 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!
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #6 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

Il y a un lien pour l'installation :

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 ?
« Modifié: décembre 17, 2020, 11:46:08 am par Dominique »
Cordialement,
Dominique

Ludo5687

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #7 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.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #8 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
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Re : attiny85 non reconnu
« Réponse #9 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
Cordialement

Ludo5687

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #10 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 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

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
}


msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #11 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.
Cordialement

Ludo5687

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #12 le: décembre 17, 2020, 07:33:12 pm »
Effectivement, c'est bien ça le problème, "libusb-win32 devices" n'apparait pas.

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #13 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 ?
Cordialement

Ludo5687

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : attiny85 non reconnu
« Réponse #14 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?