Sida 1 av 1

Läsa av frekvens via USB - Effektivt eller kast?

Postat: 24 september 2016, 23:19:20
av Al_Bundy
Jag håller på läsa utav frekvens via MATLAB igenom USB hos en Arduino. Men problemet är att jag tycker det svajar så mycket i plotten jag plottar ut.
Koden jag har ser ut så här:

Det jag undrar är varför svajar det så mycket. Har detta med hastigheten på min dator att göra? Det kanske inte är så smart att läsa av frekvens via USB på en liten PC som jag har? Den är hyfsat seg. Jag kör ju MATLAB 2016 + Firefox på denna enkla linuxmaskin. CPU är upp på 100%. Är detta orsaken varför min plott ser ut som den gör?

Kod: Markera allt

% Clear
clear;
clc;
% Connect
arduino = arduino('/dev/ttyS101', 'Mega2560');
% Declare input and output
configurePin(arduino,'D12','DigitalInput');

% Loop
disp('run')
i = 1;
frec(i) = 0;
step(i) = 0;
while step(i) < 10
    pin12 = readDigitalPin(arduino,'D12')
    if pin12 == 1
        
        tic;
        while pin12 == 1
            pin12 = readDigitalPin(arduino,'D12');
        end
        while pin12 == 0
            pin12 = readDigitalPin(arduino,'D12');
        end
        T = toc;
        
        i = i + 1;
        
        frec(i) = 1/T;
        if(i == 1)
            step(i) = T;
        else
            step(i) = T + step(i-1);
        end
        
    end
end

plot(step, frec)

Re: Läsa av frekvens via USB - Effektivt eller kast?

Postat: 24 september 2016, 23:33:49
av gunnerfeldt
Beror på hur hög frekvens såklart.
Och, du måste göra dina samplingar med controllerns klocka. USB timingen är svajig, milt uttryckt.

Men .. tänk ett ljudkort tex. Samplar i 96khz/24 bitar två kanaler och dumpar över USB om man har tur.

Re: Läsa av frekvens via USB - Effektivt eller kast?

Postat: 25 september 2016, 00:06:15
av Al_Bundy
Jag kommer bara hålla mig runt 2-20 Hz. Men jag tycker att min plott är så dålig. Varför svajar resultatet?

Okej. Så det sätt som jag gör, använda datorn som klocka, är inte ett bra sätt?

Re: Läsa av frekvens via USB - Effektivt eller kast?

Postat: 25 september 2016, 12:24:34
av lillahuset
Rätt uppfattat.

Re: Läsa av frekvens via USB - Effektivt eller kast?

Postat: 25 september 2016, 14:17:51
av xxargs
windows och USB i synnerhet är ursla att ha som taktgivare och har varit så i alla tider.

det är bättre att USB-enheten lokalt håller i taktpinnen med egna räknare och sedan då och då dumpar datat till windows via USB i lämplig format.

Förr när man skulle ens komma i närheten av realtid i tex. samband med mätinstrument så körde man över 1394, även kallad firewire.

Re: Läsa av frekvens via USB - Effektivt eller kast?

Postat: 25 september 2016, 16:33:58
av ToPNoTCH
Din kod ser klart konstig ut.

Jag fattar inte riktigt ens hur du tror den skall producera frekvens.

Gör en extern interrupt och mät tiden mellan stigande flanker istället.