oscilloscopio e pic

11 Anni 10 Mesi fa #1 da aduri
oscilloscopio e pic è stato creato da aduri
Salve a tutti,
nelle ferie natalizie ho costruito questo oscilloscopio portatile che ha dei limiti ma per l'uso che dovrei farne mi basterebbe e penso possa essere utile a tanti.
semifluid.com/2006/08/21/pic1...scope/#more-15
Ho usato un PIC18f4550 invece di un PIC18F2550
Ho provato a caricare col mio pickit2 il file .hex dal sito (lo davano come non testato)
semifluid.com/wp-content/uplo...bootloader.hex
e questo è il codice sorgente
semifluid.com/wp-content/uplo...o-bootloader.c

Funziona ma male....
ho inviato un segnale sinusoidale e visualizza in basso solo la parte positiva (ma questo si risolve portando i 0V a metà schermo con un partitore e condensatore), inoltre il frequenzimetro e lo zero-crossing per il trigger non vanno.
Qualcuno può, cortesemente, provarlo e compilarlo col C CSS (su cui devo ancora prendere pratica) e mandarmi l'eseguibile o renderlo fruibile a tutti qui nel forum.

Ho provato anche il sw con la libreria del GLCD modificata (cambiando il collegamento dei pins) di questo sito ma mi dà lo stesso problema (andare in download e si trovano i codici)

www.smartradio.com.br/loja-pic/?id=11

Mi sembra strano che il 4550 non possa lavorare come il 2550 avendo lo stesso core???!!!


Grazie

ciao
Antonio

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • aduri
  • Avatar di aduri
  • Junior Member
  • Junior Member
Di più
11 Anni 10 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: oscilloscopio e pic
I due PIC sono praticamente identici se non per il numero dei pin.
Se funziona da una parte deve funzionare dall'altra.

Devi fare attenzione al montaggio del sistema.

Probabilmente il problema e' li'.
...assumendo che il programma funzioni e che gli altri passi per programmare siano fatti correttamente.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 10 Mesi fa #3 da aduri
Risposta da aduri al topic Re: oscilloscopio e pic
Ho controllato e ricontrollato ma niente da fare.
Ho guardato le librerie e le connessioni anche in 2 versioni differenti ma fa lo stesso difetto.
Mi sono letto il tuo libro sul PIC18 adesso proverò ad analizzare meglio il codice e spero che le mie reminescenze universitarie mi aiutino a risolvere l'arcano.
Su youtube ho visto diversi che usano questo oscilloscopio anche in versione 4550.


ciao e grazie
Antonio

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • aduri
  • Avatar di aduri
  • Junior Member
  • Junior Member
Di più
11 Anni 10 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: oscilloscopio e pic
Purtroppo gli errori sono sempre sotto il naso, e basta poco per non far funzionare l'intero sistema.

Ti consiglio di testare il sistema per parti.

Potresti per esempio usare gli esempi di Freedom Light per accertarti che PIC, USB funzionino correttamente.

Se devi fare tanto lavoro potresti anche considerare di realizzare un mini oscilloscopio da zero!

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 10 Mesi fa #5 da aduri
Risposta da aduri al topic Re: oscilloscopio e pic
Avevo già fatto qualcosa ma in mikrobasic e la banda passante era bassa e non era implementato il trigger.
Per pura curiosità allego il codice così se qualche volenteroso vuole proseguire l'opera:


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:
for X=integer(Xmin) to integer(Xmax) step 1

Y=float(Adc_Read(Channel))+ Offset

YY=short((float (GLCD_VSize)/(Ymax-Ymin))*(Ymin-Y))
XX=short((float (GLCD_HSize)/(Xmax-Xmin))*(float(X)-Xmin))
Glcd_Dot(XX,YY,1)
next X
Glcd_Fill(0)
Goto Display

end.

Migliorato il campionamento memorizzando prima i campioni in ram e visualizzandoli dopo.
La visualizzazione è sempre un disastro.
Ecco la modifica:

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

Ed infine avevo cercato di velocizzare la conversione AD della libreria di MKB con questa subroutine:

sub function ReadADC(dim Channel as Byte) as word
ADCON2 = %10001010 ' FOSC/32 , 2 TAD ,Right Justified
ADCON0 = Channel * 4
SetBit(ADCON0,ADON)
SetBit(ADCON0,GO)
while TestBit(ADCON0,GO) wend 'Wait for Conversion
Result = ADRESH * 256 + ADRESL '10 Bit Right Justified
ClearBit(ADCON0,ADON)
end sub

ciao

Antonio

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • aduri
  • Avatar di aduri
  • Junior Member
  • Junior Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login