Jump to content

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

La multi ani @karax!

La multi ani @Yoda!

La multi ani @OvidiuNS!
 Cum se numeste filmul

Castrarea cocosului (clapon)

Instalație ornamentala lumin...

probleme conectare wifi de pe tel...
 Probleme cu alegerea facultatii

Cont Facebook spart

Modul GSM cu numarator de impulsuri

Leduri de 12v la polițe de s...
 Intrerupator bec

Recomandari Colagen

Recomandari Ciocolata Neagra 70-85%

TVSat GO
 

Cum se calculeaza timpul de intarziere la PIC16F84A

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

#1
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Exista vreo formula ? Am nevoie sa obtin de exemplu o intarziere de o secunda .  
Mai bine sa va arat o parte de program:
"               movlw 0x07
movwf OPTION_REG


test1

btfss INTCON, T0IF   ;test pentru terminarea contorizarii
goto test1"

Intrebarea e cat timp sta pic-ul meu in bucla ? Eu am obtinut dupa calculele mele o intarziere de 256*256/4*10^6 . E bine?

Si inca ceva !!! Daca incerc sa obtin o secunda in stilul asta, o sa imbatranesc. Cat te-ai chinui nu da o secunda. (am dat toate valorile de la 0...7 prescaler-ului si nimic)

#2
DeeJay

DeeJay

    Senior Member

  • Grup: Senior Members
  • Posts: 2,070
  • Înscris: 07.05.2004
fa si tu o bucla in bucla ....

movlw FFh
movwf COUNT1
movwf COUNT2
movlw 10h
movwf COUNT3

Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT2,1
goto Loop1
decfsz COUNT3,1
goto Loop1

deci ai 16*256*256 ~ 1.048s

http://www.mstracey....co.uk/index.htm

#3
RAN

RAN

    Member

  • Grup: Members
  • Posts: 446
  • Înscris: 04.07.2004
ia-ti mplab ide de pe site-ul microchip. e gratis, si are o functie de tip cronometru cu care poti sa verifici daca ai calculat bine

#4
ThePuiu

ThePuiu

    Active Member

  • Grup: Members
  • Posts: 1,724
  • Înscris: 11.11.2003
foloseste JAL - e super usor de lucrat cu el si exista o gramada de exemple pe net...

#5
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Si programul asta "JAL" de unde pot face rost de el ?

#6
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
"fa si tu o bucla in bucla ....

movlw FFh
movwf COUNT1
movwf COUNT2
movlw 10h
movwf COUNT3

Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT2,1
goto Loop1
decfsz COUNT3,1
goto Loop1
"

In exemplul asta nu se ia in considerare faptul ca pentru a executa o instructiune "goto" e nevoie de 2 cicluri. Deci precizia ceasului va fi destul de slaba. Am nevoie sa implementez un ceas cu o precizie mai buna. In al doilea rand lucrez cu un PIC16F84A care nu a auzit de registrul COUNT1.

#7
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Daca decrementez cu 3 atunci obtin o valoare mai exacta

#8
ThePuiu

ThePuiu

    Active Member

  • Grup: Members
  • Posts: 1,724
  • Înscris: 11.11.2003
pagina celui care a conceput JAL-ul si de unde se poate face si download este:
http://www.voti.nl/jal/index_1.html

Bafta!

#9
ThePuiu

ThePuiu

    Active Member

  • Grup: Members
  • Posts: 1,724
  • Înscris: 11.11.2003
Daca folosesti cristale de quartz (evident, de fapt!), o sa ai si alte surprize mai mult sau mai putin placute! O sa constati ca folosind 2 cristale marcate 4M (de exemplu), rezultatul obtinut este diferit (mai mult sau mai putin). Am intampinat problema asta cind am vrut sa construiesc un frecv. digital, la care am schimbat un pumn de cristale pana am gasit unul "mai bun"!
Concluzia mea e ca nu cred ca poti face ceva extra - precis cu PIC. Sunt convins ca si o modificare a temperaturii capsulei duce la o modificare in timp a frecv. tactului...
COUNT1, COUNT2, COUNT3 nu sunt niste registrii dedicati ai PIC-ului ci sunt niste registrii definiti de utilizator... ceva de genul asta:
count1 equ 2ch

Bafta!

#10
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
si iesirea din bucla cum o fac?
"movlw FFh
movwf COUNT1
movwf COUNT2
movlw 10h
movwf COUNT3

Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT2,1
goto Loop1
decfsz COUNT3,1
goto Loop1"

#11
RAN

RAN

    Member

  • Grup: Members
  • Posts: 446
  • Înscris: 04.07.2004
iese singur...cand termina.
Eu cu un quartz de 10 MHz am facut un ceas soft la un pic18, a ramas precis la secunda timp de o zi (atat am testat).

#12
DeeJay

DeeJay

    Senior Member

  • Grup: Senior Members
  • Posts: 2,070
  • Înscris: 07.05.2004
COUNT-urile 1 si 2 sunt variabile, le declari si tu la 1Ch, 1Dh, ma rog, unde ai chef. dc. ai nevoie de precizie.... pre-incarci TMR cu o val anume... calculezi si tu... : de ex:

movlw 37h
movwf TMR0
......

org 04h
incf reg_contor



ma rog, mai trebuie cizelata, dar nu am timp acum... care e ideea: incarci TMR0 cu 37h(55 in zecimal), deci mai are de numarat 200 instr. pana la overflow, cand se act. intr. de tmr0 (care te arunca la 04h) deci ai 200us per tmr0 overflow. mai pui prescallerul la 5 si ai 1 ms per intrerupere... mai faci o bucla de ontor in care scazi o valoare.... si o sa obtii pana la urma secunda aia... nu inteleg totusi dc. ai nevoie de temporizare asa de mare.... dc. cumva vrei sa faci frecventzmetru, se poate si mai simplu. ma rog, sper ca ai prins macar ideea. dc. nu, revino cu intrebari.

#13
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Am facut un alt exemplu, dar nu stiu de ce sta asa de mult in bucla (cca 8 s):
" PROCESSOR 16f84
#include "p16f84a.inc"

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


COUNT1 equ 0x0C

org 0x00
goto main

org 0x04
goto main


#include "bank.inc"


main


BANK1
movlw 0x00
movwf TRISB

BANK0
movlw 0x07
movwf PORTB

clrf TMR0
bcf INTCON,T0IF

movlw 0xF4
movwf COUNT1

BANK1
movlw 0x03
movwf OPTION_REG


Loop1 btfss INTCON,T0IF
goto Loop1
bcf INTCON,T0IF
decfsz COUNT1,1
goto Loop1


BANK0
movlw 0xF8
movwf PORTB

BANK0

clrf TMR0
bcf INTCON,T0IF

BANK1
movlw 0x07
movwf OPTION_REG   ;s-a programat contorizarea (prescalerul , TMR0)


test2
btfss INTCON, T0IF
goto test2


goto main

end
"

#14
ThePuiu

ThePuiu

    Active Member

  • Grup: Members
  • Posts: 1,724
  • Înscris: 11.11.2003
nu e totusi mai simplu asa?!?:
////////////////////////////////////////////////
include 16f84_4
include jlib

pin_a0_direction = output

forever loop
pin_a0 = high
delay_1s(1)
pin_a0 = low
delay_1s(1)
end loop
/////////////////////////////////////////////////

NU PRIMESC PROCENT DE LA AUTOR! dar chiar este mai simplu de lucrat in JAL!

#15
DeeJay

DeeJay

    Senior Member

  • Grup: Senior Members
  • Posts: 2,070
  • Înscris: 07.05.2004
@thepuiu: si dc. mai vreau sa fac ceva in timpul asta (afisez ceva pe lcd, calc. variabile, comunic pe rs232...) ai o solutie in JAL?

#16
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Am folosit programul asta si sta pic-ul asta vreo 10 secunde. Nu mai vreau o se cunda, vreau un program care sa mearga si sa aiba o logica. Nu stiu ce are , folosesc ca oscilator XT-ul si am scris programul.M-am chinuit toata ziua si am ajuns la concluzia ca nici un program nu e bun. Ultimul program facut este:
"
PROCESSOR 16f84


#include "p16f84a.inc"
#include "bank.inc"

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


cont equ 0x0C

org 0x00
goto main

main


BANK1
movlw 0x00
movwf TRISB

BANK0
movlw 0x07
movwf PORTB
clrf TMR0
bcf INTCON,T0IF
movlw 0xF4
movwf cont

BANK1
movlw 0x03
movwf OPTION_REG

BANK0
Loop1 btfss INTCON,T0IF
goto Loop1
bcf INTCON,T0IF
decfsz cont,1
goto Loop1

movlw 0xF8
movwf PORTB

clrf TMR0
bcf INTCON,T0IF

movlw 0xF4
movwf cont

BANK1
movlw 0x03
movwf OPTION_REG

BANK0
Test btfss INTCON,T0IF
goto Test
bcf INTCON,T0IF
decfsz cont,1
goto Test

goto main

end"

#17
carst_razvan

carst_razvan

    Junior Member

  • Grup: Members
  • Posts: 59
  • Înscris: 16.07.2004
Alta era problema (nu programul). Schema cu led-uri mi-a dat-o un tip care a setat rezonatorul la 455KHz.

#18
ThePuiu

ThePuiu

    Active Member

  • Grup: Members
  • Posts: 1,724
  • Înscris: 11.11.2003
pt: deejay2k1

nu am inteles ce vrei sa zici... daca te referi la existenta rutinelor in JAL pt cele spuse de tine... raspunsul este DA! Daca nu, fii te rog mai explicit...

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

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