Hej igen!
Nu har jag haft tid att testa lite algoritmer som ska behandla datan från adcn.
Jag beslöt mig för att använda en PIC18F452 istället för megaåttan då den (eller iaf i crownhill basic) kan behandla FLOATtal.
Det visade sig att (efter timmar och åter timmar av debuggande) man måste använda FLOAT för att
få "riktiga" svar, när man använder WORD får man bara rappakalja..
Klockar man upp 452an i 40MHz går det så fort att man utan problem kan lägga till lite finesser i framtiden.
Nu tar det <15ms för att skriva dB talet och rita en bar.
Men, om någon kan skriva om följande till ASM för en atmega8 skulle jag bli jätte glad!
(jag har utelämnat koden för baren och alla declare m,m)
Kod: Markera allt
DIM ADCVAL AS WORD
DIM TEMP1 AS WORD
DIM TEMP2 AS FLOAT
DIM TEMP3 AS FLOAT
DIM VOLTS AS FLOAT
DIM SUM AS FLOAT
Main:
ADCVAL = ADCIN 0
TEMP1 = 489 *(ADCVAL / 10)
VOLTS = TEMP1 / 10000
TEMP3 = VOLTS / 1000
TEMP2 = TEMP3 * (100/0.000002)
SUM = 20 * LOG10 TEMP2
Detta verkar funka, men jag är öppen för förslag och knep för att göra det effektivare.
När inspänningen är 2Vdc på adcn (vilket motsvarar ett tryck på 2Pa och 20 mV ut från micken (peak sum*1.41))
står det 100.00dB (lagrat i variabeln SUM)
Går detta att få in i en ATmega?
Isf hur?
Och hur programerar man en 18f452?
Jag har en gamal ISP-PRO och den stödjer den (står d iaf).
/Hampus
EDIT: Av någon anledning (troligtvis kaffe) vart d två inlägg av ett, sorry..
