Sari la conținut
ELFORUM - Forumul electronistilor

dilema..


Postări Recomandate

Salutare !

Am un pic16f877 si ceva dileme cu el. Am setat in asm toate porturile ca fiind iesiri , am facut iesirile de tip digital , lucrez la 4 mhz , si totusi cand fac un simplu test de aprindere a unui port sa zic cu leduri , unele se aprind altele nu . Care e problema ca nu ma prind ?! Si inca ceva  ...tensiunea in baza  tranzistorului  care are in colector ledul e de 2,7v . Am incercat si cu un 874 ..si acelasi lucru se intampla...clar nu e din procesor . 

 

    LIST P=16F877
    #INCLUDE P16F877.INC
    __CONFIG   _XT_OSC& _WDT_OFF& _PWRTE_ON&  _CP_OFF
 
 
 
 
                            org     0x000
 
cblock 0x20
                a1
                a2
                a3
                b1
                b2
                c1
                c2
                c3
                e1
                e2
endc
 
 
                            porta  equ   PORTA
                            portb  equ   PORTB
                            portc  equ   PORTC
                            portd  equ   PORTD
 
                           
                            bcf     STATUS,RP0
                           
                            clrf    PORTA
                            clrf    PORTB
                            clrf    PORTC
                            clrf    PORTD
                            clrf    PORTE
                            bsf     STATUS,RP0 ; treci in bank 1
                            movlw   0X06
                            movwf   ADCON1
                            movlw   0x00
                            movwf   TRISA
                            movwf   TRISB
                            movwf   TRISC
                            movwf   TRISD
                            movwf   TRISE
                            bcf     STATUS,RP0
                         
          start
 
                   call    ON
               
 
                   goto    start
                   
           
                 
                   
 
 
 
 
ON
 
clrf  portb
clrf  portc
clrf  porta
clrf  portd
movlw 0xff
movwf  portb
return
 
 
 
        end
 

 

Link spre comentariu
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

 

Si inca ceva  ...tensiunea in baza  tranzistorului  care are in colector ledul e de 2,7v

 

Tensiunea aia citita se datoreaza factorului de umplere pentru ca tu ai PWM acolo (inainte de rezistorul din baza). In loc de 5V la umplere 50% vei citi 2.5V.

----------------------------

Fa asa;

 ...................

                         

          start
                   call    ON
    goto    start
                   
 
ON
 
clrf  portb
clrf  portc
clrf  porta
clrf  portd
movlw 0xff
movwf  portb
lup:   ;; cred ca se scrie cu : nu mai stiu exact
goto lup
 
 
return
 
        end
 
Daca tot nu se aprind toate revii. Atunci cred ca LED-urile sunt diferite intre ele si au alta tensiune.
 
 
-------------------
daca vrei putem calcula si timpul:
 
 
    start
                   call    ON ; 2uS
    goto    start ; 2uS
                   
 
ON
 
clrf  portb; se stinge - 1uS
clrf  portc ; 1uS
clrf  porta ; 1uS
clrf  portd ; 1uS
movlw 0xff ;1 uS
movwf  portb ; aici se aprinde - 1uS
 
return ; 2 uS
 
        end
 
7uS aprins, 5uS stins, la 5V alimentare pe pin vei vedea 2.9V ... :)
Editat de Mondan
Link spre comentariu

Mondan, normal ca punand PIC intr-o bucla infinita dupa setarea iesirilor va rezulta in ON continuu. Nu-i problema ca ai zis "lup" (loop), puteai scrie si "vulpe" (voolpe) ca tot aia facea. :)Testul "sanity check" e cum zicea Liviu, un delay vizibil ochiului.

Editat de thunderer
Link spre comentariu

stiu cum se scrie un delay in asm pe 8 biti.

Ar fi fost mult mai dificil decat intreg programul.

ne mai si amuzam cu lup....

In spatele etichetelor nu sunt decat instructiuni de salt. Nu conteaza cat de luni sau scurte le pui. La precompilare dispar.

Ar fi tare sa accepte compilatorul si:

 

goto $-1

Link spre comentariu
...tensiunea in baza  tranzistorului  care are in colector ledul e de 2,7v .

...clar nu e din procesor . 

 

Un tranzistor bipolar cu emitorul la masa, care are in baza 2.7V are o problema. Ori masuratoarea e incorecta, ori tranzistorul este ars. O schema de conectare, chiar si desenata pe hartie si fotografiata, ar ajuta. De asemenea, unele porturi ale picurilor sunt cu drena in gol si prin urmare nu pot genera 1 logic fara o rezistenta la Vcc. Verifica si chestia asta. Din nou, schema ar ajuta.

 

Cat despre "clar", singurul lucru clar e ca nu merge. De unde e o sa fie clar numai dupa ce o sa mearga. :) Am vazut nenumarate posturi in care autorul scria ca a verificat totul si e "perfect", pentru ca mai tarziu sa descopere o piesa pusa pe dos, un scurt circuit, o valoare incorecta ... etc. Sugestiile colegilor cu intarzierile sunt corecte. Nu ai cum sa vezi cu ochiul daca clipoceala e f rapida.

Editat de cirip
Link spre comentariu

Dragi tovarasi......Multumesc ! Acum am inteles valoarea tensiunii in baza tranzistorului , dat fiind faptul ca o iesire a unui port e un PWM la 4mhz cu 50% duty cycle . Problema care a ramas e ca dintr-un port cateva iesiri nu fac nimic ...adica stau in zero  . Si nici nu am un osciloscop sa vad daca floscaie ceva . Am 5 porturi A , B , C , D , E  pe toate le comand in ON si la fiecare dintre ele exista cel putin o iesire care nu comuta. Schema e simpla : iesirea controler trece serie printr-o rezistenta de 1k spre baza unui tr npn  , care are emitorul la masa . tot din baza spre masa e pusa o rezistenta de 10k .In colector sint grilandele de leduri . E o mini instalatie de brad , si de aceea nu comand direct ledurile din PIC . .

Cirip : am peste 15 tr npn care au 2,7v in baza ...si asa cum spun si colegii mai sus asta e valoarea dc a tensiunii datorita comutatiei. 

Mondan : ledurile sint identice numai ca au culori diferite si stiu ca cele verzi au 3v iar cele rosii doar 2v . 

Liviu M : programelul de mai sus e doar unul de test sa verific toate iesirile porturilor . tocmai aici e dilema ..de ce unele iesiri dintr-un port merg iar altele nu ?!

Link spre comentariu

 

Cirip : am peste 15 tr npn care au 2,7v in baza ...si asa cum spun si colegii mai sus asta e valoarea dc a tensiunii datorita comutatiei. 

 

In baza sau in pinul PICului? Ca daca e in pinul picului, mai e o rezistenta de 1K pana in baza, dupa cum descrii schema. Si daca e asa, tot nu cred ca ai 2.7V chiar pe baza :)

Bine ca ai rezolvat. Open drain sugerasem si eu intr-unul din posturi. Ca era LVP activat n-avea nimeni cum sa ghiceasca. Am furat-o si eu odata cu LVP si de atunci nu prajesc decat cu 13V.

 

Sarbatori Fericite!

Editat de cirip
Link spre comentariu

Da , cirip , tu mi-ai deschis ochii cu open drain si de aceea iti multumesc . Un calcul simplu spune ca daca alimentarea se face la 5 v iar eu am 50% duty cycle , e normal ca tensiunea medie pe care o masoara aparatul sa fie undeva pe la jumate . 2,7 v erau in pin PIC ca altfel jonctiunea B E a tr era moarta . 

Sarbatori fericite ..!!Sa ne auzim cu bine..!!

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări