Hello!
Bon, le titre du post n'est pas évident.
Je vais tenter de m'exprimer plus clairement.
Il s'agit d'un projet de télécommande HF, le principe étant de transmettre 3 valeurs de 0 à 9 (clavier), avec validation par une des touches A ou B.
Pour ce faire, le pic memorise en Eeprom les trois valeurs tapées (sachant, que le système n'est actif QUE si une touche est enfoncée, conso oblige, cf schéma), puis les envoie, en Manchester, via le Laipac.
Bien sûr, les "gardes-fous" interdisent la validation d'un code invalide (pas de valeur, seulement deux valeurs).
Le souci (pas grave, mais ça me tracassouille ...), c'est que, forcément, à l'issu du premier téléchargement de programme dans le pic, le contenu des trois adresses Eeprom n'est pas défini.
Ce qui implique, de facto que la première utilisation pourra être erronée (validation d'une ou deux entrée(s) fonctionnelle Aie !)
Question, donc : Existe-t-il un moyen de "pré-positionner" une valeur en Eeprom, AVANT le téléchargement ?
Code et schéma:
Merci.
Edit:
Tiens ! on ne peut pas éditer le titre du post ! Désolé pour la faute.
Bon, le titre du post n'est pas évident.
Je vais tenter de m'exprimer plus clairement.
Il s'agit d'un projet de télécommande HF, le principe étant de transmettre 3 valeurs de 0 à 9 (clavier), avec validation par une des touches A ou B.
Pour ce faire, le pic memorise en Eeprom les trois valeurs tapées (sachant, que le système n'est actif QUE si une touche est enfoncée, conso oblige, cf schéma), puis les envoie, en Manchester, via le Laipac.
Bien sûr, les "gardes-fous" interdisent la validation d'un code invalide (pas de valeur, seulement deux valeurs).
Le souci (pas grave, mais ça me tracassouille ...), c'est que, forcément, à l'issu du premier téléchargement de programme dans le pic, le contenu des trois adresses Eeprom n'est pas défini.
Ce qui implique, de facto que la première utilisation pourra être erronée (validation d'une ou deux entrée(s) fonctionnelle Aie !)
Question, donc : Existe-t-il un moyen de "pré-positionner" une valeur en Eeprom, AVANT le téléchargement ?
Code et schéma:
Code:
'Telecommande Manchester 14M2
'Emetteur
'G.Treels
'05/2013
'Code à trois chiffre, validé soit par "A", soit par "B"
'Sortie en cmd Laipac 432Mhz, 10 trames
#picaxe 14M2
Let dirsC=%000010
Let dirsB=%110000
Symbol LED=C.4
Symbol TX=B.2
Debut:
Readadc b.3,b0 'U fct touche, cf schema
Select b0
Case >155
b1="A"
Gosub WriteEeprom
Goto debut
Case >145
b1="1"
Gosub WriteEeprom
Goto debut
Case >135
b1="4"
Gosub WriteEeprom 'Explo clavier, via ADC
Goto debut
Case >125
b1="7"
Gosub WriteEeprom
Goto debut
Case >115
b1="0"
Gosub WriteEeprom
Goto debut
Case >108
b1="2"
Gosub WriteEeprom
Goto debut
Case >102
b1="5"
Gosub WriteEeprom
Goto debut
Case >95
b1="8"
Gosub WriteEeprom
Goto debut
Case >91
b1="B"
Gosub WriteEeprom
Goto debut
Case >87
b1="3"
Gosub WriteEeprom
Goto debut
Case >83
b1="6"
Gosub WriteEeprom
Goto debut
Case >79
b1="8"
Gosub WriteEeprom
Goto debut
Else
Goto debut
End Select
Goto debut
WriteEeprom:
High LED
If b1="A" or b1="B" Then
Read 0,b2 'le "0" vaut 48
Read 1,b3
Read 2,b4
b4=b4+b3+b2 'test si bien tois valeus
If b4 <144 Then 'inferieur à trois zéros
Goto erreur
End if
Read 2,b4 'ramene b4 a sa valeur
Goto envoi
End If
Read 0,b5
If b5<48 Then 'premier emplacement prom libre ?
Write 0,b1
Goto fin
End If
Read 1,b5
If b5<48 Then 'deuxième emplacement libre ?
Write 1,b1
Goto fin
End If
Read 2,b5
If b5<48 Then 'troisième emplacement libre ?
Write 2,b1
Goto fin
End If
Goto erreur
Envoi:
'b2,b3,b4
High TX
Write 0,0 'Re init Eeprom
Write 1,0
Write 2,0
For b5=1 to 10
RFout B.1,("Z","C","Z","C",b2,b3,b4,"Z") 'Envoi 10 trames
Pause 10
Next b5
Low TX
Low LED 'Coupe tout
Goto Fin
Erreur:
Write 0,0 'Re init Eeprom
Write 1,0
Write 2,0
Low LED
Pause 100
High LED
Pause 100
Low LED
Pause 100
High LED
Pause 100
Fin:
Low LED 'Pas vraiment utile, mais ...
Edit:
Tiens ! on ne peut pas éditer le titre du post ! Désolé pour la faute.
Attachments
-
81.1 KB Views: 10