Vizitator wavve Postat Ianuarie 21, 2010 Partajează Postat Ianuarie 21, 2010 Buna ziua,Am conectat doua uC prin interfata seriala (USART) si intre ele am adaugat un optocuplor 4N35.Am adaugat o poza care contine schema orientativa a circuitului.Problema pe care o intalnesc este urmatoarea: Daca transmit un caracter de la mega32 catre mega128 observ ca il primesc eronat. Stiu ca optocuplorul functioneaza pe baza de inversor adica daca trimit de exemplu 1111 la output optocuplor si implicit input atmega128 o sa am 0000.Ma gandesc ca ar fi niste erori undeva de transmisiune. Am limitat problema la optocuplor deoarece am scos la un moment dat optocuplorul din circuit iar comuicarea intre cele doua uC se desfasura fara probleme dar in momentul in care cuplez si optocuplorul atunci nu mai functioneaza cum trebuie.Poate a mai intalnit cineva probleme asemanatoarea si poate cineva cu mai multa experienta ma poate ajuta putin cu 1,2 idei.De exemplu trimit de la atmega32 caracterul "d". Dar la atmega 128 receptioneaza caracterul " ; " care nu corespunde ca fiind "d" inversat.Am incercat sa intoduc intre baza tranzistorului din optocuplor o rezistesta de 100k dar acelasi rezultat. Multumesc pentru eventualele raspunsuri,Andrei Link spre comentariu
Laci Postat Ianuarie 21, 2010 Partajează Postat Ianuarie 21, 2010 In primul rand la serial este un start bit si un stop bit: http://www.maxim-ic.com/images/appnotes ... 1Fig01.gif Sunt optocuploare si iesire push-pull, dar poti folosi si 4N35, dar pune un buffer inversor dupa el(cu intrari schmitt trigger!) rezistenta sa fie cat mai mic posibil(cu CRT 50%), ca frontul pozitiv sa nu fie prea lent. Link spre comentariu
ratza Postat Ianuarie 21, 2010 Partajează Postat Ianuarie 21, 2010 În modul în care ai tu schema o s? ai semnaul de RX negat, deci trebuie un Schmitt fie înainte de led, fie dup? tranzistorul din optocuplor. Link spre comentariu
mitescu Postat Ianuarie 21, 2010 Partajează Postat Ianuarie 21, 2010 Intradevar, semnalul va fi inversat. Dar mai ai o solutie, montezi LED-ul de la optocuplor la VCC, si atunci cand "emitatorul" este in 1 logic, dioda este stinsa, iar tranzistorul este inchis, si invers, iar montajul devine neinversor. Atentie insa la caracteristicile optocuplorului, care la o viteza mai mare , cam "omoara" fronturile de la semnal. Link spre comentariu
Vizitator wavve Postat Ianuarie 21, 2010 Partajează Postat Ianuarie 21, 2010 Mersi de raspunsuri.Am citit putin despre "Schmitt trigger Inverter". Stiam ca outputul la optocuplor este negat deci optocuplorul functioneaza in configuratie de inversor.Inteleg ca Schmitt dupa optocuplor imi va inversa din nou semnalul si deasemenea are o functie de refacere a semnalului.Ceea ce nu inteleg este dc apare eroare asta la receptie dupa optocuplor. Si daca este normal sa se intample ceva.@mitescu: Pentru mine momentan nu este o problema ca la atmega128 ajunge semnalul inversat.Dau un mic exemplu testat zilele trecute:Trasmit de la atmega32 char "d" care ar arata asa: 0110 0100. Asta inseamna ca dupa optocuplor si anume la receptie mega128 ar trebui sa primesc : 1001 1011. Dar mie la receptie imi afiseaza altceva si anume : 0011 1011Poate gresesc eu undeva si nu imi dau seama. Baud rate-ul este de 9600. Sa aiba legatura cu viteza sau optocuplorul sa aiba un delay ceva de imi apare nesicronizarea intre cele doua atmega.Multumesc,Andrei Link spre comentariu
bogdan_ Postat Ianuarie 21, 2010 Partajează Postat Ianuarie 21, 2010 Laci ti-a arata ceva in figura aia: impreuna cu start si stop sunt 10 biti. Trebuie musai ca bitul de start sa fie un 0 precedat de nivelul idle de 1. Intrarea trebuie sa fie obligatoriu in 1 logic in idle, la fel si iesirea. Ori tu inversezi semnalul.... deci tie nu iti sta intrarea in 1. Asa ca apar probleme de sincronizare si e normal sa primesti gunoaie, nu semnalul inversat.Solutia este simpla si ti s-a dat deja: pune led-ul de la emitator intre TX si VCC. Pentru 9600 nu ar trebui sa ai probleme de viteza, dar daca tot ai si dupa ce faci miscarea aia, atunci incearca cu o viteza mai mica si vezi daca e ok. Link spre comentariu
Vizitator wavve Postat Ianuarie 21, 2010 Partajează Postat Ianuarie 21, 2010 Nu am facut legaturile cand am citit posturile anterioare.Dupa ce am studiat mai bine raspunsurile pot spune ca aveti mare dreptate. Normal mie imi inversa si start bit si stop bit ceea ce imi producea nesincronizarea si implicit eroarea de transmisiune.Am urmat sfaturile voastre si am rezolvat problema.Functioneaza perfect acum.Inca o data multumesc pt ajutor.Andrei 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