|
|||||||
| Benvenuto in Spazioaereo.it Forum. |
|
Non risulti registrato al forum oppure non ti sei loggato. Se sei nuovo ti invitiamo a leggere il regolamento del forum. È necessario registrarsi oppure eseguire il login prima di poter partecipare attivamente alla discussioni! Se hai perso la password clicca qui. Attenzione: se eri già registrato sul forum di baricentro.org, per accedere la prima volta su questo forum devi prima seguire questa procedura. |
| Elettronica Spazio dedicato alla progettazione e realizzazione di circuiti elettronici per uso modellistico o aeronautico. |
![]() |
|
|
LinkBack | Strumenti Discussione | Visualizzazione |
|
|
#1 (permalink) Top |
|
Nuovo iscritto
Data Registrazione: Aug 2008
Messaggi: 7
|
Salve a tutti,
il mio obbiettivo è ottenere un oscilloscopio che lavori anche in modalità XY. Torniamo all'argomento: ho utilizzato un PIC18F4550 con quarzo da 20MHz e GLCD 128x64 della Wintek mod. W12864A. Sono riuscito a farlo funzionare ma ha una banda passante ridicola. Ero partito da uno stralcio di codice trovato in rete per il 16F877A e quarzo da 4MHz ma era come si può immaginare ancora più lento. Ho provato a mandare un segnale sinusoidale ma dopo pochi Hz, anche modificando (per ora via sw) il 'Sweep rate factor' non ottenevo miglioramenti. Stavo pensando di bypassare la libreria dell'ADC facendone una dedicata per aumentare la velocità di campionamento ma non sò se basterà. Credo che occorra lavorare anche sul sincronismo e sulle variabili (word anzichè float). Qualche consiglio? Io ho messo un pò di codice funzionante spero che possa essere da stimolo per uno sviluppo in comune. Ho scelto questo pic perchè ha, da data sheet un campionamento più veloce rispetto all'877a e per l'USB per evoluzioni future. ciao Antonio Codice:
program oscope_4550_20mhz
'Microprocessor: 18F4550
'Xtal 20MHz no PLL
'pbaden=off
'This program is designed to make a simple oscilloscope.
'with GLCD W12864A
'Mikrobasic 7.0.2
'--------------------------------------------------------------------
symbol DDRA=TRISA
symbol DDRB=TRISB
symbol DDRC=TRISC
symbol DDRD=TRISD
symbol ControlPort=PortB
symbol DataPort=PortD
symbol Channel=0
dim
X as integer
Y, K, Sr, Offset as float
Xmin, Xmax, Ymin, Ymax as float
XX, YY as short
GLCD_VSize as byte
GLCD_HSize as byte
const 'for GLCD Wintek 128x64 W12864A
cs1=2
cs2=3
rs=4
rw=5
rst=7
en=6
sub procedure Initialize
ADCON1=0x0E 'A0 as analog input
DDRA=0x01 'ADC on A0
DDRB=0x00
DDRC=0x00
DDRD=0x00
glcd_Init(ControlPort,cs1,cs2,rs,rw,rst,en,DataPort)
Glcd_Fill(0) 'Clear display
end sub
main:
Initialize
'User defined
'----------------------
GLCD_VSize=63
GLCD_HSize=127
Sr=1 'Sweep rate factor
Xmin=0.0
Ymin=0.0
K=10.0 'ADC bits
'----------------------
Xmax=float(GLCD_HSize)*Sr
Offset=float (GLCD_VSize)/2.0 'Bottom of GLCD = 0V
Ymax=pow (2.0, K)-1.0 'Top of GLCD = 5V
Display:
Display:
'carico in ram
for X=integer(Xmin) to integer(Xmax) step 1
Y=float(Adc_Read(Channel))+ Offset
YY=short((float (GLCD_VSize)/(Ymax-Ymin))*(Ymin-Y))
YP[x]=YY
XX=short((float (GLCD_HSize)/(Xmax-Xmin))*(float(X)-Xmin))
XP[x]=XX
next X
'visualizzo su glcd
for X=integer(Xmin) to integer(Xmax) step 1
Glcd_Dot(XP[x],YP[x],1)
next X
Glcd_Fill(0)
Goto Display
end.
|
|
|
|
![]() |
| Strumenti Discussione | |
| Visualizzazione | |
|
|
Discussioni Simili
|
||||
| Discussione | Autore Discussione | Forum | Risposte | Ultimo Messaggio |
| Un oscilloscopio gratuito con la scheda audio | lombafly | Impianti elettronici e meccanici | 9 | 03-03-2010 19:08 |