Go Down

Topic: Arduino, Attiny85 et SD player d'ELM Chan via I2C (Read 6659 times) previous topic - next topic

skywodd


Re, ben euh ça marche pas .....
Avec un cable connecté du pin 1 de l'ATtiny sur la broche digital 3 de l'arduino ça bloque complétement la lecture.

Tu as fait quel montage du SD player (Stéréo, Mono, Mono-HD) ?
Si c'est le montage stéréo ou mono-hd la broche de reset est utilisé en I/O classique, donc plus de broche de reset.

Sinon tente de mettre un digitalWrite(3, HIGH); après le pinMode().
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Arioch

#16
Dec 23, 2011, 04:31 pm Last Edit: Dec 24, 2011, 09:05 am by Arioch Reason: 1
Salut, salut, pour le montage j'ai fait le mono, donc le pin reset de l'ATtiny est toujours en fonction.

Pour le digitalWrite aprés le pinMode j'avais déja testé aussi sans succés, mais il parle aussi d'un ADP3303, qui je pense doit couper l'alimentation de l'ATtiny pour faire un reset....enfin c'est que je crois avoir compris...

Quote
Da die SD-Karte mit Spannungspegeln von 2,7 ... 3,3V arbeitet, wurde ein 3,0V LowDrop Linearspannungsregler ADP3303-3.0 verwendet, der zusätzlich über einen Shutdown-Pin verfügt. Wenn Shutdown auf GND gezogen wird, dann werden die 3V abgeschaltet und der Spannungsregler verbraucht im Standbymodus nur wenige µA. Der Shutdown-Pin wird am Portpin D.1 der Ping Pong Platine angeschlossen, sodass der Atmega8 die Spannungsversorgung für den Simple SD Audio Player ein- und ausschalten kann.


Quote
Depuis la carte SD avec des niveaux de tension de 2,7 ... 3.3 fonctionne V, 3,0 V une LowDrop régulateur linéaire de tension ADP3303-3.0 a été utilisé, qui a aussi une goupille d'arrêt. Si l'arrêt est tiré à GND, puis le 3V hors tension et le régulateur de tension ne consomme qu'un peu d'uA en mode veille. La goupille d'arrêt est sur ??le port broches Ping Pong bord D.1 ligne, permettant à l'Atmega8 de l'alimentation pour le joueur SD audio simple sur et hors tension.



skywodd


Pour le digitalWrite aprés le pinMode j'avais déja testé aussi sans succés, mais il parle aussi d'un ADP3303, qui je pense doit couper l'alimentation de l'ATtiny pour faire un reset....enfin c'est que je crois avoir compris...

L'ADP3303 est un régulateur de tension 3v3, ce qui m'étonne dans ton schéma (pas facile à lire, il est un peu petit) c'est que la broche RESET de l'attiny soit laissé en l'air.
Normalement un signal LOW sur la broche RESET, reboot l'attiny quoi qu'il arrive ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

al1fch

#18
Dec 24, 2011, 06:15 pm Last Edit: Dec 24, 2011, 06:28 pm by al1fch Reason: 1
Bonjour
-Dans ce schéma le 3,3V n'est pas permanent : utilisation de la broche Shut Down du régulateur.
PD1 (?) peut donc indirectement resetter le Tiny85 (Power on reset)
-même étonnement que skywodd pour la broche de reset externe en l'air .... tant qu'il n'y a pas de relais ou de moteur à proximité ça peut tout juste aller....
-puisque la fonction Reset du Tiny85 est restée activée il est très étonnant qu'un niveau bas d'au moins 25µs ne resette pas

Arioch

#19
Dec 25, 2011, 01:48 am Last Edit: Dec 25, 2011, 02:05 am by Arioch Reason: 1
Bonsoir à vous, désolé pour le petit schéma j'avais pas tilté que j'avais pris le lien de la miniature:



ce n'est donc pas le pin Reset de l'ATtiny qui permettrais de relancer du son aprés le premier son, mais le fait de couper le 3V d'alim de la SD et de l'ATtiny durant un laps de temps pour se faire?
Puisque comme vous le dites tous les deux le reset de l'ATtiny n'est relié à rien sur le schéma.

PS : je vous met le code d'ELO-WEB qu'il a programmé pour le Atmega8 , qui gére le pilotage de l'ATtiny ( Programmé avec le hex modifié (d'ELM-CHAN) se trouvant Ici)






skywodd


ce n'est donc pas le pin Reset de l'ATtiny qui permettrais de relancer du son aprés le premier son, mais le fait de couper le 3V d'alim de la SD et de l'ATtiny durant un laps de temps pour se faire?
Puisque comme vous le dites tous les deux le reset de l'ATtiny n'est relié à rien sur le schéma.

Il ne donne pas les valeurs des fusibles qu'il a utilisé mais je pense qu'il à désactivé le RESET de son ATtiny, sinon avec RESET en l'air comme ça le µc marcherai de manière chaotique.

Dans sont systéme effectivement c'est une coupure d'alim qui redémarre l'attiny, mais en règle générale, un LOW de +25µs sur RESET déclenche un redémarrage du micro-contrôleur quoi qu'il arrive.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Arioch

Re, ben voila les valeurs des fusibles, comment tu fais pour savoir si il a désactivé ou pas le fusible?

high:0xD6 low:0xE1 extended:0xFF

skywodd


Re, ben voila les valeurs des fusibles, comment tu fais pour savoir si il a désactivé ou pas le fusible?

high:0xD6 low:0xE1 extended:0xFF

-> http://www.engbedded.com/fusecalc/

C'est les fusibles de ton attiny !? :smiley-eek-blue:
Selon les valeurs que tu donne la programmation ISP est désactivé, et le systéme utilise un oscillateur externe ...
Sa colle pas avec ton schéma :smiley-eek: et pire, sans un programmateur HVSP l'attiny est impossible à reprogrammer avec ces fusibles !
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Arioch

#23
Dec 25, 2011, 07:44 pm Last Edit: Dec 25, 2011, 07:45 pm by Arioch Reason: 1
ben je viens de cocher les méme value que sur le screen fournis par ELO-WEB (ci-dessous) , et j'obtiens les méme valeur, la case SPIEN étant coché, la programation par ISP reste donc possible?
Bon c'est pas bien grave si je peut plus le programmer il marche bien pour l'utilisation que je veux en faire, mais pour une réutilisation du montage pour autre chose, j'aimerais bien comprendre comment faire pour que ça marche ^^



skywodd

#24
Dec 25, 2011, 07:51 pm Last Edit: Dec 25, 2011, 07:56 pm by skywodd Reason: 1
Bizarre moi j'obtiens pas la même chose ...
Dans la mesure ou tu utilise un le calculateur de fusibles de Avr Dragon, je pense que tu a raison pour SPIEN.

(Oui j'ai plus confiance en Avr-studio que en avrfuses :smiley-sweat:)

Edit: ok j'ai compris, j'avais pas choisi le bon mode pour la PLL, et pour une raison XY avrfuses utilisent 0x01 au lieu de 0xFF pour le extended fuse ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

al1fch

#25
Dec 25, 2011, 08:43 pm Last Edit: Dec 25, 2011, 08:51 pm by al1fch Reason: 1
Arioch, as-tu tenté  (juste pour voir ce que ça donne un reset du Tiny85 par bouton poussoir sur sa broche 1)  .....ça serait juste un lever de doute ......

L'entrée Reset est un peu particulière vu qu'elle sert aussi à détecter la 'haute tension' de programmation? C'est spécifié =12V pour une alimentation de 5V mais qui sait, un Tiny85 particulièrement 'susceptible' alimenté en 3,3V réagit peut être avec 5V sur son Reset ?

Si le reset par BP fonctionne bien il suffirait (si l'hypothèse du passage involontaire en HVSP est valide) soit :
-d'abaisser le niveau haut envoyé par l'Arduino sur le reset du Tiny85 (pont diviseur par exemple.....)
-ou ou de séparer les niveaux hauts (5V et 3,3V) en mettant une diode (cathode en sortie Arduino et anode en pin 1 du Tiny85. )


Arioch

#26
Jan 16, 2012, 07:45 pm Last Edit: Jan 16, 2012, 11:58 pm by Arioch Reason: 1
Salut, bon je reviens sur ce montage, d'une part parce que ça m'intrigue, et d'une autre part parce que j'aimerais vraiment intégrer un lecteur SD à mon projet, et j'ai un peu matter sur la toile mais y'a rien de comparable au lecteur d'ELM Chan transformé par ELO-WEB....enfin si mais trop cher.

Alors déja @al1fch j'ai cablé le reset en direct sur un pin arduino pour faire un reset, et en direct sur l'arduino ça marche pas, je suis passé par un 2N3904, et le reset se fait nickel, faut mettre un temps de latence entre l'appuis du reset et le lachage virtuel, et aussi un petit temps de démarrage pour envoyer une commande, donc merci à toi :

Code: [Select]
#include <Wire.h>
const int reset = 2;
int count = 0;

void setup()
{
 pinMode(reset, OUTPUT);
 digitalWrite(reset,1);
 Wire.begin();

}


void loop()
{

 if(count < 3){
 Wire.beginTransmission(85);
 Wire.send(2);
 Wire.endTransmission();
 delay(2000);
 digitalWrite(reset,0);
 delay(10);
 digitalWrite(reset,1);
 delay(100);
 Wire.beginTransmission(85);
 Wire.send(3);
 Wire.endTransmission();
 delay(2000);
 digitalWrite(reset,0);
 delay(10);
   digitalWrite(reset,1);
     count ++;
 }


Aprés vu que méme avec les convertisseurs de niveaux logique le fait de lancer un morceaux plante complétement le déroulement du prog (dû au passage du bus I2C vers SPI) j'ai pensé à un truc, et je ne sais pas si c'est faisable, j'attends donc que vous m'éclairiez.

J'ai testé le voltage entre la ligne SDA et SCL sur l'ATtiny85 pendant tout le cycle de lecture d'une piste, j'obtiens donc:
-Au repos : 1V
-Lecture : 1.5V
-Aprés fin lecture : pique à 3.3V
-Repos : 1 V
........

Serait t'il possible de rajouter un Attiny85 qui lui serait là pour faire office de "relais" d'ouverture et de fermeture pour couper la ligne SDA/SCL le temps de la lecture, en gros l'arduino envois la commande à l'ATtiny qui lit la musique, l'autre ATtiny compare la tension entre SDA et SCL et si celle ci dépasse 1V coupe la liaison SDA/SCL entre l'arduino et le lecteur audio, et l'a réouvre une fois que la tension reviens à 1V?

C'est possible ou pas?

Merci de vos réponses, A+

Go Up