ho un microcontrollore PIC16F690 che è collegato a 8 convertitori A/D(12 bit di risoluzionie e 2 canali ognuno),dovrei interfacciarlo a matlab.
Questo PIC è connesso ad una porta com e funziona così:
-devo inviare un carattere di sincronismo 's' per aspettare i numero di canali
-inviare il carattere 'a' per inizio trasmissione
-inviare il carattere 'b' di fine trasmissione
il seguente codice è scritto in c ed è quello del PIC(metto solo per il primo canale):
Codice: Seleziona tutto
while(1){
//Inizializzo le variabili
c=0;
canali=0;
d=0;
//Attendo il carattere di sincronismo
while(d!='s'){
if(kbhit()){
d=fgetc(PC);
}
}
//Attendo il numero di canali da cui acquisire
while(canali==0){
if(kbhit()){
canali=fgetc(PC);
}
}
num_canali=canali-48; //48 è il codice ascii di 0
//Attendo il carattere di start (inizio acquisizione)
while(c!='a'){
if(kbhit()){
c=fgetc(PC);
}
}
//Inizio l'acquisizione
while(c!='b'){
for(i=0;i<num_canali;i++){
switch(i){
//Acquisisco dal primo canale
case 0:
set_adc_channel(5);
delay_us(10);
value=read_adc();
delay_us(30);
low=value;
high=value>>8;
fputc(low,PC);
fputc(high,PC);
break;
case 1: ...........
come notate invia prima il bit meno significativo e poi quello più significativo.
il codice invece implementato in matlab è il seguente:
Codice: Seleziona tutto
rs232='COM3';
s=serial(rs232,'BaudRate',19200,'DataBits',8,'StopBits',1);
fopen(s);
pause(2);
fwrite(s,'s');
pause(1);
fwrite(s,1);
pause(1);
fwrite(s,'a');
i=1;
j=1;
k=1;
while i<10
vett=fread(s,s.BytesAvailable,'uint8');
pause(2);
while j<lenght(vett)
low(k)=vett(j);
j=j+1;
high(k)=vett(j);
k=k+1;
end
i=i+1
end
fwrite(s,'b');
fclose(s);
z=1;
vbe=0.0048875855327468230694037145650049; //risoluzione(5/(2^12))
while z<length(high)
% Quanto di un campione del primo canale
quanto1=high(z)*256+low(z);
signal1(z)=vbe*double(quanto1);
%Incremento variabile di conteggio
z=z+1;
end
plot(signal1,'*b'), title('Primo canale')
Ma non funzione bene..
cosa sbaglio??
grazie mille

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)