Vizitator 3Nigma Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 Am urmatoarea schema electrica: Si urmatorul cod [PIC-C]: #include <16F628A.h>#fuses INTRC_IO, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP#use delay(clock=4000000)void sendToClock(int clock_pin,int data_pin,int data){ int i; for(i=0;i<8;i++) { output_bit(data_pin,shift_left(&data,1,0)); output_high(clock_pin); output_low(clock_pin); }}void main(){ setup_comparator(NC_NC_NC_NC); set_tris_a(0b00000000); sendToClock(PIN_A4,PIN_A2,0); while(1){ sendToClock(PIN_A3,PIN_A2,0b10101010); delay_ms(500); sendToClock(PIN_A3,PIN_A2,0b01010101); delay_ms(500); }} Conectarea cu MCU se face in felul urmator : RA2 -> Data [ambele 74HC164] RA3 -> Clk 74164 Reset -> 10K -> +5v Rezistentele de pe anoadele matricei sunt de aprox 100ohmi. U3 -> anoade U4 -> catoade Daca va uitati in codul sursa o sa vedeti ca ar trebui sa aprinda alternativ cele 8 randuri dupa tiparul 10101010/01010101. Da...ar trebui, dar nu se intampla lucrul asta. Codul sursa scris pe pic este verificat si este corect. Mi se intampla uneori sa se aprinda doar la inceput randul 4 si apoi randul 8 apoi nimic. Am scos integratul de pe catoade si am legat catoadele direct la -, cu acelasi rezultat inasa: , matricia nu urmareste tiparul introdus de mine. Am folosit si delay-uri in speranta ca registrele nu sunt suficient de rapide sa comute datele, nimic ... PIC-ul este 100% bun lafel si matricea ...verificat. Daca ajuta cu ceva: O fi integratele-registre de vina? Care are vreo idee? Ca eu nu stiu ce sa ii mai fac :| P.S : precizez inca odata ca folosesc 74HC164 si NU 74HC595. Am inteles ca 595-urile sunt mai bune, e adevarat? Link spre comentariu
bogdanm Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 S-ar putea sa fie cam putin 100ohmi. In datasheet-ul de la 74HC164 scrie ca nu prea suporta mai mult de 25mA pe iesire, ori cred ca tu ii ceri mai mult cu aia 100ohmi. Incearca cu 330ohmi sau chiar 470ohmi. Link spre comentariu
kit Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 MCLR este in gol? poate ar fi bine sa-l legi la VCC, prin 10k?LE: si rezistenta care leaga intrarile 164 la masa de cat e? (si de ce?) Verifica tensiunea High, poate nu se incadreaza in limitele impuse... Link spre comentariu
bogdanm Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 MCLR este in gol? poate ar fi bine sa-l legi la VCC, prin 10k?Aoleo, nici n-am vazut asta Neaparat du-l la VCC prin rezistenta. Din cate imi aduc aminte, PIC-ul asta nu are pullup intern pe MCLR. Link spre comentariu
Vizitator 3Nigma Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 Am Pull-up pe MCLR [schema nu are, dar daca te uiti mai bine in poza, e deasupra mcu]Schimbat cu 330, dar cam aceleasi simtome. Cand zic cam ... remarc urmatoarele :Cateodata imi ia bine programul, cateodata nu ... am pus legat Data de la 164 printr-un pull-up la 5V ca sa vad daca clock-ul il primeste bine si am observat ca, desi data este mereu 1, sunt momente in care nu primeste clock... sa se piarda semnalul oare? O fi interferentele de la fire ? [sunt mici ... nu cred, dar nici nu stiu]@kit : seria 74, dupa cum bine stiti e TTL : 1 logic = min aprox 2.4 v Link spre comentariu
bogdanm Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 Scoate rezistenta aia de pe pinii 1 si 2 intr-o prima faza, nu te ajuta la nimic.Dupa aceea incearca un program foarte simplu cu PIC-ul, gen led blink pe un singur bin. Daca nu merge macar stii ca ai o problema cu el. Link spre comentariu
kit Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 VIHMinimum High?Level Input VoltageptrVout = 0.1 V or VCC ? 0.1 V|Iout| <=20uA=============================VCC=2.0 V => VIH=1.5 VVCC=4.5 V => VIH=3,15 VVCC=6.0 V => VIH=4,2 VVILMaximum Low?Level Input VoltageptrVout = 0.1 V or VCC ? 0.1 V|Iout| <=20uA=============================VCC=2.0 V => VIL=0,3 VVCC=4.5 V => VIL=0,9 VVCC=6.0 V => VIL=1,2 Vce mai tura-vura, scoate rezistentele alea, nu cred ca te ajuta cu nimic. De asemenea, poti incerca sa-i introduci un delay intre data si clock (stiu ca are deja, dar...) Eu, cu 595 am rezolvat problema doar pe osciloscop...Acuma logica programului... nu m-am uitat extrem de atent, dar pare ca n-are noima:Ii dai clock pe RA4 o data, dar nu-i transmiti nici o data (ii dai ZERO-LOW), deci registrul de pe RA4 nu va face mai nimic. In schimb faci shift la greu pe celalalt registru... De 2x pe bucla while. Eu cred ca ar trebui sa faci shift pe RA4 dupa fiecare apel sendToCLock(RA3,RA2,0b10101010);Mai bine ar fi doua cicluri for imbricate: in primul faci shift la un registru, iar in celalalt, secondar, faci shiftul pe al doilea.La fiecare 8 clock-uri ii transmiti o data HIGH (1L), apoi ii dai doar clock, asta pentru RA4, iar pentru RA3 apelezi send...cred, nu m-am uitat prea atent. daca am gresit, mii de scuze. oricum, in faza asta nu inteleg cum a mers ... doar cu ceva paraziti, de aia iti recomand sa pui pe alimentarea fiecarui circuit cate un cond de 100nF.bafta! Link spre comentariu
bogdanm Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 Alta chestie: scoate afisoru din circuit si incearca sa scoti un output fix (de exemplu 0b10101010) la iesirea unui 164. Masoara cu aparatul de masura nivelele logice la iesire ca sa vezi daca e bine. Link spre comentariu
Vizitator 3Nigma Postat Septembrie 15, 2009 Partajează Postat Septembrie 15, 2009 O mica explicatie este in ordine :Codul sursa asa cum l-am postat reprezinta o faza de test de-a mea. Am facut un circuit integrat sa latch-uie [pus pe catoade] pe cand cu celalalt am incercat sa generez un tipar de alternanta 01010101 / 10101010. A fost doar de test. Modul in care datele sunt trimise pe port sunt in regim serial [asa cum bine v-ati dat seama] - 1 bit pe rand. Registrele avanseaza "pe culmea-a crescatoare" a clockului deci -> tranzitia low-high din functie.Am incercat sa pastrez logica in regim de KISS [Keep It Simple Stupid],dar se pare ca nu mi-a iesit asa cum am dorit. :)In alta ordine de idei : Rezistenta respectiva [pull-down -ul de pe pin1 si 2] a fost pusa cu ideea de a deparazita inputul , dar inteleg acum ca nu e necesara.Am condensatori de filtrare pe sursa : e sursa normala cu convertor de tensiune si 2x100nf pe intrare si iesire.PIC-ul merge bine : verificat tensiunile de la prorgam cu V-Metru.Problema am rezolvat-o : se pare ca la cei 10 cm de fir cat e intre sursa si placa de test, se aduna zgomot : am mai pus un condensator in paralel cu alimentarea si merge acum.Eh lasa, ca asa se invata.Mersi baieti de timpul acordat :aplauzeP.S : am verificat registrele "manual" ... in sens ca am pus data pe high si am conectat clockul pe high si asa mi-am dat seama ca sunt bune. Don't ask Link spre comentariu
kit Postat Septembrie 16, 2009 Partajează Postat Septembrie 16, 2009 ma bucur ca ai rezolvat-o, dar, desi nu vreau sa ma bag in seama degeaba, as dori sa-ti atrag atentia asupra unei chestii: la mine alimentarea se face pe fire la fel de lungi, dar fara probleme. Dar am pus cate un cond de 100nF pe alimentarea fiecarui integrat (intre VDD-VSS), cat mai aproape de acesta. De asemenea, mai pun si niste conzi (de fapt 2) de 10uF pe stabilizator... La inceput imi faceau si mie figuri montajele, dar am gasit pe aici, pe forumul nostru, solutia.in rest... Link spre comentariu
bogdanm Postat Septembrie 16, 2009 Partajează Postat Septembrie 16, 2009 Ma bucur ca ti-a mers pana la urma. Doua chestii totusi:- e greu sa deparazitezi cu rezistente Unii ar spune ca e chiar imposibil.- e ciudat ca sursa aia iti face atatea figuri pe o distanta atat de mica totusi. Asta nu e un montaj prea pretentios, dar pe viitor s-ar putea sa ai nevoie de alta sursa.Bafta! Link spre comentariu
Vizitator 3Nigma Postat Septembrie 16, 2009 Partajează Postat Septembrie 16, 2009 "Tips"uri notate O dovada ca cu 3 fire poti controla oricate matrici se doreste [in limita bunului simt desigur ;) ] este aici: [Programul genereaza randomuri de 8biti si le incarca pe portul de data,iar impingerea selectiva a bitilor se face prin cele 2 porturi de clock.Asta asa ... ca si concept.Poate are cineva dubii .] Eu voi mai zabovi pe la voi, daca nu are cineva nimic impotriva Mersi inca odata, Victor Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum