[RESOLU] ATtiny84

Bonsoir,
Je suis tombé, en cherchant un composant, sur un afficheur 4 x 7segments (grand modèle) via I2C à base de SAA1640. L'envie de faire un vieux projet de Cook Timer avec affichage géant pour ceux qui ont la vue qui baisse avec l'age et avec un signal sonore réglable en fréquence (mes oreilles ont des problèmes avec les aiguës).
Avec quelques composants (4 BP, 6 résistances, 1 résistance variable, 1 buzzer, 1 carte UNO et 1 afficheur), me voilà au coeur du programme.
Tout fonctionne comme prévu et en prime l'intensité réglable des segments des afficheurs 7segments.
Taille du programme sur Arduino UNO : 7870 octets.
Pour intégrer le montage dans un boîtier digne de cette réalisation qui ne sert à rien, j'ai transcrits le programme pour être implanter dans un ATtiny84 avec la bibliothèque I2C qui va bien. Quelques corrections plus tard, le programme fonctionne comme la version sur la carte UNO
Taille du programme sous ATtiny84 (oscillateur interne 8MHz) : 4732 octets.

Le programme utilise la fonction delay(xxx), mais elle n'a pas la durée espérée (que j'ai corrigé pour avoir les bons timing).
Par exemple delay(200) dure environ 2 secondes et, bien sur, la fréquence de tone est 10 plus faible (logique).

Pourriez-vous me dire d'où peut provenir ce défaut sur la durée de delay(xxx) ?

@+

Salut Icare

A quelle fréquence tourne ton tiny? Sur quelle horloge?

Est-ce que ton board.txt indique la bonne fréquence?

Hi Barbudor;

barbudor:
A quelle fréquence tourne ton tiny? Sur quelle horloge?

Le tiny tourne normalement à 8MHz sur l'oscillateur interne. Le téléversement se fait via ISP USBasp et la carte est ATtiny84 @ 8 MHz (internal oscillator, BOD disabled)

barbudor:
Est-ce que ton board.txt indique la bonne fréquence?

Oui , j'ai bien dans l'IDE "ATtiny84@ 8 MHz (internal oscillator; BOD disabled) on COM9"

@+

A partir du chip reçu vierge, as tu fait juste "upload with programmer" ou bien as tu fait avant un "burn bootloader"

Même si sur le tiny (ou un autre d'ailleurs) tu n'utilises pas de bootloader, cette operation est indispensable pour flasher les fusibles.

Je soupçonne ton tiny d'être toujours en config usine à 1 MHz

Bonjour,
Merci Barbudor.

barbudor:
A partir du chip reçu vierge, as tu fait juste "upload with programmer" ou bien as tu fait avant un "burn bootloader"
Même si sur le tiny (ou un autre d'ailleurs) tu n'utilises pas de bootloader, cette operation est indispensable pour flasher les fusibles.
Je soupçonne ton tiny d'être toujours en config usine à 1 MHz

Je suis parti d'un chip vierge sans flasher de bootloader.
@+

[EDIT]
J'utilise une bibliothèque I2C pour le tiny qui est prévu de fonctionner à 1 MHz mais j'ai modifié la fréquence à 8 MHz comme précisé dans la documentation. L'interface I2C fonctionne très bien mais ce n'est pas un gage sur la fréquence réel.

[EDIT2]
C'est bien une histoire de fusibles. J'ai flashé en premier le bootloader puis j'ai re-flashé mon programme et la différence est flagrante. Reste maintenant à remettre les bonnes tempos.
Dans l'état actuel ce n'est plus de la cuisson saignante mais carrément sur pieds.
Merci Barbudor

icare:
Bonjour,
Merci Barbudor.

barbudor:
A partir du chip reçu vierge, as tu fait juste "upload with programmer" ou bien as tu fait avant un "burn bootloader"
Même si sur le tiny (ou un autre d'ailleurs) tu n'utilises pas de bootloader, cette operation est indispensable pour flasher les fusibles.
Je soupçonne ton tiny d'être toujours en config usine à 1 MHz

Je suis parti d'un chip vierge sans flasher de bootloader.
@+

[EDIT]
J'utilise une bibliothèque I2C pour le tiny qui est prévu de fonctionner à 1 MHz mais j'ai modifié la fréquence à 8 MHz comme précisé dans la documentation. L'interface I2C fonctionne très bien mais ce n'est pas un gage sur la fréquence réel.

Comme l'a dit barbudor il faut flasher le bootloader même si ici ce n'est pas ce qu'on fait réellement, mais ça permet de configurer les fuses et notamment celui de la fréquence d'horloge

Bonjour,
Merci B@tto

Pour info, sur des ATmega328P vierge reçu récemment de chez Mouser, je n'ai pas réussi à flasher les fusibles avec mon USBASP.
AVRDude renvoyait une erreur.

Apparemment, quand il tourne à 1MHz, le 328p ne sait pas dialoguer avec AVRdude/USBASP à pleine vitesse

Il a fallut que je flashe les fusibles "à la main" (en ligne de commande) en ajoutant "-B 250" pour réduire la vitesse de flashage.

Je ne sait pas si c'est spécifique à USBASP ou a n'importe quel programmateur (ArduinoISP ?).

Mais j'ai galéré pendant 24H avant de trouver le truc sur un autre forum.

j'ai burné deux 328 hier, via "arduino as ISP", aucun souci. je ne saurais du coup te dire comment ils étaient programmés... les chips venaient de chez mouser, il y a un an.

Ton arduinoAsp est un clone chinois ou un original ?

J'ai un clone chinois et pas de problème pour des Atmega328P CMS de chez Farnell. En revanche pour l'upload de code sans passer par le bootloader j'ai eu des soucis avec l'usbAsp, il me faisait tout planter. Exemple : un blink sur le pin 7 ==> OK la je peux l'up autant de fois que je veux pas d'erreur. Quand je change pour le pin 5 ==> Ok mais erreur signalée ("content mismatch ...") et à partir de la tout foire, plus aucun code ne veux passer sauf le bootloader. Je pense même que ça m'a brické deux atmega ... Donc USBASP pour ma part seulement pour graver le bootloader, sinon USBTinyISP

Mes USBASP sont les moins chers trouvés sur eBay
A part cette histoire de 328P, je les utilise depuis plusieurs mois sur des tiny85 sans problème.