Ogłoszenie

Collapse
No announcement yet.

czy są na forum jacyś programiści? (bascom, ''C'')

Collapse
X
 
  • Filtr
  • Czas
  • Pokaż
Clear All
new posts

    czy są na forum jacyś programiści? (bascom, ''C'')

    Audio swoja droga ale w dzisiejszych czasach bez procesorow ani rusz. Wiekszosc watkow w elektronice na naszym forum to jak cos naprawic, poprawic, ulepszyc ew zmontowac. Nie ma dzialu o procesorach a takie projekty moga sie przydac chociazby wlasnorecznie skonstruowane przydatne przyrzady pomiarowe. Mam kilka pomyslow na przydatne przyrzady do dziedziny audio ale bez oprogramowania ani rusz. A nie bardzo mam czas siedziec i znow zglebiac tajniki programowania wiec moze jest ktos kto chcialby pocwiczyc bascoma czy ''C''.

    #2
    A co konkretnie Irku Cię interesuje ? i jakie przyrządy masz na myśli :) ?

    Skomentuj


      #3
      Ja swego czasu dość dużo w C i assemblerze pisałem.

      Skomentuj


        #4
        Robiłem w bascom, pascal, delphi, C, ostatnio C++

        Skomentuj


          #5
          Wytłumacz może najpierw czego potrzebujesz, bo to, że ktoś umie "dobrze" programować mikroprocesory przykładowo w C nie znaczy, że zna się tak samo dobrze na programowaniu software na normalne systemy operacyjne i odwrotnie.

          Skomentuj


            #6
            Myslalem, ze moze warto bedzie stworzyc dzial o projektach z mikroprocesorami tak bardziej od strony programowej.

            Osobiscie potrzebuje kogos do pomocy w przerobieniu programu w bascomie no i mam pomysly na nowe urzadzenia pomiarowe:

            woltomierz, watomierz, decybelomierz, miernik impedancji baterii/zasilaczy, miernik malych impedancji w tym pomiar impedancji wyjsciowej koncowek mocy (Damping Factor) i miernik szumow wzmacniaczy.

            Wszystko w kolejnosci od stopnia trudnosci i licze na kogos kto ma czas sie pobawic.

            Skomentuj


              #7
              Pomysł dobry. Ostatnio zainteresowałem się mikroprocesorami i zamierzam kupić jakiś prosty programator.
              Ale brakuje mi pomysłów. Nie warto robić czegoś co można kupić za niewielkie pieniądze, czyli moim zdaniem robienie woltomierzy odpada.
              Lepiej kupić multimetr. Ale inne przyżądy pomiarowe chyba są warte samodzielnego zrobienia.

              Skomentuj


                #8
                Witam,

                nie jestem zbyt biegły w Bascom-ie ale celem nauki nabyłem taki zestaw startowy:

                http://www.and-tech.pl/pl/zestaw-startowy-evb-43

                Dlatego jeśli będzie potrzeba przetestowania programu, najlepiej pod Atmega 32, to mogę się ewentualnie ewentualnie tego podjąć. Oczywiście jeśli zdołam uzupełnić zestaw o zewnętrzne elementy niewątpliwie niezbędne do sprawdzenia całości danego projektu.

                Pozdrawiam,
                Jacek Zieliński

                Skomentuj


                  #9
                  Zamieszczone przez czarekgr Zobacz posta
                  zyli moim zdaniem robienie woltomierzy odpada.
                  woltomierz jest częścią każdego z tych urządzeń :)
                  Zamieszczone przez irek Zobacz posta
                  woltomierz, watomierz, decybelomierz, miernik impedancji baterii/zasilaczy, miernik malych impedancji w tym pomiar impedancji wyjsciowej koncowek mocy (Damping Factor) i miernik szumow wzmacniaczy.
                  Ja bym dopisał jeszcze do tej listy porządny miernik ESR .

                  Wydaje mi się że nie ma sensu budować czegoś co można kupić za parę PLN, a w EdW było mnóstwo kursów więc robienie tutaj kolejnego nie ma moim zdaniem sensu. Zrobienie prostego woltomierza to chwila.
                  Jak już robić to coś co będzie miało jakąś praktyczną wartość. Zacząć od woltomierza a resztę robić w postaci przystawek.

                  ---------- Post dodany o 16:23 ---------- Poprzedni post o 16:14 ----------

                  http://www.tme.eu/dok/04_uklady_scalone/ltc2410.pdf

                  Skomentuj


                    #10
                    ADC na atmegach (wbudowany) wystarczy do prostego woltomierza i wielu innych rzeczy - no chyba, że szukamy jakiegoś super dokładnego ADC to Raven podał jakiegoś 24 bitowego.
                    Last edited by .3lite; 09.12.2011, 18:18.

                    Skomentuj


                      #11
                      w zależności od modelu atmegi, załóżmy w ósemce (najlepszej do prób) wbudowane jest kilka przetworników 8 bit i kilka 10bitowych. Tak naprawdę w tych 10 bitach jest 9 bitów "używalnych", najmłodszy to szum. Jakby tak pobierać po wiele próbek, uśredniać i obcinać ostatni bit to będzie dość precyzyjnie działało. Programator, którego używałem składał się z kilku rezystorów dołączanych do portu LPT. Działało to niezawodnie, chociaż powinno się zastosować transoptory. Bascom AVR (atmega jest procem AVR) posiada dobry, wbudowany soft do programowania przez LPT.

                      Samo programowanie w bascomie jest dość proste, tylko przy rozbudowanych programach takich po 4-6kB zaczyna się wszystko sypać. Z tego co pamiętam przekazywanie arumentow do funkcji jest dość prymitywnie zrobione (chyba tylko przez wartość). Wbudowana jest za to obsługa I2C, enkoderów, klawiatury PS2, wyświetlaczy LCD itp...

                      C++ jest znacznie szybszy, nie posiada dodatkowego balastu, wszystko działa tak jak programista chce - nie ma żadnych wbudowanych "sterowników" wszystko trzeba sobie napisać, ale za to niema problemów z zamulaniem mikrokontrolera. Mi nie udało się nigdy go rozgryźć....

                      Jest jeszcze jeden fajny soft. Visual basic! Składnia języka ta sama co bascom, a programy pisze się na windowsa. To już wygląda jak prawdziwy program z okienkami windowsa, przyciskami suwakami, komunikatami itd... Po zastosowaniu odpowiedniej biblioteki i odblokowaniu mamy dostęp do portu LPT czyli 8 bitów wej/wyj plus parę dodatkowych bitów. Pod przetwornik idealne!

                      Skomentuj


                        #12
                        Zamieszczone przez tom1eczek Zobacz posta
                        wbudowane jest kilka przetworników 8 bit i kilka 10bitowych.
                        Przetwornik jest jeden, 10 bitowy. Wejść ADC jest więcej, bo są one multipleksowane. No i ja bym powiedział, że najmłodsze 2 bity nadają się do ścięcia od razu. Zresztą można tak skonfigurować odczyt z rejestrów ADC.


                        Zamieszczone przez tom1eczek Zobacz posta
                        C++ jest znacznie szybszy, nie posiada dodatkowego balastu, wszystko działa tak jak programista chce - nie ma żadnych wbudowanych "sterowników" wszystko trzeba sobie napisać, ale za to niema problemów z zamulaniem mikrokontrolera. Mi nie udało się nigdy go rozgryźć....
                        C++ nie ma na AVR, jest C - a to różnica. To co jest siłą Bascoma - gotowe funkcje, jest też jego wadą. Poza tym na sieci jest mnóstwo dobrych bibliotek i przykładów w C do obsługi peryferiów w ATmegach.
                        Asustor AS-5002T z MPD + konwerter USB .3lite + DAC PCM1704 by olog + autorskie PRE z PVC + Monobloki Ravlus Amplifilo + kolumny Tatami Audio Hudba

                        Skomentuj


                          #13
                          faktycznie multipleksowane, tylko w bascomie dostęp jest do nich jakby, bezpośredni. Nie prowadziłem dokładnych pomiarów ile tak naprawdę szumu jest, ale wystarczająco, bo kiedyś zrobiłem woltomierz 0...18 z jedną cyfrą po przecinku, a wskazania się nie wahały mimo, że żadnego uśredniania nie było (bo wtedy nie wiedziałem nawet co to znaczy) tylko ten ostatni bit z 10 był obcięty.

                          A wogule - pewnie nie pierwszy wpadłem na ten pomysł pomiaru mocy wzmacniaczy (mój oscyloskop jest stary i dużo oszukuje, woltomierz DC napewno mniej). Jakby do wyjścia podłączyć mostek gretza np. na 1N4148, nieduży kondensator i obciążyć jakimś dość dużym rezystorem, żeby czas opadania był długi i mierzyć napięcie stałe na tym układzie.... W atmedze zawrzeć prosty wzór(((Uzyskane napięcie +1,4V)/2,83)^2)/Robc i wyświetlić... hmm? przy przetworniku rzeczywiste 9 bit i przy podzielniku 128Vp-p = 512 da
                          127,50V (adc=510 o jeden przed max) da 253,70W@8R
                          127,75V (adc=511 czyli max z 9 bit) 254,5W@8R
                          taki zakres i dokładność jest chyba zadowalająca, a początek zakresu pomiaru od 1,4V czyli 30mW raczej nie przeszkadza... Jakby ADC puścić na wew. źródło odniesienia =2,56V to trzeba by tylko dać dzielnik rezystorowy 1:50... Działało by to?
                          Last edited by tom1eczek; 17.12.2011, 19:18.

                          Skomentuj


                            #14
                            Jakby coś to ja się piszę na programowanie na Atmegi w C (środowisko AVR Studio 4 i 5) i aplikacje na PC w C++ (Visual Studio i Builder) lub Javie (Eclipse). Chętnie będę uczestniczył w jakimś fajnym projekcie.

                            Skomentuj


                              #15
                              Zamieszczone przez tom1eczek Zobacz posta
                              taki zakres i dokładność jest chyba zadowalająca, a początek zakresu pomiaru od 1,4V czyli 30mW raczej nie przeszkadza... Jakby ADC puścić na wew. źródło odniesienia =2,56V to trzeba by tylko dać dzielnik rezystorowy 1:50... Działało by to?
                              Ja juz sie zajme tym jak to ma dzialac i czescia sprzetowa, Ty bys tylko ''meczyl'' sie z programem. Wiec jak chcesz. Dostarczam Ci sprzet i omawiamy dzialanie programu a potem testujemy i krok po kroku tworzymy coraz bardziej zaawansowane urzadzenia. Kto chce sie tak poabwic i nauczyc to zapraszam do wspolpracy.

                              Skomentuj


                                #16
                                Interesująca propozycja szczególnie, ze irek jest bardzo dobrym elektronikiem analogowym co przykładowo chociażby dla mnie byłoby świetną okazją do podłapania czegoś od niego.

                                Oczywiście jeśli irek by zaakceptował coś takiego (może by go szlak nie trafił gdyby wyszło na to, że nie znam czegoś prostego z elektroniki analogowej) I w takim wypadku jestem w stanie programować AVR'y w C.

                                Skomentuj


                                  #17
                                  Ja juz sie wszystkim zajme, nie musisz nic o analogowce wiedziec, chodzi tylko o napisanie programu. Nawet narysuje jak ma on dzialac a czy sie to da tak zrobic i czy bedziesz umial to sie okaze. Dlatego wszystko krok po kroku i bedziemy sprawdzali na bierzaco czy wszystko dziala jak nalezy. Na poczatek mam plytke z atmega8 i trzema wyswietlaczami multipleksowanymi siedmiosegmentowymi LED. Na poczatek chodzi o pomiar stalego napiecia i zbadanie mozliwosci przetwornika. Jest tez wejscie do czestosciomierza i to nastepny krok. A dalej probkowanie napiecia wejsciowego w scisle okreslonym czasie itd.

                                  Skomentuj


                                    #18
                                    Bardzo chętnie - co powiesz po nowym roku? Na święta jestem u rodziny i w takim wypadku nie mam dostępu do narzędzi które posiadam u siebie w domu ani w sumie niczego innego.

                                    Co do reszty to już możemy porozmawiać na PW lub ewentualnie jakiś komunikator, napisz co preferujesz.

                                    Pozdrawiam

                                    Skomentuj


                                      #19
                                      spoko, spoko nie pali sie :) Odezwe sie na poczatku roku. Moze jeszcze do pomocy jakis bascomowiec sie zglosi.

                                      Skomentuj


                                        #20
                                        [code]#include <avr/io.h>
                                        #include <avr/interrupt.h>
                                        #include <util/delay.h>
                                        #include <avr/pgmspace.h>

                                        unsigned char lcd_digits[10] __attribute__((progmem)) =
                                        {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

                                        unsigned char key;
                                        unsigned char data[4]={2,0,0,8};
                                        static unsigned char num=0;
                                        static unsigned char pos=0;
                                        static unsigned char w=0;

                                        ISR(TIMER0_COMP_vect)
                                        {


                                        PORTB=(PORTB&0xf0)|1<<num;

                                        PORTA=pgm_read_byte(lcd_digits+data[num]);



                                        if(num==pos)
                                        {
                                        if(w<50) PORTB=(PORTB&0xf0)|1<<num;
                                        if(w>50) PORTB=(PORTB&0xf0)|0<<num;
                                        }
                                        if(w==100)
                                        w=0;
                                        else
                                        w++;

                                        if(num==3)
                                        num=0;
                                        else
                                        num++;

                                        }

                                        void keyboard(void)
                                        {
                                        char k;
                                        static unsigned char p;

                                        k=(PINB>>4)|0xf0;

                                        if(k==0xff)
                                        {
                                        p=0;
                                        return;
                                        }

                                        if(p==1)
                                        return;

                                        _delay_ms(10);

                                        if(k!=((PINB>>4)|0xf0))
                                        return;

                                        p=1;
                                        key=~k;
                                        }

                                        void menu(void)
                                        {

                                        switch(key)
                                        {
                                        case 1:
                                        if(pos>0)
                                        pos--;
                                        break;
                                        case 2:
                                        if(pos<3)
                                        pos++;
                                        break;
                                        case 4:
                                        if(data[pos]<9)
                                        data[pos]++;
                                        break;
                                        case 8:
                                        if(data[pos]>0)
                                        data[pos]--;
                                        break;
                                        }
                                        key=0;
                                        }

                                        int main(void)
                                        {
                                        DDRA=0xff;
                                        DDRB=0x0f;
                                        PORTB|=0xf0;

                                        TCCR0=0x0c;
                                        OCR0=0x40;
                                        TIMSK|=1<<OCIE0;
                                        SREG|=1<<SREG_I;

                                        while(1)
                                        {
                                        keyboard();
                                        menu();

                                        }

                                        return 0;
                                        }[/code]

                                        prosty programik, zrobiony na jakies tam zajecia, do wyswietlania wartosci przetwornika adc na 4 multipleksowanych wyswietlaczach 7. segmentowych, wykozystujacy przerwania, z prosta edycja 4 przyciskami - na atmega16
                                        wystarczy przeskalowac i bedzie dzialac jako woltomierz, moze Ci sie przyda Irku jako przyklad

                                        Skomentuj

                                        Czaruję...
                                        X