Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Programy Bascom pomys造 i rozwi您ania.

bartods 09 Mar 2006 18:17 25495 86
Computer Controls
  • #31
    adamusx
    Level 27  
    Reszte rozumem, ale do konca nie skumalem tego fragmentu z dzieleniem przez 32.

    hunterhouse wrote:
    Beta = I * K
    Beta = Beta And 31 // dlaczego Beta And 31 ???

    - to jest obliczenie k徠a (i*k)
    and 31 to zamiana na k徠 z przedzia逝 do 0 do 2pi.
    bo w moim programie s 32 prubki numerowana od 0 do 31 czyli k徠 te jest od 0 do 31. 31 to po prostu k徠 360st czyli 2pi.
    AND dzia豉 na bitach czyli m tym przypadku daje nam reszte z dzielenia przez 32.
    j.


    Beta przyjmuje wartosci od 0 do 15*31= 465 tak?
    powiedzmy ze Beta = 12 , po operacji:
    Beta = 12 And 31 ( bitowo 1100 And 11111) co da wynik 1100 czyli nadal 12, dla kazdej liczby mnieszej od 31 wykonanie tej operacji da nam to sama liczbe, dla liczb wiekszych od 31 wynikiem bedzie cos innego ( np Beta= 34 And 31 = 100010 And 11111 = 000010 czyli 2 . Nie bardzo mi sie to wszystko zgadza :/


    A tak wog鏊e to obliczasz 16 punktowa DFT dla 32 pr鏏ek, dla gornego i dolnego pasma ?

    Jeszcze jedna rzecz mi nie pasuje. Beta osiagnie maks wartosc 465 , po podzieleniu przez 32 = 15 ,czyli maks wartosc jaka mozemy wyciaganc z tablicy sinus:
    Tmp_c = sinus(15 + 8) * Dane[i] ,czyli
    sinus(23). Wiec dlaczego zdefiniowales tablice sinus na 32 elementy i dodatkowo jeszcze 8 kolejnych:

    Sinus(33) = Lookup(0 , Tab_sin)
    Sinus(34) = Lookup(1 , Tab_sin)
    Sinus(35) = Lookup(2 , Tab_sin)
    Sinus(36) = Lookup(3 , Tab_sin)
    Sinus(37) = Lookup(4 , Tab_sin)
    Sinus(38) = Lookup(5 , Tab_sin)
    Sinus(39) = Lookup(6 , Tab_sin)
    Sinus(40) = Lookup(7 , Tab_sin)

    ????
  • Computer Controls
  • #32
    hunterhouse
    Level 26  
    bez karty katalogowej to nic nie zrobisz. to jest naprawde niezb璠ne.
    a tak wog鏊e to ja bym sobie odpu軼i ten LCD bo AVR i tak bo dobrze nie obs逝篡.
  • #34
    hunterhouse
    Level 26  
    beta to k徠

    0
    ReX[i] = k= ∑ (x[k] * cos(2*pi*k*i / N))
    N-1

    to jest wr鏎 na Rex
    i co w nim najwa積iejsze 2*pi/N jest sta貫 i mo積a tak przygotowa tablice sinus闚 i cosinus闚 aby dane te nie by造 potrzebne. wtedy k徠 to tylko I*K i mamy duzo mniej do liczenia a wynik mamy ten sam

    teraz tak po wsztskich obiczeniach wysz這 mi 瞠 potrzebuje 32 warto軼i sinus闚 i 32 warto軼i cosinus闚 do obliczania bo mam 32 prubki

    czyli 360st musze podzieli na 32 r闚ne cz瘰ci i dla tych warto軼i musz pami皻a warto軼i funkcji trygonometrycznych
    z tego wychodzi 輳 w mojej skali k徠 pe貫n (360st) to 32 jednostki
    a ze sinus jest funkcja okresow powta瘸jac sie co 360st (32 jednostki) to mog k徠 przelicz御 na k徠 z zakresu 0st-360st (0-32 jednostki)
    do tego s逝篡 w豉郾ie ten AND 31.
    liczby 0-32 to k徠 0 do 360st.
    liczby 32-63 to k徠 360 do 720st

    czyli liczba 32 to 360st
    sinus(360st)= sin(0st)
    i tak samo
    sin(0)=sin(32)
    ale 瞠by nietrzeba by這 pami皻ac takiej duzej tablicy to mog tylko pamieta o 0 do 31 i potem sobie przelicz望 k徠 na taki jaki mam w tablicy
    xxx AND 31 czyli xxxxxxxx and 00011111 czyli dzia豉 to tak jak xxx mod 31
    tak samo sie przelicza k徠y w stopniach
    xxx mod 360 czyli reszta z dzielenia przez 360

    teraz dalej cos(x)=sin(x+90) tak mnie na matmie uczyli bo cosinus wyglada tak samo jak sinus tylko jest przesuniety o kat 90st
    tak samo ja licze cosinuja biore wato嗆 sinusa szukanego kata + 90st
    a ze w programie k徠 pe貫n to 32 to k徠 90st to 8

    teraz tak DFT i FFT tak dzia豉j 瞠 jak dasz im 32 prubki to ona ci wy簑ci 2x16 wynik闚 z tym 瞠 jedne s na osi rzeczywistej a drugie na urojonej.
    niema jak liczby zespolone :P

    tak liczy貫m 2xDFT dla 2 cz瘰totliwo軼i prubkowania. a to dlatego 瞠 dft ma liniow skale cz瘰totliwo軼i
    czyli jak pasmo sprubkowa bym z f=32kHz i pobra 32 prubki to podzieli bym pasmo na 16 cz窷ci przesuni皻ych co 1khz od 0 do 16kHz
    cz這wik niestety s造szy na logarytmicznej skali cz瘰totliwo軼i i 瞠by uzyska odpowiedni rozdzielczo嗆 w niskich cze鈣otliwo軼iach to musia貫m prubkow帷 z f =2kHz dla bas闚 i z f=44kHz dla reszty.

    Quote:
    Jeszcze jedna rzecz mi nie pasuje. Beta osiagnie maks wartosc 465 , po podzieleniu przez 32 = 15 ,czyli maks wartosc jaka mozemy wyciaganc z tablicy sinus:
    Tmp_c = sinus(15 + 8) * Dane[i] ,czyli
    sinus(23). Wiec dlaczego zdefiniowales tablice sinus na 32 elementy i dodatkowo jeszcze 8 kolejnych:

    tojuz chyba wyja郾i貫m ale moge napisac jeszzce raz
    beta AND 31 daje jako wynik reszte z dzielenia przez 32 czyli liczby z zakresu od 0 do 31. powta瘸ja ci cylkicznie bo sin te jest cylkiczny

    a +8 (w sumie +9 ale to przez bascoma kt鏎y dziwnie adresuje tablice) to zamiana cos na sinusa.
    poto te pobieram kolejne 8 warto軼 do tablicy sinus闚 瞠by warto嗆 cosinus闚 mog豉 by poprawnie pobrana.

    jak by jeszcze czegos nie wiedzi陰 to pisz.
    pozdrawiam

    ADD
    co do wy鈍ietlania to ja bym naprawde propnowa led'y sa du穎 lepiej widoczne i tansze.
    np http://www.tme.pl/arts2/pl/opto/opto152.html przy 20 sztukach wychodzi 2PLN + vat czyli za 60PLN (ju z przesy趾) masz 10s逝pk闚 po 20 diodek.
    m鎩 program obs逝guje coprawda tylko 16 diodek ale 1 膨dek mo瞠sz zapali na sta貫 a 3 ostatnie zostawi niepod豉czone.

    jak by kupi diody luzem to wyjdze jeszcze taniej tylko ca造 dzien lutowania :P
  • #36
    hunterhouse
    Level 26  
    to daj 2x16 alfanumeryczny do przedwzmacniacza i ledy do DFT.

    na LCD to b璠zie wida tylko z bliska i naprawde nieda efektu
    ja juz 3 przedwmacniacze zrobi貫m 2 z lcd i ci powiem 瞠 menu zabardzo komplikuje sprawe

    teraz ostatni co zrobi貫m wy鈍ietlanie te mam na ledach i jest duz wygodniejsze w u篡ciu
  • Computer Controls
  • #37
    adamusx
    Level 27  
    Hunterhouse ten spos鏏 z liczeniem liczby modulo jest genialy :) Sam na to wpadles??
    Na koncu jest jeszcze obliczany pierwiastek,tez to jest dosc czasochlonne dla procka , zastanawiam sie czy na niego nie ma podobnego sposobu :)

    Czyli beta przyjmuje wartosci od 0- 31, i zmienia sie w zaleznosci od k ,ale caly czas w zakresie 0-31 .

    Jak dokladnie obliczone sa sinusy w tebeli sinusow , kombinowalem ale nie chcialy my wyjsc takie wartosci:
    int16_t sinus[40]={0,50,98,142,181,213,237,251.... };
    Zgodnie ze wzorem na transformate i tak jak mowisz ze te katy sa stale i wynosza : 2*pi/N * (0..31) . To ze pierwsza wartosc =0 to logiczne :)
    Ale skad potem np 50??... licze 2*3,14/32*1 .... nie chce mi wyjsc :)


    Kwestia ldzielenia przez 256:. Tmp_s to liczba 16 bitowa ze znakiem?
    Tmp_s = High(tmp_s) wykonuje operacje >>8
    If Tmp_s.7 = 1 Then 'gdy ujemne uzupe軟ia 2 bajt
    Tmp_s = Tmp_s Or &HFF00
    Incr Tmp_s
    End If

    Z tego co zrozumialem- Tmp ma wartosci od -32768 do 32768
    Zapis binarny zxxxxxxxxxxxxxxx , gdzie z oznacza znak ,jesli 1 to liczba jest ujemna

    Tmp_s = High(tmp_s) -> zxxxxxxx
    If Tmp_s.7 = 1 Then -> jesli z =1 to mamy
    Tmp_s = Tmp_s Or &HFF00 - > xxxxxxxx zxxxxxxx ????
    Incr Tmp_s -> ???????????????

    Jesli liczba jest dodatnia wykonujemy tylko zwykle przesuniecie bitowe o 8 czyli dzielimy nasza liczbe przez 256 to kumam. Ale jesli liczba jest ujemna ??

    Tmp_s = High(tmp_s) -> zxxxxxxx
    If Tmp_s.7 = 1 Then -> jesli z =1 to mamy
    Tmp_s = Tmp_s Or &HFF00 - > xxxxxxxx zxxxxxxx ????
    Incr Tmp_s -> ???????????????

    otrzymujemy liczbe 16 bitowa :/


    Czy w programie pojawiaja sie gdzies obliczenia zmiennoprzecinkowe ??
  • #38
    hunterhouse
    Level 26  
    adamusx wrote:
    Ale skad potem np 50??... licze 2*3,14/32*1 .... nie chce mi wyjsc

    sin((360/32)*1)*256=49,8xxx czyli oko這 50
    sin((360/32)*2)*256=97,9xxx czyli oko這 98
    ..........
    i tak dalej

    co do pierwiastka to faktycznie troche mu to zajmuje (oko這 600 instrukcji) ale w sumie jest to robione jakie 64 razy na od鈍ie瞠nie i w skali glogalnej nie zabiera a tak duzo zasob闚.

    Quote:
    Czyli beta przyjmuje wartosci od 0- 31, i zmienia sie w zaleznosci od k ,ale caly czas w zakresie 0-31 .

    dok豉dnie tylko w zale積o熵 ok K i I

    co do dzieleniea to wiem 瞠 to dziwnie wyglada ale dzia豉 bo testowa貫m to na r騜nych liczbach nawet taka p皻le zrobi貫m co liczy豉 normalnie i moim sposobem i porunwnywa貫 wyniki

    to chba przez to 瞠 bascom u篡wa do zapisu liczb ujemnych kodu U1 czyli
    1 to 000000000000001
    0 to 000000000000000
    -1 to 1111111111111111
    -2 to 1111111111111110
    -3 to 1111111111111101
    -4 to 1111111111111100
    itp ..............................
    jak robisz w c albo asm to zrub tu poprostu przesunuiece arytmetyczne albo jaki inny knyf na podzielenie przez 265

    teraz tak co do tego modulo to ju nie pami皻am jak to by這 dok豉dnie ale jak by przeczyta ca造 temat ja to robi貫m to tam wszystko jest

    liczba zmienno przecinkowa chba jest ale to dopieor na koncu .
    tak znalaz貫m jak licze wysoko嗆 s逝pka to u篡wam logarytmu a on dzia豉 tylko na zmiennym przecinku, ale to da這 by sie stablicowa albo jako inaczej omin望.
  • #39
    adamusx
    Level 27  
    heh faktycznie ,ze tez nie pomyslalem ze nie 2*Pi tylko 360 :)

    Przenosze ten kod do C i mam male problemy z ujemnymi liczbami.

    Dane[k] = Sample[k] - Poziom; Wychodzi mi ze Dane[k] przyjmuja tez ujemne wartosci, moze tak byc ? z tym ze np dla -1 mam FFFF , dla -2 FFFE , dla -3 FFFD.. i tu wlasnie mam maly problem ..GCC cos kaszani z ujemnymi.
  • #40
    hunterhouse
    Level 26  
    dane(k) - to dane wejsciowe dla DFT i one musza by ze znakiem
    Sample(k) - to dane z przetwornika ADC (8bitowe)
    Poziom - 鈔ednia z wszystkich pr鏏ek czyli poziom masy

    ja wszysstki obliczenia robi貫m na liczbach integer czyli 16 bitowe za znakiem czyli -32768 do 32768
    i to starczy這

    Quote:
    .GCC cos kaszani z ujemnymi.

    ludzie nazekaj na bascoma a on jest naserio dobry tylko trzeba umie w nim pisa. i niepozwoli 瞠by my郵a za ciebie.
    jak go si dobrze zna i umie nad nim zapanowa to jest naprawde dobry.

    w c za duzu ci nie pomog niestety

    ADD:
    te ujemne to chyba tak jak bascom kod U1 bo na nim naj豉twiej obliczenia robi
  • #41
    bartods
    Level 16  
    znalaz貫m w ko鎍u datasheet tego LCD i wiem ju kt鏎y pin to kt鏎y a opr鏂z tego ten LCD jest dzielony na 2, g鏎 i d馧.

    SHARP LM64P728

    Pin No,Pin name/signal;
    1 S (startup scan signal)
    2 CP1 (input data latch signal)
    3 CP2 (Data input latch signal)
    4 Vdd (power suply for logic and LCD +5V)
    5 Vss (GND)
    6 Vee (~-16.2V)
    7 Vss (GND)
    8 DU0 (data Upper half area)
    9 DU1
    10 DU2
    11 DU3
    12 DL0 (data lower half area)
    13 DL1
    14 DL2
    15 DL3


    Screen area;

    ____________________
    |1,1.....................1,640|
    |....Upper half area...... |
    |240,1..............240,640
    ----------------------------
    |241,1 ..............41,640|
    |....Lower half area.......|
    |480,1..............480,640|
    ----------------------------

    Czy to znaczy 瞠 osobno mo積a pod陰czy 2 uk豉dy aby jeden wy鈍iela na g鏎ze a drugi na dole :?:
  • #42
    hunterhouse
    Level 26  
    no to sterowanie ma tak jak m鎩. przynajmnie podobnie tylko 瞠 ja mia貫m tylko 4DATA a ty masz 8 data i o raz wiecej pikseli.

    teraz tak dwa procki to chba nie dasz rady bo sygna造
    1 S (startup scan signal)
    2 CP1 (input data latch signal)
    3 CP2 (Data input latch signal)
    masz wspulne dla obu cz瘰ci

    na wysoko嗆 to procek sie obrobi tylko potrzebuje sporo pamieci ale na szerokos to chyba nie
    bo m鎩 mia 320 i ledwo zipa a tu jest jeszcze raz tyle :((
    no chba zeby da這 sie pominac cz窷 ekranu ale to bez sensu.
    czyli zostaje ci przyspieszy m鎩 program choci w sumie tego juz duzo sie nieda bo jest w asm i naprawde duzo nad tym siedzia貫m.
    albo OVERCLOKING AVR. kiedy o tym czyta貫m pono 22MHz wytrzymuj na zewn皻rznym oscylatorze.

    no albo inny procesor :))

    ADD: wybaczcie moja ortografie ale kiepsko mi to idzie :D
  • #43
    adamusx
    Level 27  
    Juz sobie poradzilem z ujemnymi liczbami, GCC liczyl poprawnie tylko ja popelnilem blad.
    Co do BASCOMA od niego zaczynalem zabawe z mikrokontrolerami. Pisze sie w nim naprawde szybko i przyjemnie i faktycznie jesli potrafi sie nad nim zapanowac to jest to naprawde dobre narzedzie. Na GCC przerzucilem sie niedawo z tego wzgledu ze jest to darmowe srodowisko, poza tym jestem na etapie poszukiwania pracy i czestokrosc juz trafilem na firmy gdzie wymagali znajomosci programowania prockow w C.
  • #44
    bartods
    Level 16  
    znaczy si tak planuje aby analizator by wy鈍ietlany na mniej wi璚ej po這wie ekranu a druga po這wa to maj by informacje dotycz帷e poziomu g這郾o軼i itp...
    Do samych informacji chyba nie b璠zie potrzebna a taka moc obliczeniowa a Analizator mo瞠 by i na 1/4 ekranu.
    Lub zamiast analizatora paskowego mo瞠 oscyloskop mniej by potrzebowa. Co wdg Ciebie b璠zie lepsze :?:
    A jaki procesor by si obrobi :?: :D
  • #45
    hunterhouse
    Level 26  
    @adamusx ja umiem bascom i asm jak potrzeba to wstawiam.
    co c niemog sie przekona bo ma tak dzika sk豉dnie. i wkurza mnie 瞠 wszyscy tylko ten c i c jak by to by這 niewiem co.
    wiem 瞠 basick k豉dzie go na 這padki je郵i chodzi o operacje na stringach hehe.

    juz kilka razy prubowa貫m przej嗆 na c ale zawsze wracam na Basica.

    @bartods
    wy鈍ietlanie paskowe czy oscyloskop nie ma ruznicy to tylko reprezentacje wynik闚, a DFT (lub fft) i tak trzeba zrobi.

    co do mocy obliczeniowej uP to chodzi o to 瞠 obraz do tego wyswietlacza trzeba wys豉c 70x na sekunde
    czyli 640x480x70/8 =2688000 B musisz pobra z ramu i wys陰 do LCD. a to w豉郾ie zajmuje najwiecej czasu. du穎 no nie ????
    potrzebujesz 38400b pami璚i ram do zapisania obrazu w ramie.
    ten LCD to tylko szklany panel i prosta logika.

    ADD:
    Quote:
    A jaki procesor by si obrobi

    ARM to napewno ale to by by豉 profanacja taki wydajny chip do takich prostych rzeczy. hehe
  • #46
    adamusx
    Level 27  
    Mierzyles moze czas wykonania obliczen DFT ?? U mnie w symulatorze liczy DFT ( dla jednego pasma) w 3.5ms , nie wiem czy to dobry czas czy nie :)
  • #47
    hunterhouse
    Level 26  
    niebardzo pami皻am ale chyba wiecej.
    w sumie mam do pe軟ych cylki na sekunde czyli ca造 cyk trwa 50ms.
    na jedno pasmo wychodzi 25ms umie prubkowanie jest robione r闚nolegle z DFT (dla drugiego pasma)
    do tego dochodzi okienkowanie itp i pierwiastki i pot璕i i ten logarytm na ko鎍u.

    ale w sumie to chyba u mnie to go瞠j wyg陰da這 pewnie z 5-15ms (pomy趾a juz poprawi貫m) ale dok豉dnie nie pamietam co ile trwa這.
    a pokaz co napisa貫 ??
  • #48
    adamusx
    Level 27  
    W zasadzie wzoruje si na Twoim kodzie, skoro dziala to nie bede narazie nic modyfikowal tylko go przerzucm do C. Musze zakupic procka to wtedy potestuje to w realu :) i ewentualnie cos pozmieniam Wrzuce calosc jak skoncze.

    Co do C te mialem kilka podejsc, ale w koncu sie przerzucilem i w sumie nie narzekam. Duzym plusem jest to ze wspolpracuje z AVRstudio, gdzie mam mozliwosc dokladnego przesledzenia pracy programu, lacznie z podgladem kodu w ASM , pomiaru czasu i cykli.
    Sprawdzilem tez obliczenia pierwiastka- zajmuja 26us ( 416 cykli )

    Pytanko co do tego :

    Przelicz_high:
    Suma = Rex(2)
    If Rex(3) > Suma Then Suma = Rex(3)
    Wynik(6) = Suma


    Suma = Rex(4)
    If Rex(5) > Suma Then Suma = Rex(5)
    Wynik(7) = Suma


    Suma = Rex(6)
    If Rex(7) > Suma Then Suma = Rex(7)
    If Rex(8) > Suma Then Suma = Rex(8)
    Wynik(8) = Suma


    Suma = Rex(9)
    If Rex(10) > Suma Then Suma = Rex(10)
    If Rex(11) > Suma Then Suma = Rex(11)
    If Rex(12) > Suma Then Suma = Rex(12)
    Wynik(9) = Suma


    Suma = Rex(13)
    If Rex(14) > Suma Then Suma = Rex(14)
    If Rex(15) > Suma Then Suma = Rex(15)
    If Rex(16) > Suma Then Suma = Rex(16)
    Wynik(10) = Suma


    Return


    Co to za czary mary tam si dzieja :) ?
  • #49
    hunterhouse
    Level 26  
    Quote:
    Co to za czary mary tam si dzieja

    hehe prawdziwe czary.
    najpierw troche teori: sygna wy軼iewy z DFT ma liniow skale cz瘰totliwo軼i. cz這wiekowi lepiej poda logarytmiczna bo jemu lepiej to odpowiada.
    czyli mamy z pojedy鎍zej transformaty 16 pr您k闚 i musimy to zapis望 na 5 s逝pkach (tak by這 w moim przypadku) i do tego rozplanowa logarytmicznie.
    czyli na 1 s逝pak idzie 2 i 3 wynik transformaty
    (pierwszy odrzucamy bo jego wynikiem jest sk豉dowa sta豉 i bardzo niskie cz瘰totliwo軼i)
    na 2 s逝pak idzie sygna z 4 i 5 dft
    na 3 s逝pek idzie wynik z 6,7,8 dft
    itd..........................

    teraz tak nale篡 te s逝pki jako z陰czy獞 jeden wynik.
    najpierw my郵a貫m o 鈔edniej ale ona mia豉 powa積y minus im wi璚je sk豉dowych na jeden s逝pek tym s逝pek ten stawa sie bardziej statyczny i mulasty, reagowa豚ardzo powoli i by raczej w okolicy po這wy skali.

    wiec wymy郵i貫m sobie ze do wynik闚 b璠e pobiera zawsze najwi瘯szy wynik z danego zekresu i to w陰郾ie jest to
    Code:
    Suma = Rex(13) 
    
    If Rex(14) > Suma Then Suma = Rex(14)
    If Rex(15) > Suma Then Suma = Rex(15)
    If Rex(16) > Suma Then Suma = Rex(16)
    Wynik(10) = Suma

    sprawdza kt鏎e jest najwi瘯sze i ten wynik zapisuje
    nierobi貫 tego w p皻li bo by豉 ona skomplikowana i dzia豉豉 wolniej a pami璚i na program jeszcze mia貫m troche wolnej i postanowi貫m jej nie oszcz璠za.

    bascom te ma symulatro kt鏎y poka簑je ilo嗆 cylki, symuluje timery itp, jedyne czego niema to podgl康u asm.
    w sumie to jest najwi瘯sza wada bascoma 瞠 nie wy簑ca kodu po鈔edniego w asm. mo積a by wtedy jeszcze wiele 瞠czy poprawi albo przyspieszy. :((
  • #50
    adamusx
    Level 27  
    Juz rozumiem:)

    A jeszcze sama koncowka czyli obliczanie wartosci wyswietlanej na ledach :

    Save:
    For K = 1 To 10
    Sing = Wynik(k) * 0.02

    'do poprawy liniowa軼i widma (analogowe filty co inaczej chodz ni mia造)
    'If K > 5 Then Sing = Sing * 1.25 // dobierales tu wzmocnienie ?

    Sing = Sing / 0.775
    Sing = Log10(sing)
    Sing = 20 * Sing // tu tez widze jakies przeskalowanko
    Tmp_c = Sing + 6

    If Tmp_c < 0 Then Tmp_c = 0
    If Tmp_c > 15 Then Tmp_c = 15


    // ta czesc jest dosyc zakrecona :)
    Wynik(k) = Tmp_c

    If Wynik(k) >= Wynik_o(k) Then
    Wynik_o(k) = Wynik(k)
    Else
    Wynik_o(k) = Wynik_o(k) - 1
    End If

    If Peks(k) < Wynik_o(k) Then
    Peks(k) = Wynik_o(k)
    Peks_o(k) = 5
    Else
    Decr Peks_o(k)
    If Peks_o(k) = 0 Then
    Peks_o(k) = 5
    If Peks(k) > 0 Then Decr Peks(k)
    End If
    End If

    // tu rozumiem ze w zaleznosc od konfiguracji( stanow pinow 3 i 4 ) mozna wybrac efekt samo peak , samo widmo albo i to i to tak ?

    Wynik_c(k) = 0
    Wynik_d(k) = 0
    If Pina.3 = 0 Then Wynik_c(k) = Lookup(wynik_o(k) , Portc_out)
    If Pina.3 = 0 Then Wynik_d(k) = Lookup(wynik_o(k) , Portd_out)

    I = Lookup(peks(k) , Peks_c)
    Beta = Lookup(peks(k) , Peks_d)
    If Pina.4 = 0 Then Wynik_c(k) = Wynik_c(k) Or I
    If Pina.4 = 0 Then Wynik_d(k) = Wynik_d(k) Or Beta


    Tylko troche sie pogubilem w samym sposobie wyswietlania
  • #51
    hunterhouse
    Level 26  
    If K > 5 Then Sing = Sing * 1.25 - filtr g鏎no przepustowy (analogowy) co zamocno t逝mi i musia貫m to wzmocni programowo bo p造tka by豉 juz do嗆 mocno pogmatwanai nieby這 miej軼a na przerubk.
    poprostu wzmacnia g鏎n transformate.


    Sing = Sing / 0.775 -to niepami皻am po co pewnie 瞠by mi si ni przesterowa

    Sing = Log10(sing)
    Sing = 20 * Sing - to jest wz鏎 na moc sygna逝 w decybelach
    x(w jednostach dB)= 20 * log( y(w Woltach) )

    Tmp_c = Sing + 6 -to po to bo logarytm wychodzi na minusie i 瞠by sz這 to normalnie obrabia to przesuwam o 6 do g鏎y



    Code:
    Wynik(k) = Tmp_c 
    

    If Wynik(k) >= Wynik_o(k) Then
    Wynik_o(k) = Wynik(k)
    Else
    Wynik_o(k) = Wynik_o(k) - 1
    End If

    If Peks(k) < Wynik_o(k) Then
    Peks(k) = Wynik_o(k)
    Peks_o(k) = 5
    Else
    Decr Peks_o(k)
    If Peks_o(k) = 0 Then
    Peks_o(k) = 5
    If Peks(k) > 0 Then Decr Peks(k)
    End If
    End If


    to jest odpowiedzialne za powolne opadanie s逝pk闚, s逝pek skacze do g鏎y bardzo sybko a opada powoli.

    peaks opada jeszcze wolniej
    wynik(k) - to wynik do wy鈍ietlenia aktualnie juz przeliczony na ilo嗆 diodek
    wynik_o(k) - to wynik z poprzedniego obliczenia i warto嗆 diodek do wy鈍ietlania

    teraz co do wy鈍ietlania. zmienne :
    Wynik_c(k)
    Wynik_d(k)
    to warto軼i kt鏎e s wzucane bezpo鈔ednio na portc i portd uP
    ich warto軼i sa pobierane bezposrednio z tablicy a indeksowane s przez zmienna wynik_o(k)

    wy鈍ietlanie jest multipleksowe
  • #52
    bartods
    Level 16  
    D逝go mnie nie by這.
    Koledzy mam ma造 problemik z uk豉dzikiem i programatorem.
    mianowicie:
    zrobi貫m sobie prosty programator i zakupi貫m ATMEL Attiny2313v i mam problem poniewa sprawdza貫m ju programator czy gdzie nie by這 zimnego lutu i wysz這 瞠 wszystko git ale w Bascomie nie chce mi nawet wykry czipu i niewiem co jest.
    Mo瞠 kto m鏬 by mi pom鏂 :cry:
    a poni瞠j umieszczam schemat tego programatorka z reszt 軼i庵ni皻ego z elektrody :P

    A i non stop wy鈍ietla mi w Bascom (Could not identify chip with ID:FFFFFF) nie mo積a zidentyfikowa uk豉du z identyfikatorem FFFFFF.
    Co to znaczy :?: Gdzie jest b陰d :?:
    A tak瞠 Verify failed :?:
    Czy to wina uk豉du czy programatora :?:
    Zasilanie na uk豉dzik da貫m z zasilacza kompa 5V sprawdza貫m woltomierzem i by這 5.15V , czy to mo磧iwe 瞠 te 0,15V przeszkadza :?:
  • #53
    hunterhouse
    Level 26  
    co do napiecie zasilania to 5,5V jeszcze niepowiduje 瘸dnych negatywnych skutk闚 a jak znam 篡cie to i 6 jeszcze b璠zie chodzi.

    co do programatora to ja bym proponowa sprawdzi ten z pomocy bascoma. nazywa sie sample programer, stosowa貫m go do嗆 d逝go i nieby這 z nim k這pot闚, przynajmniej jak procek chodzi poni瞠j 8Mhz

    ten tw鎩 programator to jest cos podobnego ale dok豉dnie niepami皻am kt鏎e nuzki gdzie id. polecam lekture pomocy do bascoma

    Could not identify chip with ID:FFFFFF - to standardowy b陰d jak niewykryje chipa
    sprawdz te czy w ustawieniach programatora masz poprawny programator i czy jest ustawiony na poprawy adres lpt
  • #54
    bartods
    Level 16  
    W豉郾ie niewiem na jaki typ programatora ustawi.
    Sprawdza貫m ju wszystkie mo磧iwo軼i i nic.
    Ale dzi瘯i za pomoc spr鏏uje tego programatorka z helpa Bascoma .

    Pozdrawiam..

    Szuka貫m w helpie ale znalaz貫m tylko pod陰czenie I2C , 1WIRE i nic wi璚ej :( m鏬 by wrzuci schemat tego programatora :?: i do kt鏎ych pin闚 portu pod陰czy :?:
  • #59
    hunterhouse
    Level 26  
    moze by kiepsko bo bascoma raczej nie daje zasilania na wolne piny lpt

    zato ja mam do ciebie cos innego
    jest to programator z pomocy do bascoma. u篡wa貫m go do嗆 d逝go i dalej czasami u篡wam.
    na kwarcu 4Mhz 鄉iga bardzo 豉dnie, przy wi瘯szych kwarcach troche si wyk豉da.

    w pomocy jest on opisany jako "The simple cable programmer from Sample Electronics."

    tak te trzeba go ustawi w ustawieniach programowania w bascom.