-lextronic : bmp2i2c
source .c pour PIC
(fct graphiques)
image lex dans i2c ou source PIC

- mini-police 4*4

transfo : 2*9V
 2*11.4V alt  vide
 2*9.5V alt / 33ohms
 
 
entree analogique 12V :
12.4V -> 2.15V

47K 10K  Uana0 = 10/57 * 12V = 2.10V (2.10*255/5V = 107 can  (107.37))
12/107 = 0.112 = *112/100 = 1+12/100 = 1 + 1/8

*CAPA 100nF sur AN0

backlight
Ur = 8.88V 68?? 100 Ohms Vled = 4.13V -> I = 88.8mA -> Pr = 0.79W
Ur = 7.16V 33 Ohms Vled = 4.37V -> I = 217mA -> Pr = 1.55W
47 / 68 ohms


0  1  2  3  4   5  6  7  8  9  A B C D E F 

####  #    ###
#  # ##      #
#  #  #    #
#### ###   ###


- NE5532 -> LM358??

- ///affichage en ngatif ; putdata2
- scroling (Z) /!\ scrol sur CS1 puis CS2
- verifier tous les caractres font 5*7


- graphique : point, ligne(horiz, vert, x1-y1-x2-y2), rectangle, cercle (plein-vide)
	*horiz(y1, y2)
	*vert(x1, x2)  
	*cercle (175 octets avec sin+cos)
	dot/fill
- baragraph horizontal/vertical
	vertical
	// putdata()...  pas de plot!!
    _____
    |   |       
    |   |
    |###|
    |###|
    |___|

*- mode voltmtre entres ana + Vsupply

- gif anim (4-8 bmp)
 8 bmp 32pix*32pix = 1024 octets (8192pix) 
 MODIFIER bmp2i2c pour stocker les 32 images
 sablier ...
 
 
*- DS1267 ajust potar : *** chercher gain min ,gain max / cha/chb
	gain = 470/1000 * [0.004-255]
	1/255 = 0.00392  ;  255/1 = 255
	PB datasheet poids faible/poids fort
	
	
	Vdac = 1.25 + Vin*470/100 * [0.004-255]
	Vdac min = 0V, Vdac max(ref) = 2.5V
	gain = 0.004 : Vin max = 1.25/(0.47*0.004) = 664 V ??? 5V avec diode input (saturation 1er AOP) -> sonde 1/10 -> Vin max = 5V
				 
	gain = 255   : Vin max = 1.25/(0.47*255) = 10.4 mV 


	Vdac = 1.25 + Vin*0.47*n/(255-n)		(n position du potar)
	Vdac = 2.5*DAC/255
	-> DAC = (1.25+Vin*0.47*n/(255-n))*255/2.5		// Vin/2
		DAC = 127.5+Vin*47.94*n/(255-n)					// Vin/2 --> 127.5+Vin*23.97*n/(255-n)
		


- MAX114 aqcuisition : 8bits (256pos) -> 64pos(6bits)
                              +/-8       +/-2
 trigger
- MOYENNAGE entree ana avec CH3+CH4 (copie de CH1 ou CH2 dans CH3+CH4) X=X+(Xnew-X)/8

- 74ls543 : entres log + clk : test avec 4060 + 32.768 khz ou 4017
 
- fonction relais AC/DC 
 
- optimisation taille code (.lst)
	fct graph + tempos (% /) 
	
	
	
- ACQUISITION + AFFICHAGE
	*acquisiton dans tab[80] -> difficile  si Time/Div<
	
	*affichage de tab[80] en mode dot ..  -> facile

- sauvegarde d'ecran scope
+ transfert rs232



- QUARTZ 24MHz :
	Tcyc=1/(24E6/4)
	
	Si on prend 20 cycles pour l'acquisition : Tacq = 3.33s soit 300KHz!!!

	Scope burst pour T/div < xx ms
	80 points * 2 canaux * 3.33s = 532s

	(80 points * 2 canaux + 40 points * 2 canaux) * yy ms = 200ms
	240/200 = 1.2 ms/point soit 12ms / div max
	
	> mode ISR timer1
	
	
	gammes : 12us/div(1 ch)  20us 50us/div  100us/div 200us/div 500us/div 1ms/div		: burst (->20ms/div=200ms)
				2ms/div 5ms/div 10ms/div  20ms/div || 50ms/div  100ms/div 200ms/div		: isr
				500ms/div 1s/div 2s/div 5s/div 10s/div 20s 50s 100s 200s 500s				: isr
				
	
	fct acq33 burst
	fct acq66 burst
	
	fct acq100 10000 : avec tempo
	
	20ms  500s ISR
	
	UTILISER INDF FSR IRP pour pointer sur le tableau
	set canal
	IRP = 0; 			// bank 0/1
	FSR = 
	acq33:
	read MAX114
	sctock MAX114
	decfss cpt
	goto acq33
	
	TRIGGER front montant / descendant  AUTO(moyenne echantillons) /normal
	
	timer pour timeout scan log8bits
	
	
	
0	A ac			BP3	
1	100mV			BP1-2	
2	B dc			BP6
3	 10V			BP4-5	
4	Time/				
5	 12s			BP7-8	
6	Trig				
7	Auto			BP*

# menu   0 capture-> eeprom

_________________________
* : scope         <-
0 : analyseur logique
1 : trigger level (level front canal, timeout, auto, manuel)
2 : calibrage ana. (offset, gain mV V, ana12V, valeur moyenne, average)
3 : sonde x1 x10 (canal A,B,C,D)
4 : mode x,y
5 : 
6 : 
7 : ana log8 (front, timeout periode...)
8 : acdsee bitmap + nsauvegarde
9 : sauve parametres
# : menu suivant  ->
_________________________

tabGain[]={0, 12, 52, xx, ..., 255}
Gnd : ds1267 = 0

tabStrGain[]={" 50m",
				"100m","200m","500m"... 5V");
prevoir sonde x1 x10

tabStrTime[]={" 12"," 29"," 50",
				"100","200","500",
				"1m","2m","5m",
				"10m","20m","50m",
				"100m","200m","500m",
				"1","2","5",
				"10","20","50",
				"100","200","500"}; 	// 23 gammes*4octets = 92 octets
// temps / ech
					1.5s, 3.625s, 6.25s,	
					12.5s, 25s, 62.5s,
					125s, 250s, 625s,
					1.25ms,2.5ms

				
- Fonction efface grille :
	y = 13  63
	
	puis y = 64  91
	
	
	
- Temporisation 50us  20ms / div -> 500us  200ms echant sout 1ms  400ms sur 2CH
8 point par division
-> tempo 6.25us  2500us
24MHz -> 0.1667us / cycle
6.25us -> 37.5 cycles
2500us -> 15000 cycles
// timer 0/1??

debut:
acq CH1
acq CH2
stockage
tempo (x us)
goto debut




*fonction efface Grille
*fct moyenne CHA CHB ...
*	somme / 80
trigger up/down auto/norm coup/coup 0,1,2,3,4

*transfert PC touche "0" mode scope

modeXY : param base de temps, persistance : 100ms, 1s, 10s, 100s, OFF avec TMR0 / 1

retard aprs trigger pour signaux logiques... (offset X +/-)

symboles Tek : Run Stop Auto UP  down \/

offset courbe (decalage ref)

couper main pour diminuer taille bloc max


?acquisition sur 96 ech (cf pb ICD resRAM :0x70, 0xF0, 0x170, 0x18E-0x18F, 0x1EB-0x1F0)

*Bitmaps menu icones

-----------------------
///// MENU PRINC //////
 ====== ====== ====== 
 =    = =    = =    =
 ====== ====== ======
 ====== ====== ====== 
 =    = =    = =    =
 ====== ====== ======
----------------------
 
 
clavier _|\|	mettre toutes le diodes  "1"(RD0-RD3) ; tester les 3 entres (RD4-RD6)
         |/|	
         
         
soft Vb pour capture scope
download bitmap ; data scope 
printer rs232
         
         
TAILLE CODE : utiliser SWITCH : INEFICACE!!!!
effacer Sin Cos Cercle

ASC2HEXA pour 1 caract : fct lcd_hexa et tx232_hexa
nbRefresh -> corriger pour val 0 1 2
	0 -> infini
	1 -> effacement permanent
	2 -> 1 acquisition

CHA/B/C/D AC/DC/GND/OFF + OFFSET
50ms/div  500s/div	:  6.25ms/div  62.5s/div (8points par div)
	Tcyc = 4/24e6 = 0.166us
	TMR1 : presc 8 : 1.33us
	65535 * -> 0.0874s /ech
	65536*256 = 16777216 -> 22.37s /ech
	
long 32 bits
50
100
200
500
1000
2000
5000
10000
20000
50000
100000
ms/div

EDB0
DB61
B6C2
48E5
FE91CA
FD2394
F8D8F2
F1B1E4
E363C8
B87974
70F2E8

/////Timer1 prescaler??
*extern lcd_x, lcd_y...
affichage pts sur ISR !!!
sauvegarde param en EEPROM
AC/DC/GND/OFF + offset?
commuter canal trig

mode monocoup Start/Stop (rond/carr) sur touche 0

*bloquer GIE pendant ecriture sur BUS	--> OK pour LCD + clavier

CAN_A0+A1 avec CS1+CS2 :
PB taille Stack : verif debordement!! (1 pour ISR + 1 pour ICD)

Commande via RS232 + transmission -> Visual Basic
	*protocole 0x04 (ctrl^D) start, 0x1B (Esc) stop
	*modifier clavier si RCIF
	
	
	*Clavier virtuel RS232 115kbds, no parity, 1 stop
	Ecrire Time/div + Gain CHa+CHb sur bitmap
	1 -> '1'
	9 -> '9'
	: -> '0'
	; -> '*'
	< -> '#'
	*Faire Facade virtuelle en VB avec emission touches ASCII
	
	
DEPLACER VARIABLES MAIN EN GLOBAL pour diminuer param fct (/!\ pb bank dans les fct)
/!\ TAILLE MAIN limit  1Ko
--- Echantillonage sur 96 points ??? au lieu de 80


Transfert BitmapLCD -> PC
Transfert _i2c <-> PC

Analyseur log8 : 96 * (8 bits)
			ou      (96*8) bits
		Echantillonage frequence pour synchro signal (recherche etat haut ou bas minimum)


>=50ms/div
	affichage point  point dans main;
	pb main while clavier()...
	Tester clavier avec diodes...
	Et bloquer main avec Tempo ou autre
	
	Bit interruption Perso pour tmr1h2
	
Couper lcd_ch_ab (faire une fct avec la boucle)

---------------------25/04/03------------------------
		*0)		Verifier STACK -> (lcd_busy MACRO ? , ...)
		*1)		BUG passage 20ms-50ms 50ms-20ms 20ms-50ms (blocage compteur ech
		*1-1)	bug 1er affichage si mode >=50ms/div (qd rentre mode scope)
		*1-11)	bug chg gamme (V/div) pas pris en compte
>>>1-2)	persistance timer0 ?? >=50ms/div		OU effaage 1 colonne + redess 1colonne
		*2)		-|>|-  diodes clavier : test 4 voies plus rapide
		*3)		lcd_ch_ab ->  faire une fct avec la boucle POUR affichage mode 50ms/div  100s/div
		*4)		remplacer ligne "Trig Auto>" par "Ech. xxx" si >=50ms/div
		*5)		Run/Stop (avec Bp0)
		*	Bloquer GIE si TimeB>10
		*	ou Raz TMR0 :	 tmr0H = refresh
>>>6)		AC/DC/Gnd/OFF
		*7)		clavier() -> retirer  "&&(touche<='<'))" pour ajouter des fct RS232
>>>8)		Debug rx232

>I) baragraphe pour Datalog menu scope 5 + 6
>II) datalog 8    96 * (8 bits) ou  (96*8) bits ou Echantillonage frequence pour 
>synchro signal (recherche etat haut ou bas minimum)
>Echantillonage sur base de temps


--------------26/04/03----------
	*1) bug affichage dot >=50ms/div (Affichage double avec offset)


STACK MAP
     0   1   2   3   4   5   6   7   8
   *cf lcd_grille()=>lcd_rect...
   *cf lcd_uchar()
   +lcd_busy => MACRO ?
     

	+pb REENTRANT : 2bits pour ISR!!!

	*SAUVERGARDER ptr FSR pour acq_ech!!!

	*bug >=500ms/div (blocage!!)

>compter le nombre d'empillement des fcts graphiques
*mode XY >=50ms/div
>18F452!!!+HTPIC18

>variables : persistant(stock cote  cote) -> EEPROM 
	(cf FAQ HT-PICC : 39. Saving variables to EEPROM as a block)

--- 30/04/03
		*BootLoader : cf www.microchipc.com/PIC16bootload + /Hi-Tech_C_multitask.htm
		*Test sonde x10 (impedance 1M en // input)
			*sonde 9M ok pour TimeB>=20ms/div -> tester  33us/div
			*Clavier Diode -|>|- *4 dans ana_trig
				"Total ROM used     5700 words (69.6%)   19ROM por ce test
				"Total RAM used      315 bytes (85.6%)
			*AJOUTER test RCIF !!
			*Mode XY >=50ms/div
>Aide avec Bitmap

>VB chargement bitmap (download afficheur + cf LcdHitachiVB)
	VB sauvegarde fichier log valeurs

>inverser boucle de lcd_ch_dotXY(void)


>parametres global pour viter passage param Main



Bitmap BOOTLOADER !!! 128x64 avec Press # cligno	=> 2 bitmaps !!!
Curseur 'A' 'B' pour timediv>=50ms/div

Bug Offset si timeB>=50ms/div