Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Colectionari de telefoane

Tavan plin de apa in baie, de la ...

Aplicație funcționala pentru flip...
 Taiat gheare pisica - Cu ce, ce r...

Retragere email trimis

German maister

Sfat Sistem hi-fi
 Cați kilowati am consumat?

Alegere antigel - G11/G12 etc

Problema centrala

Caut o culegere de probleme de fi...
 Nu-mi mai pot practica meseria di...

Alternativa daca cade curentul: c...

Înștiințare - schema de ...

A reusit cineva sa vanda energie ...
 

Port de intrare la PIC16F84A

- - - - -
  • Please log in to reply
17 replies to this topic

#1
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Daca declar un port de intrare in TRISB,1, de exemplu, el este setat din prima pe 1, adica cand testezi starea portului btfsc PORTB,1 imi dau seama ca el e pe 1 (cu toate ca dau un clrf PORTB).Adica el din start este activat (are o tensiune la intrare)?

#2
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
Cum e? Pina la initializare, deci pina cind RESET'ul este dat liber configuratia lui de default este de "tri state" iar dupa initializare procesorul acorda portilor I/O configuratia stabilita in registre.
Intrarii nu-i este acordata nici o tensiune ci "asteapta semnal".

#3
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Iti spun sigur ca la initializare bitul e setat pe 1 din prima.(apare un pull-up, deoarece l-am setat eu in OPTION_REG , bit 7). Ca sa-l aduc in starea pull-down trebuie sa sterg acel bit setat ca intrare din PORTB (in programul meu am folosit RB7,...,RB4 ca port-uri de intrare)

#4
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
Atunci da: tri state pina la RESET si pe urma intrare fara tensiune

#5
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
M-am documentat si pentru ca sa-l aduc in starea de pull-down trebuie sa conectez rezistente de 10K sau mai mari la pinii de la intrare si puse la masa. Odata ce am facut treaba asta cred ca voi avea starea 0 logic , iar cand primesc un semnal de +5V voi avea starea 1logic. (am facut acest program pentru o tastatura, iar tastele folosesc o logica binara, adica cand apas tasta 9 se trimite semnalul 1001). Intrebarea e daca sunt bune valorile rezistentelor?

#6
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
Daca il aduci in starea de pull-down prin conectarea rezistentei de 10k atunci vei avea 0-Logik indiferent de semnalul de la intrare (cred!!). Fa alta treaba:
configureaza-l ca intrare si relizeaza un contact al pinului respectiv cu 5V. La contact inchis trebuie sa citesti lgic HIGH, iar la contact deschis logic LOW. Daca nu poti sa citesti prin Soft starea respectiva atunci lasa alt pin ca iesire sa-ti dea sincron acelasi semnal ca cel de pe portul tau de intrare.
Tre sa reiasa din documentatie care bit al regustrului de configuratie (ceva de gen DDR) pentru ce este:
Intrare pull-up sau pull-down, Iesire, tri-state

#7
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
Cam la toate procesoarele configuratia de intrare care se foloseste nu are nevoie de rezistente de pull-up sau pull-down. Cind procesorul lucreaza in mediu distorsionat atunci intrarile sint critice din punct de vedere "electro-magnetizm", si atunci trebuiesc configurate chiar si cu potentiale fixe date prin rezistente de tip pull-up/down astfel incit eventualele distorsiuni sa nu deranjeze functionalitatea asa incit fie ca procesorul se strica fie ca Watch-Dog-ul comanda RESET etc etc.
Pentru potential definit se folosesc valori ale rezistentelor de 4...10k. 10k e OK

#8
DeeJay

DeeJay

    Senior Member

  • Grup: Senior Members
  • Posts: 2,069
  • Înscris: 07.05.2004
din cate stiu eu, la pic porturile sunt open-colector, B-ul cu 'weak pull up', deci starea lui normala e 'tri-state', cand scrii un zero, se leaga la masa, cand scrii 1, are tens. din rez. de pull-up externa, pe care o legi tu.

#9
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
open-colector este numai pentru iesire

#10
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
am pus rezistenta de 10 k la masa si in momentul in care se testeaza bitul cu pricina(port de intrare) programul se blochiaza. Este prea mare rezistenta?

#11
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Porturile de intrare sunt setate din start cu pull-up . Il putem scoate doar prin setarea bit-ului 7 la 1 in registrul OPTION_REG. Eu am nevoie de el, pt. ca am o tastatura. Problema e ca logica pe care am folosit-o in constructia circuitului e cea satisfacuta de starea pull-down a portului.

#12
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Se poate sa am in acelasi timp port-uri de intrare cu pull-up si altele cu pull-down?

#13
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
"Se poate sa am in acelasi timp port-uri de intrare cu pull-up si altele cu pull-down?"

Asta se poate intr-adevar!

Vezi in cartea tehnica a procesorului cum trebuie configurat portul respectiv pentru a functiona ca imput. Iar la procesoare nu iti trebuie rezistenta de pull-up sau de pull-down (dupa caz) la intrari decit daca portul respectiv nu se va folosi la nimic. Intr-o asemenea situatie dai portului practic un potential definit pentru a realiza o capabilitate buna contra influentelor elektromagnetice. In situatia ta ai nevoie de o intrare digitala (I/O-Port configurat ca input) care va primi un semnal de 5V = High sau Low (dupa logica) si 0V = invers decit la 5V.
Mai departe configurind portul in mod corect il pregatesti pentru informatie. Cind informatia ajunge, vei realiza probabil un algoritm de evaluare/filtrare, dupa care prin program folosesti informatia mai departe.
Testeaza intrarea cum ti-am spus: defineste un al doilea port ca iesire si fa togle pe el de cite ori intrarea ta primeste semnal HIGH si masoara acel port de iesire. Daca treaba merge vei avea la acea iesire un semnal sincron cu intrarea respectiva. Pentru semnalul pe intrare poti folosi linistit o lita de legatura intre VDD = 5V si portul de intrare.
O rezistenta de 10k nu poate fi mare acolo este vorba de cel mult 0.5mA!!!
Hai ca e treaba numai de configuratie, dar lasa te rog rezistenta aia la o parte ca nu-ti trebuie.

#14
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
Inca o chestie: treaba cu lita e numai o verificare pe care o faci rapid, deci nu legi lita fix la portul de intrare ci dai un impuls scurt. Eventual pune o rezistenta de 10k intre VDD si lita respectiva!

#15
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
In programul meu am declarat RA3,RB1,RB2 ca iesire, RB3,RB4,...RB7 ca intrare. La RB4,...,RB7 am legat o tastatura de la care primesc semnal intr-o logica binara (tasta 5 semnal 0101, adica 1 logic pe RB4 si RB6). Dar porturile mele de intrare sunt pe 1 logic si atunci tot algoritmul cade(am facut circuitul cu diode si am codificat totul binar si ... nu vreau sa-l schimb).Mi-ar conveni tare mult chestia cu pull-down, dar nu mere.(am conectat cele 5 rezistente de 10 K la masa si programul meu cand ajunge sa testeze acele porturi se blochiaza. Nu e problema cu programul pt. ca inainte, cand nu aveam conectate rezistentele functiona pana la faza cu tastatura)

#16
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
Aha daca inteleg eu bine electric ar functiona problema, numai logica e inversa. Bine atunci inverseaza semnalele prin tranzistoare care lucreaza in regim de saturatie. Ia de exemplu tranzistoare de tip BCR116: Semnalul de intrare il legi la baza, iar iesirea din colector in intrarea de la procesor, colectorul fiind legat printr-o rezistenta de 4,7k la sursa de 5V. Cind in baza intra 5V, deci "High" colectorul tranzistorului da afara "LOW"

#17
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Am dezactivat pull-up (ce-i adevarat ca am uitat) si am lasat rezistentele de 10k conectate la masa. Programul a functionat fara nici o problema. De ce vroia si rezistentele de 10 k, nu stiu? (am scos rezistentele, credeam ca a fost doar o problema soft, si nu a mai functionat. In momentul in care apasam orice tasta el imi afisa ca a fost apasata tasta 1)

#18
vata_pa_batz

vata_pa_batz

    Guru Member

  • Grup: Senior Members
  • Posts: 25,602
  • Înscris: 28.07.2004
Dar daca cere 10k atunci distractie placuta!

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate