| BALA2BAL (Bal à 2 balles) | |
|
+6CleoN DMARRION RaynalN Fantasio Derf Yves07 10 participants |
|
Auteur | Message |
---|
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Mer 10 Fév 2021 - 20:03 | |
| |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Mer 10 Fév 2021 - 20:15 | |
| Merci pour l'info ! J'ai suivi la piste avr/io.h et j'ai abouti à avr/iotn85.h . . . La suite demain |
|
| |
CleoN Membre
Age : 68 Localisation : 33 Bouliac Nombre de messages : 1618 Date d'inscription : 26/11/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Mer 10 Fév 2021 - 20:45 | |
| Je suis aussi sous linux mais j'utilise Kubuntu.
Pour le développement informatique j’utilise code::blocks comme IDE.
sur mon PC les includes AVR sont installés dans /usr/lib/avr/include
|
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2032 Date d'inscription : 10/10/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Jeu 11 Fév 2021 - 7:29 | |
| Bonjour Yves et CleoN, Mon exemple de code avait pour but de montrer comment le timer 1 est utilisé pour générer le PWM. Merci à CleoN d'avoir complété les informations concernant les fichiers à inclure. Si le MCU est correctement défini dans le Makefile, tout le reste en découle. Je n'ai jamais eu de problème de définition des entrées-sorties sur les projets que j'ai fait avec des Attiny2313, Atmega8 et Attiny45. C'est peut-être un peu risqué de commencer par écrire le programme complet du BAL. Ma suggestion est de procéder par étapes, en ajoutant les fonctionnalités au fur et à mesure:
- Entrées-sorties binaires. Faire clignoter une led, le tout 1er programme de chaque débutant en microcontrôleurs, lire un bouton poussoir.
- Timers, d'abord sans interruption, puis pour générer le PWM ou avec interruption.
- Convertisseur ADC si on souhaite lire un potentiomètre par exemple ou plusieurs poussoirs sur une seule broche.
- En parallèle à tout cela, bien réfléchir à la structure du programme, l'approche machine d'états étant la plus appropriée pour ce type d'application.
Bonne journée. |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Jeu 11 Fév 2021 - 15:41 | |
| - SavignyExpress a écrit:
- Hello Yves,
Pour la PWM, il faut utiliser le générateur de waveform couplé à l'un des 2 timers. La durée de l'impulsion sera définie par la valeur d'un registre OCRx. Le timer et le générateur de waveform ont l'avantage de tourner en parallèle tandis qu'une interruption toutes les 30 us pénalisera trop le programme principal, surtout si le processeur tourne à 1 MHz. . . . Oui, mais pourquoi pas 8 Mhz ? La doc dit qu'il suffit de mettre 1 dans CKDIV8 du "Low Fuse Byte". Celà pose t'il un problème ? Après réflexion, pour une fréquence de PWM de 100Hz, un découpage en 60 pas de vitesse possibles me paraît plus que suffisant et ne nécessite qu'une interruption toutes les 160µs. 60 a beaucoup de diviseurs ça évite les arrondis ! J'ai reçu les puces (Farnell: 1€ par 30, port gratuit) et un usbasp (Amazon: 8€). |
|
| |
CleoN Membre
Age : 68 Localisation : 33 Bouliac Nombre de messages : 1618 Date d'inscription : 26/11/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Jeu 11 Fév 2021 - 16:48 | |
| Je ne connais pas bien le tiny85 (ou 45 ou autres) mais il me semble que tu devrais pouvoir générer ton PWM sans utiliser d'interruption. Sur l'atmega 328p, en choisissant bien la pin de sortie et le mode de fonctionnement du timer (Fast PWM) une fois programmé la fréquence du PWM , il ne reste plus qu'a programmer le rapport cyclique. exemple sur le timer 2 de l'atmega328p - Code:
-
TCCR2A = (1<<WGM20) | (1<<WGM21) | (1<<COM2B1); // fast PWM, clear OC2B on compare TCCR2B = (1<<WGM22) | (1<<CS21); // fast PWM, prescaler of 8 OCR2A = ((F_CPU / / frequency) - 1; // Fréquency OCR2B = ((OCR2A + 1) / 2) - 1; // 50% duty cycle
Ici le rapport cyclique est bloqué à 50%, (il s'agit de générer un signal carré à 40KHz pour une barrière optique) , mais rien n’empêche de modifier le rapport cyclique à la volée, à condition de rester inférieur au registre OCR2A (TOP counter) Il y a de bonne chance que tu puisses le faire aussi sur ton microcontrôleur. |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2032 Date d'inscription : 10/10/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Jeu 11 Fév 2021 - 20:21 | |
| Bonsoir, Oui, l'Attiny45 permet de générer le PWM à l'aide du hardware spécialisé, sans interruption. L'exemple que j'ai posté a une fréquence de 97.67 Hz pour 25%. La variation de la durée de l'impulsion se fait en modifiant la valeur du registre OCR1A dans le programme principal, par incrément de 0.625 % (64 us / 10.24 ms). Le prescaler et la valeur du registre OCR1C sont à adapter pour d'autres fréquences. Quant à désactiver la division de l'horloge pour fonctionner à 8 MHz, il exécutera plus d'instructions, par seconde, mais consommera plus. Je n'en ai encore jamais eu besoin. Bonne soirée.
|
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Jeu 11 Fév 2021 - 20:42 | |
| Bonsoir à tous les deux et merci pour les pistes J'ai passé une bonne partie de la journée à lire et relire de haut en bas et de bas en haut ce que Microchip/Amtel expliquent dans leurs data sheets ! Le brouillard se dissipe lentement . . . à suivre demain. Alors je choisirais, avec ou sans interruptions, au plus simple ou au hasard ! Ceci étant, il n'y a finalement pas tant de choses que ça à faire et surtout pas souvent. |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Sam 13 Fév 2021 - 19:07 | |
| |
|
| |
CleoN Membre
Age : 68 Localisation : 33 Bouliac Nombre de messages : 1618 Date d'inscription : 26/11/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Sam 13 Fév 2021 - 22:17 | |
| y a plus qu'a !!!! Ne faudrait il pas des accolades sur cette ligne ? - Code:
-
else PORTB &= 53; PORTB |= 2; // Jaune PB1 à 1,PB3 à 0
|
|
| |
sierramike Membre
Age : 44 Localisation : 67000 STRASBOURG Nombre de messages : 4563 Date d'inscription : 29/10/2015
| Sujet: Re: BALA2BAL (Bal à 2 balles) Dim 14 Fév 2021 - 0:29 | |
| Sans accolade, seule l'instruction "PORTB &= 53;" est exécutée dans le "else". L'instruction "PORTB |= 2" est exécutée dans tous les cas.
Dernière édition par sierramike le Dim 14 Fév 2021 - 11:45, édité 1 fois |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Dim 14 Fév 2021 - 9:08 | |
| Bonjour aux couche tard !
J'ai bien oublié les accolades, merci !
Ce matin, fer à souder . . . |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Dim 14 Fév 2021 - 19:06 | |
| |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Dim 14 Fév 2021 - 20:45 | |
| Vu dans la console: avrdude: warning: cannot set sck period. please check for usbasp firmware update.Mais pour "updater le firmware" du programmeur, il faut un autre programmeur . . . en état de marche Ou une option pour changer/fixer "sck period" ? Quelqu'un sait il faire ? . . . . S'il vous plaît . . . . |
|
| |
Fantasio Membre
Age : 63 Localisation : Saint Médard en Jalles (33) Nombre de messages : 2239 Date d'inscription : 15/11/2019
| Sujet: Re: BALA2BAL (Bal à 2 balles) Dim 14 Fév 2021 - 21:04 | |
| @Yves
Tout d'abord , super travail !
Tu ne peux pas passer par un UNO pour programmer ton Attiny?
J'ai compilé ton code que tu mettais en ligne hier avec l'IDE et aucun problème.
Tiens nous au courant. |
|
| |
CleoN Membre
Age : 68 Localisation : 33 Bouliac Nombre de messages : 1618 Date d'inscription : 26/11/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Dim 14 Fév 2021 - 21:35 | |
| |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Lun 15 Fév 2021 - 9:33 | |
| Good morning, good morning, good morning now (from The Beatles Sgt Pepper's album) Trouvé des exemples là: https://www.ladyada.net/learn/avr/avrdude.htmlModifié Makefile: load: ${AVR_TARGET} avrdude -c usbasp -p ${MCU} -U lfuse:w:0xE2:m avrdude -c usbasp -p ${MCU} -U flash:w:first.hexPuis "make load" et la console dit. . . yves@coofun:~/TRAIN/OUT/Bala2Bal/projet$ make load avrdude -c usbasp -p attiny45 -U lfuse:w:0xE2:m
avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9206 (probably t45) avrdude: reading input file "0xE2" avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lfuse written avrdude: verifying lfuse memory against 0xE2: avrdude: load data lfuse data from input file 0xE2: avrdude: input file 0xE2 contains 1 bytes avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ... avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:E2)
avrdude done. Thank you.
avrdude -c usbasp -p attiny45 -U flash:w:first.hex
avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9206 (probably t45) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: reading input file "first.hex" avrdude: input file first.hex auto detected as Intel Hex avrdude: writing flash (866 bytes):
Writing | ################################################## | 100% 0.33s
avrdude: 866 bytes of flash written avrdude: verifying flash memory against first.hex: avrdude: load data flash data from input file first.hex: avrdude: input file first.hex auto detected as Intel Hex avrdude: input file first.hex contains 866 bytes avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.20s
avrdude: verifying ... avrdude: 866 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:E2)
avrdude done. Thank you.On continue ! |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Lun 15 Fév 2021 - 10:51 | |
| Donc bien un pb de vitesse, mais il n'y a pas de strap sur mon programmeur "chinois". Par chance, ça n'empêche pas de programmer le fusible adéquat (lfuse à 0xE2) et après ça roule ! |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2032 Date d'inscription : 10/10/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Lun 15 Fév 2021 - 11:06 | |
| Bonjour Yves, J'utilise un autre modèle de programmateur et je n'ai jamais été confronté à ce problème, mais peut-être que d'autres utilisateurs de USBASP pourront t'aider. As-tu regardé sur le forum Locoduino ? Quelques idées, mais sans aucune garantie: Bonne journée et meilleures salutations. |
|
| |
mistigris Membre
Age : 55 Localisation : Maisons Alfort Nombre de messages : 473 Date d'inscription : 11/04/2012
| Sujet: Re: BALA2BAL (Bal à 2 balles) Lun 15 Fév 2021 - 18:57 | |
| ou peut être la dessus : ici |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Lun 15 Fév 2021 - 19:05 | |
| OUI, mai non ! J'ai pu transférer le code dans la puce ce matin. Reste à càbler qq composants autour (c'est en train de se faire) puis à tester et à débugger ! |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2032 Date d'inscription : 10/10/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Mar 16 Fév 2021 - 16:40 | |
| Hello Yves, Très bonne nouvelle que le chargement du programme ait fonctionné. Comment as-tu résolu le problème du warning? Meilleures salutations. |
|
| |
Yves07 Membre
Age : 77 Localisation : Ardeche Nombre de messages : 175 Date d'inscription : 18/04/2020
| Sujet: Re: BALA2BAL (Bal à 2 balles) Mar 16 Fév 2021 - 18:41 | |
| Bonsoir, Pas résolu ! Il dit toujours "cannot set sck period . . .", mais il continue et termine par "verifying ... 862 bytes of flash verified" Ce qui échoue si je ne brûle pas le LFUSE à E2 d'abord. Ma conclusion est que la sck period par défaut du prommer est trop rapide pour le attiny à 1Mhz, avrude tente de la modifier sans succès mais il ne sait pas que j'ai brûlé LFUSE pour le passer à 8Mhz et là ça roule. Par chance (?) on peut brûler les fusibles ! Donc, le truc c'est de faire deux passes, une première pour LFUSE seulement(un seul byte): avrdude -c usbasp -p attiny45 -U lfuse:w:0xE2:met la deuxième: avrdude -c usbasp -p attiny45 -U flash:w:first.hexJe pense que je dois pouvoir le remettre à 1Mhz après programmation si ça chauffe trop. Le hardware est prêt, mise à feu demain . . . |
|
| |
Fantasio Membre
Age : 63 Localisation : Saint Médard en Jalles (33) Nombre de messages : 2239 Date d'inscription : 15/11/2019
| Sujet: Re: BALA2BAL (Bal à 2 balles) Mar 16 Fév 2021 - 19:31 | |
| On croise les doigts |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2032 Date d'inscription : 10/10/2010
| Sujet: Re: BALA2BAL (Bal à 2 balles) Mer 17 Fév 2021 - 11:20 | |
| Hello Yves, Belle avancée, tiens-nous au courant de la suite. Je me permets toutefois 2 remarques. J'aurais prévu un connecteur ICSP afin d'éviter de déplacer le microcontrôleur à chaque téléchargement. Le connecteur habituel n'est pas très pratique, mais une version simplifiée avec toutes les broches sur une ligne est une option, elle a pour avantage d'être utilisée sur breadboard ce que le connecteur usuel a 2 rangées de broches ne permet pas. Mon connecteur a les broches suivantes dans l'ordre: GND, VCC, SCK, MISO, MOSI et RESET. Tu peux le voir avec son câble plat à côté de l'Attiny sur la breadboard de gauche. Même si la PWM fonctionne bien par la routine d'interruption, explore la génération de PWM par le hardware spécialisé de l'Attiny85. Bonne suite de réalisation.
Dernière édition par SavignyExpress le Ven 26 Fév 2021 - 8:34, édité 1 fois |
|
| |
Contenu sponsorisé
| Sujet: Re: BALA2BAL (Bal à 2 balles) | |
| |
|
| |
| BALA2BAL (Bal à 2 balles) | |
|