une erreur apres prog ?

Programmation des microcontrôleurs Atmel de type AT et ATMEGA avec BASCOM

Modérateurs: yanmar, Duval JP

une erreur apres prog ?

Messagede bellad » Lun 1 Fév 2010 13:34

Bonjour à tous

voila quand je compile mon programme avec bascom , pas d'erreurs , ensuite je programme mon attiny13 ,pas d'erreurs mais quand je fait verifier le chip avec le buffer il me met :
Code: Tout sélectionner
chip differs at bytes adress:0000

est ce normal ?
c'est la premiere fois que je programme

merci
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede Duval JP » Lun 1 Fév 2010 15:43

bonjour,
Quand on fait un contrôle de la flash il doit te répondre "verified OK" , si ce n'est pas le cas c'est que au choix (plusieurs choix possibles):
La mémoire flash est corrompue
l'alimentation envoi des parasites , cas des alim à découpage de mauvaises qualités, un coup de scope pour vérifier ne fait pas de mal.
l'alimentation est trop faible
les Fuses bits de lock ont été mis à 00 (dans ce cas la relecture est impossible donc s'il te répond erreur c'est qu'il n'a pas le DROIT de lire.

a suivre ...
Bon courage
JP
Avatar de l’utilisateur
Duval JP
Modérateur
 
Messages: 339
Inscription: Mar 15 Nov 2005 09:58

Re: une erreur apres prog ?

Messagede bellad » Mar 2 Fév 2010 08:14

bonjour et merci pour les infos

malheureusement je n'ai pas oscilo sous la main , j'ai mis un condo de 100nF sur l'alim de ma carte , elle est alimentée par le port usb du pc
pour les Fuses ci joint une copie d'ecran
Fichiers joints
attiny13_erreur.JPG
attiny13_erreur.JPG (60.23 Kio) Vu 426 fois
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede bellad » Mar 2 Fév 2010 08:36

apparemment le probleme viendrait de bascom , car je viens de programmer avec avrdude et ensuite verifier avec bascom qui m'indique que la verif est OK

qu'en pensez vous ?
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede Duval JP » Mar 2 Fév 2010 22:54

bigre,
Moi cela fonctionne sans pb depuis très longtemps avec un T45
JP
Fichiers joints
fusebits at45.jpg
fusebits at45.jpg (99.5 Kio) Vu 421 fois
Avatar de l’utilisateur
Duval JP
Modérateur
 
Messages: 339
Inscription: Mar 15 Nov 2005 09:58

Re: une erreur apres prog ?

Messagede bellad » Mer 3 Fév 2010 14:39

bigre

comme tu dis
c'est pas grave je passerai pas avrdude pour programmer ,
bon maintenant j'ai plus qu'a faire mon montage et voir si mon prog fonctionne (c'est mon first)

un petit truc , certainement bête , quand on met
Code: Tout sélectionner
Portb.1 = 1
est ce qu'il reste à 1 jusqu'a ce qu'on lui met 0 ou est ce qu'il est furtif , car j'ai tester mon montage avec proteus et quand j'appui sur le boutton pour mettre le port1 à un , le port1 reste à 1 que quand je reste appuyé sur le boutton , si je le rellache le port1 se met à 0

merci
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede Duval JP » Mer 3 Fév 2010 19:20

Bellad,
dans bascom "langage fondamentals" puis "newbie problems" de l'aide de de bascom tu iras

qui explique bien la gestion du "tristate" des AVR

puis une autre visite à config PORT tu ferras

et surtout les dernières lignes écrite en vert de ce chapitre tu liras :lol:

'Again, note that the AVR port pins have a data direction register
'when you want to use a pin as an input it must be set low first
''you can do this by writing zeros to the DDRx:
'DDRB =&B11110000 'this will set portb1.0,portb.1,portb.2 and portb.3 to use as inputs.
'So : when you want to use a pin as an input set it low first in the DDRx!
' and read with PINx
' and when you want to use the pin as output, write a 1 first
' and write the value to PORTx


JP
Avatar de l’utilisateur
Duval JP
Modérateur
 
Messages: 339
Inscription: Mar 15 Nov 2005 09:58

Re: une erreur apres prog ?

Messagede bellad » Jeu 4 Fév 2010 08:02

Maitre Yoda Bonjour

J'avoue ne pas trop comprendre les etats , je suis plus de l'époque petit scarabée.
voici mon programme , le but :
1) quand j'appui sur le BP au demarrage un relais s'enclenche et allume une lumiere , puis au bout de 30s mets la valeur lue du pin0 , branché avec LDR ,dans la memoire eeprom
2) une fois demarré. quand j'appui et relache le BP le relais lumiere s'enclenche et reste enclenché, et quand je rappui sur le BP le relais 2 enclenche une electrovanne seulement si la valeur de pin0 est => à l'eeprom et se declenche si je lache le BP

Code: Tout sélectionner
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 32
$swstack = 10
$framesize = 16

Led Alias Portb.1
Rel Alias Portb.3                                           'relais lampe'
Ree Alias Portb.4                                           'relais eletrovanne'
Bp Alias Pinb.2

Config Portb.0 = Input
Config Portb.1 = Output
Config Portb.2 = Input
Config Portb.3 = Output
Config Portb.4 = Output

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Dim D As Word
Dim U As Eram Word
Dim C As Word
Dim B As Byte


If Bp = 0 Then
Goto Prog
End If

Attente:
Do
Debounce Bp , 0 , Progp , Sub
Loop


Progp:
  Rel = 1

Do
   Gosub Volt
   Ree = 0
  If D >= U Then
  Gosub Encl
  Else


  End If
Loop


Volt:
D = Getadc(0)
Toggle Led
Return

Prog:
B = 0
Rel = 1
Waitms 10000
D = Getadc(0)
U = D
Rel = 0
Do

Toggle Led

Waitms 5

Incr B
Loop Until B = 100

Return


Encl:

Led = 1
Do

  Debounce Bp , 0 , Relay2 , Sub
  Debounce Bp , 1 , Relayoff , Sub

Loop


Relay2:
Ree = 1
C = 1
Return

Relayoff:
Ree = 0
C = C + 1
  If C = 1000 Then
  C = 1
   Ree = 0
   Rel = 0
   Led = 0

  Goto Attente
   End If

Return


End
End


peut tu me sortir du coté obscure ?
merci
Dernière édition par bellad le Lun 8 Fév 2010 13:32, édité 2 fois.
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede Duval JP » Jeu 4 Fév 2010 09:53

la broche 5 d'un attiny est une vacherie, puisque elle est D'ABORD la broche de reset: dés que tu vas lui mettre un 5V en entrée ton micro va se resetter.
puis dans ton programme je vois par exemple: sauf si tu as changé les fusebit (raison du mauvais fonctionnement avec Bascom ?)
et sauf si tu as une STK500 tu ne pourras pas revenir en arrière.
si tu as besoin de plus de broches, passes par un atMega 8 ou un attiny2313

Relay2:
Portb.4 = 1
Return

mais pas de config portB.4=output qui doit ABSOLUMENT précédé un changement d'état de port.

je te conseille d'utiliser le simulateur BASCOM qui te permet de voir les changement d'état.
et de faire des essais de petit bout de programme pour bien saisir le rôle des différentes instructions
tu cliques sur lcd pour voir les port PB (sorties) et IB (entrées) et le simulateur ADC fonctionne parfaitement
JP
Avatar de l’utilisateur
Duval JP
Modérateur
 
Messages: 339
Inscription: Mar 15 Nov 2005 09:58

Re: une erreur apres prog ?

Messagede bellad » Jeu 4 Fév 2010 13:33

merci jp pour la broche 5 , mais ça m'arrange pas , pourtant
Code: Tout sélectionner
The reset pin can also be used as a (weak) I/O pin

mais j'te crois
en ce qui concerne mon prog tu dis qu'il n'y a pas
config portB.4=output

moi j'ai mis Config Pinb.4 = Output
là tu vas pouvoir m'expliquer la difference car dans ta doc (que je te remercie) tu mets
Code: Tout sélectionner
pour le CONFIG PINx.y= etat , etat peut etre INPUT ou OUTPUT ou 1 ou 0
(il est plus rapide de configurer un port par Config Port)


pour l'instant j'ai juste programmé attiny13 avec usbasp et un support dil 8b
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede Duval JP » Jeu 4 Fév 2010 16:33

il faut pas croire tout ce qu'il y a sur internet
:oops: cette doc est un peu ancienne est je n'avais pas tout pigé à l'époque. Une nouvelle doc devrait venir d'ici l'été.

maintenant je passe par config portx.y=input ou config portx.y=output
ce qui veut bien dire ce que cela veut dire: tu mets ton port en entrée ou en sortie
en entrée tu peut lire les ports
en sortie tu peux envoyé un 1 ou un 0

config port b.1= output
portb.1=1 '5v sur le port
config port b.1= input 'toujours 5v sur le port
var=pinb.1
attention ces fichus micros on de la mémoire, si tu ne remets pas le port dans le bon sens les résistances internes de pull-up sont activées et on aura toujours 1 sur le port en lecture donc il faudra écrire
config port b.1= output
portb.1=1
--
--
puis portB.1=0
config port b.1= input
var=pinb.1
pour être sur que la lecture corresponde au port.
et oui c'est pas si simple
JP
Avatar de l’utilisateur
Duval JP
Modérateur
 
Messages: 339
Inscription: Mar 15 Nov 2005 09:58

Re: une erreur apres prog ?

Messagede bellad » Ven 5 Fév 2010 08:08

merci jp pour ce p'tit cours

je recap (pour voir si j'ai bien compris)

pour le output :
Code: Tout sélectionner
Config Portb.3 = Output
porb.3=1


pour le input :
Code: Tout sélectionner
Config Portb2 = Input
config portb.2= output
portb.2=1
portb.2=0
config port b.1= input


un complexe pour le input , est ce qu'apres , si j'utulise debounce , change quelque chose . comment fait tu pour un bouton poussoir ?

autre question , vu que je n'utilise plus le portb.5 , j'enleve une led du portb.2 pour le BP et comment faire clignoter une led , lent ou rapide ,au portb.1 ?
merci
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede Duval JP » Ven 5 Fév 2010 09:14

complexe pour les input, oui et non

Config Portb2 = Input
config portb.2= output
portb.2=1
portb.2=0
petite correction: le config input pour une lecture doit être mis après un output, Si et seulement Si, tu t'est servi de cette broche pour un output avant.

le débounce fonctionne très bien seul, pas besoin d'orienté les ports avant.

exemple:
'-----------------------------------------------------------
Keyboard:
Key = 0
Do
Debounce Pind.3 , 0 , Escsub
Debounce Pind.4 , 0 , Flechehautesub
Debounce Pind.5 , 0 , Flechebassesub
Debounce Pinb.4 , 0 , Oksub
If Key > 0 Then Exit Do
Loop
Return
'--------filles de la précédente----------------------
Flechehautesub:
Key = 3 'Actionclock = Actionclock + 1
Return
Flechebassesub:
Key = 2 'Actionclock = Actionclock - 1
Return
Oksub:
Key = 4
Return
Escsub:
Key = 1
Return

jp
Avatar de l’utilisateur
Duval JP
Modérateur
 
Messages: 339
Inscription: Mar 15 Nov 2005 09:58

Re: une erreur apres prog ?

Messagede bellad » Ven 5 Fév 2010 13:46

bon j'ai refait les modifs
j'ai encore un probleme (et pourquoi tu dis je m'en doutais :lol: )

dans
Code: Tout sélectionner
Debounce Bp , 0 , Relay2

il va bien à l'etiquete relay2 et quand il arrive à return , il revient à $regfile = "attiny13.dat"
ce qui me reinitialise tous

où est mon erreur :?:

Code: Tout sélectionner
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 32
$swstack = 10
$framesize = 16
Config Portb.0 = Input
Config Portb.1 = Output
Config Portb.2 = Input
Config Portb.3 = Output
Config Portb.4 = Output
Led Alias Portb.1
Rel Alias Portb.3                                           'relais lampe'
Ree Alias Portb.4                                           'relais eletrovanne'
Bp Alias Portb.2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim D As Word
Dim U As Eram Word
Dim C As Word
Dim B As Byte
Bp = 1
Led = 0
Rel = 0
Ree = 0

If Bp = 0 Then
Goto Prog
End If

Attente:
Do
Debounce Bp , 0 , Progp
Loop

Progp:
Gosub Volt
  Rel = 1
  Led = 1
Do
   Ree = 0
  If D >= U Then
  Led = 0
  Toggle Led

  Debounce Bp , 0 , Relay2
   C = 1
  Else
  C = C + 1
  If C = 1000 Then
  C = 1
   Ree = 0
   Rel = 0
   Led = 0

  Goto Attente
   End If

  End If
Loop


Volt:
D = Getadc(0)
Return

Prog:
B = 0
Rel = 1
'Wait 30
D = Getadc(0)
U = D
Rel = 0
Do
Toggle Led                                                  'toggle state
Waitms 500                                                  'wait for 1 sec
Incr B
Loop Until B = 10

Stop

Relay2:
Ree = 1
Return

End
bellad
Nouveau
Nouveau
 
Messages: 19
Inscription: Mar 19 Juin 2007 12:00

Re: une erreur apres prog ?

Messagede B2V » Ven 5 Fév 2010 14:17

Bonjour

Ce code est correct, parce que de base Debonce effectue un simple saut
Code: Tout sélectionner
Attente:
Do
Debounce Bp , 0 , Progp
Loop


Par contre, Ici on fait appel à une sous-routine
Lorsque l'on arrive au return, le proc reviens à l'endroit où la pile hardware lui dit d'aller, comme le Debounce effectue un simple saut l'adresse de retour n'a pas été sauvegardée et il y a fort à croire que le return utilise donc $0000 (la pile étant vide à ce stade de l'exécution) soit l'équivalent d'un Reset.
Code: Tout sélectionner
Debounce Bp , 0 , Relay2
...
Relay2:
Ree = 1
Return


Pour provoquer l'appel à une sous-routine, il faut lui préciser une option soit:
Code: Tout sélectionner
Debounce Bp , 0 , Relay2, Sub


@+
B2V
Avatar de l’utilisateur
B2V
Expert
Expert
 
Messages: 478
Inscription: Ven 25 Sep 2009 21:36
Localisation: Ollioules dans le Bas Var

Suivante

Retourner vers Language Basic (Bascom)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron