Jump to content
ELFORUM - Forumul Electronistilor

core

Membru activ
  • Content Count

    284
  • Joined

  • Last visited

Community Reputation

8 core_reputation_level_3

About core

  • Rank
    Developer
  • Birthday 07/11/1978

core_pfieldgroups_2

  • core_pfield_6
    Iasi

Recent Profile Visitors

329 profile views
  1. Drept sa spun, nu stiu detalii tehnice care ar putea cauza acel comportament, poate doar defazari aleatoare pe diferite frecvente. Sunetele de intensitate mica sunt greu de identificat, se aud, dar nu clar, se aud cumva difuz. Sunetele puternice tind sa se auda mai aglomerat cu restul suneteleor, si par putin aplatizate ca intesitate. La cablul mai bun, se aud mai clar, mai usor de identificat, si par sa fie mai distincte, sunelete emise. Pare ca se aude putin mai tare, ca si cum ar fi in faza si ar fi un spike mai pronuntat.
  2. Din experienta proprie, eu am testat cabluri litz solid silver, ca interconect, pentru amp+casti stax, si am putut simti diferenta fata de un cablu interconect, cu dielectric gros, care pierdea din detaliile sunetului, probabil era vreun efect de filtru capacitiv pe undeva.
  3. Eu as fi pus pe role picioarele, unde poate sa fuga? E si usor de mutat, mai ales ca e de doua persoane si e cam aiurea sa inghesui o persoana la perete. Daca ai role, doar tragi patul când te culci, sa se poata da jos usor din pat, pe ambele parti. Am si eu un pat lat, care are si al cincilea picior, pe mijloc pe undeva, care mi se pare ok pentru echilibrare, desi am cam facut haz de el initial. Am vrut sa-l pun pe role si pe sine, pe al meu initial, dar nu am gasit niste picioare mai robuste si putin inalte sa pot face modificarea. Fiind la mansarda, ar fi putut elibera spatiu in camera, el fiind impins "sub acoperis". O alta sugestie e sa lasi mai mult spatiu intre scanduri, si sa le fixezi, sa nu se stranga, altfel risti sa acumulezi umezeala sub saltea.
  4. Incearca cu AGC pe on, by default e off, e chiar langa RF Gain, in toolbar. Evewntual incearca RG gain manual, cateodata prinde mai bine pe manual. La mine tin minte ca nu mi-a mers cutiuta cu desen, pe HF deloc, orice soft as fi incercat. Pe UF mergea f. bine, chiar si fara antena deloc prindea inteligibil pe FM.
  5. Cred ca ai nevoie sa setezi offestul pentru frecventa, -125MHz, nu asa era si la SDRSharp?
  6. Eu am facut cateva teste, atat cu cutiuta, cu desen, din topic cat si cu adaptorul HamItUp de la Nooelec (https://www.nooelec.com/store/nesdr-smart-hf.html), pe care l-am prins la o licitatie, SH. Din cutiuta nu am prins nimic, pe HF, si am incercat sa discut cu vanzatorul, sa ma ajute, dar nu mi-a dat prea multe informatii utile. Din cate am inteles, are nevoie de semnal amplificat bine pe HF sa prinda ceva. Pe HamItUp am reusit sa prind mai usor ceva semnal, dar si pretul a fost ceva mai mare. Din punctul meu de vedere, SDRConsole e cel mai bun program, chiar daca nu e asa usor extensibil ca SDRSharp, este foarte complex si updatat periodic. Are inclusiv posibilitatea de a asculta, de pe internet, cu banda redusa, SDR-uri din diverse locatii ale lumii. Este nevoie de un PC/laptop performant pentru o analiza complexa de semnal, pe un monitor mare. Eu recomand I7, nu jucarii gen Atom, pentru procesare. Puterea de procesare chiar conteaza pentru un program care face analiza din SDR. Eu l-am folosit pe un I7 gen 1, cu 4(8) nuclee, pe care a mers bine, insa pe un laptop I7 de gen 5 cu 2(4) nuclee, statea ventilatorul pornit mai tot timpul.
  7. core

    OLD stuff...

    pianul si.. muza..
  8. Eu l-am pus in coltul din fata dreapta sus, adica pe un dulap de haine si sta la cca 20-30 de pereti, cu fata spre camera si iesirea de bas reflex spre stanga, nu spre perete. Satelitii sunt de asemenea in partea de sus, suspendati cu firele trase in pat de cablu, la culoarea peretelui, practic nu se vad firele si nici nu incurca. Sta de peste 5 ani in configuratia asta si sunt multumit de ea.
  9. Mie mi se pare stereo sunetul din videoclip-ul postat, nu e? Probabil e youtube e o sursa de muzica veche, sau discuri de colectie, sunt anumite colectii de muzica aniilor 70, 80, 90.. Probabil ca cele mai rar ascultate, si care erau doar pe casete/video-casete, s-au cam pierdut. Cele care au avut macat editie de cd, sunt sanse mari sa fi fost recuperate de cineva, la un moment dat. Din punct de vedere a redarii, aparatele vechi aveau anumite efecte adaugate muzicii, gen spatial stereo sau suround, pe langa modul stereo curat, care chiar suna bine. Eu mai am un aparat de radio Grundig, care are pe langa mono si stereo, acel tip de efect spatial stereo adaugat. Melodiile disco vechi, erau si mixate in studio cu sunete care balansau de pe un canal pe altul, dar care nu erau generate spatial, si suna plat pe un sistem calitativ, insa pe acele aparate, tip bombax, sunau bine mai ales prin discoteci.
  10. La final, mai afisezi un zero, sunt curios.. de ce il mai pui acolo? Mi se pare putin confuz ca ai pus in acelasi post doua solutii diferite la aceasi problema, cu citirea pe ADC. Eu eram curios ca vad unde apare in schema generatorul de zgomot, ca sa vad ca e de fapt un ADC pe 22 de biti care nici nu mai are nevoie de oversampling.
  11. Da, am folosit xc8. Am facut modif si pentru mikroc, dar pe simulator ledurile clipesc mai repede la mine, fata de compilarea pe xc8. O fi ceva in neregula cu setarea timer-ului. E xc8, timpul de clipire corespunde. #define BUTON RA0_bit #define INPUT 1 #define OUTPUT 0 #define APASAT 0 #define NR_JOCURI 4 #define SIZE( x ) ( sizeof( x ) / sizeof( x[ 0 ] ) ) struct Step { unsigned char portData; unsigned short time; }; static volatile unsigned int i; static volatile unsigned int s_pos; static volatile unsigned int counterMs; const struct Step c_joc1[] = { { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 }, { 0xCC, 300 }, { 0x33, 300 }, { 0x55, 300 }, { 0xAA, 300 }, { 0x55, 300 }, { 0xAA, 300 }, { 0xCC, 300 }, { 0x33, 300 }, { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 }, { 0xF0, 500 }, { 0x0F, 500 }, { 0x99, 500 }, { 0x66, 500 }, { 0x99, 500 }, { 0x66, 500 }, { 0x80, 100 }, { 0xC0, 100 }, { 0xE0, 100 }, { 0xF0, 100 }, { 0xF8, 100 }, { 0xFC, 100 }, { 0xFE, 100 }, { 0xFF, 100 }, { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 } }; const struct Step c_joc2[] = { { 0x80, 100 }, { 0xC0, 100 }, { 0xE0, 100 }, { 0xF0, 100 }, { 0xF8, 100 }, { 0xFC, 100 }, { 0xFE, 100 }, { 0xFF, 100 }, }; const struct Step c_joc3[] = { { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 }, { 0x01, 1000 }, { 0x02, 1000 }, { 0x04, 1000 }, { 0x08, 1000 }, { 0x10, 1000 }, { 0x20, 1000 }, { 0x40, 1000 }, { 0x80, 1000 }, { 0x80, 1000 }, { 0x40, 1000 }, { 0x20, 1000 }, { 0x10, 1000 }, { 0x08, 1000 }, { 0x04, 1000 }, { 0x02, 1000 }, { 0x01, 1000 }, }; const struct Step c_joc4[] = { { 0x80, 100 }, { 0xC0, 100 }, { 0xE0, 100 }, { 0xF0, 100 }, { 0xF8, 100 }, { 0xFC, 100 }, { 0xFE, 100 }, { 0xFF, 100 }, }; const const struct Step* c_jocuri[] = { c_joc1, c_joc2, c_joc3, c_joc4 }; const const int c_jocuriSize[] = { SIZE( c_joc1 ), SIZE( c_joc2 ), SIZE( c_joc3 ), SIZE( c_joc4 ) }; //Timer0 //Prescaler 1:4; TMR0 Preload = 6; Actual Interrupt Time : 1 ms void InitTimer0() { OPTION_REG = 0x81; TMR0 = 6; INTCON = 0xA0; } void init_sys() { CMCON = 0x07; // To turn off comparators VREN_bit = 0; // Disable voltage reference TRISB = 0b00000000; // portul B este numai IESIRI PORTB = 0b00000000; // se porneste cu toti pinii port B in stare LOW TRISA0_bit = INPUT; // RA0 este intrare digitala - asigura-te ca ai un rezistor de pull-up connectat de pe pin catre VCC } void Interrupt() { static unsigned char counter = 0; static unsigned char ultima_apasare_reala = 0; if (TMR0IF_bit) { TMR0IF_bit = 0; TMR0 = 6; ++counterMs; // daca chiar si numai odata butonul nu este apasat atunci // ori avem bouncing ori butonul nu mai este apasat asadar in 'else' facem variabila counter = 0 if (BUTON == APASAT) { counter++; /* Daca var. counter ajunge la 10 atunci au trecut 10ms cu butonul apasat, deci suntem siguri ca avem o apasare reala */ if (counter >= 10) { counter = 0; if (ultima_apasare_reala == 0) { // i este un contor care numara circular la fiecare apasare reala pana la NR_JOCURI // daca NR_JOCURI este 4 ca in cazul curent atunci variabila i va lua valorile: 0,1,2,,3,0,1,2,3 samd if (i >= NR_JOCURI - 1) i = 0; else i++; s_pos = 0; ultima_apasare_reala = 1; } } } else { counter = 0; ultima_apasare_reala = 0; } } } void main() { init_sys(); InitTimer0(); // bucla infinita while (1) { if ( counterMs >= c_jocuri[ i ][s_pos].time ) { counterMs = 0; if ( ++s_pos >= c_jocuriSize[ i ] ) s_pos = 0; PORTB = c_jocuri[ i ][s_pos].portData; } } }
  12. poti incerca sa vezi ce face codul asta: #include <pic.h> #include <pic16f628.h> #define BUTON RA0 #define INPUT 1 #define OUTPUT 0 #define APASAT 0 #define NR_JOCURI 4 #define SIZE( x ) ( sizeof( x ) / sizeof( x[ 0 ] ) ) static volatile unsigned int i; static volatile unsigned int s_pos; static volatile unsigned int counterMs; struct Step { unsigned char data; unsigned short time; }; const struct Step c_joc1[] = { { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 }, { 0xCC, 300 }, { 0x33, 300 }, { 0x55, 300 }, { 0xAA, 300 }, { 0x55, 300 }, { 0xAA, 300 }, { 0xCC, 300 }, { 0x33, 300 }, { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 }, { 0xF0, 500 }, { 0x0F, 500 }, { 0x99, 500 }, { 0x66, 500 }, { 0x99, 500 }, { 0x66, 500 }, { 0x80, 100 }, { 0xC0, 100 }, { 0xE0, 100 }, { 0xF0, 100 }, { 0xF8, 100 }, { 0xFC, 100 }, { 0xFE, 100 }, { 0xFF, 100 }, { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 }, }; const struct Step c_joc2[] = { { 0x80, 100 }, { 0xC0, 100 }, { 0xE0, 100 }, { 0xF0, 100 }, { 0xF8, 100 }, { 0xFC, 100 }, { 0xFE, 100 }, { 0xFF, 100 }, }; const struct Step c_joc3[] = { { 0x01, 50 }, { 0x02, 50 }, { 0x04, 50 }, { 0x08, 50 }, { 0x10, 50 }, { 0x20, 50 }, { 0x40, 50 }, { 0x80, 50 }, { 0x80, 50 }, { 0x40, 50 }, { 0x20, 50 }, { 0x10, 50 }, { 0x08, 50 }, { 0x04, 50 }, { 0x02, 50 }, { 0x01, 50 }, { 0x01, 1000 }, { 0x02, 1000 }, { 0x04, 1000 }, { 0x08, 1000 }, { 0x10, 1000 }, { 0x20, 1000 }, { 0x40, 1000 }, { 0x80, 1000 }, { 0x80, 1000 }, { 0x40, 1000 }, { 0x20, 1000 }, { 0x10, 1000 }, { 0x08, 1000 }, { 0x04, 1000 }, { 0x02, 1000 }, { 0x01, 1000 }, }; const struct Step c_joc4[] = { { 0x80, 100 }, { 0xC0, 100 }, { 0xE0, 100 }, { 0xF0, 100 }, { 0xF8, 100 }, { 0xFC, 100 }, { 0xFE, 100 }, { 0xFF, 100 }, }; const const struct Step* c_jocuri[] = { c_joc1, c_joc2, c_joc3, c_joc4 }; const const int c_jocuriSize[] = { SIZE( c_joc1 ), SIZE( c_joc2 ), SIZE( c_joc3 ), SIZE( c_joc4 ) }; //Timer0 //Prescaler 1:4; TMR0 Preload = 6; Actual Interrupt Time : 1 ms void InitTimer0() { OPTION_REG = 0x81; TMR0 = 6; INTCON = 0xA0; } void init_sys() { CMCON = 0x07; // To turn off comparators VREN = 0; // Disable voltage reference TRISB = 0b00000000; // portul B este numai IESIRI PORTB = 0b00000000; // se porneste cu toti pinii port B in stare LOW TRISA0 = INPUT; // RA0 este intrare digitala - asigura-te ca ai un rezistor de pull-up connectat de pe pin catre VCC } void interrupt ISR() { static unsigned char counter = 0; static unsigned char ultima_apasare_reala = 0; if (TMR0IF) { TMR0IF = 0; TMR0 = 6; ++counterMs; // daca chiar si numai odata butonul nu este apasat atunci // ori avem bouncing ori butonul nu mai este apasat asadar in 'else' facem variabila counter = 0 if (BUTON == APASAT) { counter++; /* Daca var. counter ajunge la 10 atunci au trecut 10ms cu butonul apasat, deci suntem siguri ca avem o apasare reala */ if (counter >= 10) { counter = 0; if (ultima_apasare_reala == 0) { // i este un contor care numara circular la fiecare apasare reala pana la NR_JOCURI // daca NR_JOCURI este 4 ca in cazul curent atunci variabila i va lua valorile: 0,1,2,,3,0,1,2,3 samd if (i >= NR_JOCURI - 1) i = 0; else i++; s_pos = 0; ultima_apasare_reala = 1; } } } else { counter = 0; ultima_apasare_reala = 0; } } } void main() { init_sys(); InitTimer0(); // bucla infinita while (1) { if ( counterMs >= c_jocuri[ i ][s_pos].time ) { counterMs = 0; if ( ++s_pos >= c_jocuriSize[ i ] ) s_pos = 0; PORTB = c_jocuri[ i ][s_pos].data; } } }
  13. in intrerupere se modifica i-ul dar ar trebui facut o versiune fara delay-uri, eventual cu delay pe timer, sa fie responsive. eventual cu state machines sa fie mai usor de citit, si cu array de parametri (port value, delay value) care se pot procesa toate intr-o iteratie.
  14. joc1 are 8.6 secunde, timp in care nu poate executa alt joc, pana nu termina. daca ai rabdare, nu ar trebui sa ramana blocat pe joc 1.
  15. Daca OP vrea sa-si formeze o baza de programare pentru microcontrolere, nu cred ca Arduino e o solutie buna pentru inceput. Arduino e pentru cei care vor sa faca chestii relativ complexe, rapid si fara sa se concentreze pe detalii. Arduino Uno nici macar nu suporta functionalitatea de debug. Cred ca cel mai bine e sa incerce cu un PIC din seria 16F, eventual cu o placa de dezvoltare pentru el. Se documenteaza despre hardware intai, PIC16 avand un set relativ restrans de "features". Apoi sa faca teste basic, incepand de la "blinker" si testand fiecare feature in parte separat, sau in combinatii de 2-3 maxim: un timer, un PWM, o captura de frecventa, etc. Asa isi formeaza o baza. Limbajul de programare se poate si schimba, sau chiar mixa (asm+c), si in general nu ai nevoie de cunostinte avansate de programare pentru embedded, decat cand lucrez la proiecte mari si iti trebui o organizare a codului, in module, librarii, layer-e cu izolarea detaliilor de implementare.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.