radovi forumasa sa ubrzanog kursa pbp

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: radovi forumasa sa ubrzanog kursa pbp

Post by VFDisplay »

da li mi netko može objasniti kako koristiti onaj TMR0 na pic16f84a? tražio sam na google-u ali ništa nisam uspio razumiti kako to radi. Također sam i pregledao datasheet...
treba mi za sat (ovaj koji sam napravio) da mu otklonimono kašnjenje
unaprijed hvala!
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

Imas na sajtu trax-ov kod za sat. Pa Pogledaj kako se koristi.
Uglavnom najjednostavnije je podesis preskaler i izvor takta, to se radi sa registrima koji su navedeni u datasheetu.
Jos nadjes registar u kojem je onaj bit koji govori da je registar presao sa 255 na 0.
I znaci stalno gledas taj bit, i cim predje na 1 ti ga stavi na 0 i uvecaj kaunter i to je to.
Samo sto za to moras koristiti kristal 32,...KHz. Mozes ga koristiti kao osnovni oscilator ili kao oscilator za TMR0. to je nekako ukratko najjednostavnije...
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: radovi forumasa sa ubrzanog kursa pbp

Post by VFDisplay »

hvala na pomoći ali još ništa od uspjeha....
shvatio sam sve šta si ti rekao ali kad sam trebao to znanje pretvoriti u program tu sam zapeo
pročitao sam i datasheet i pogledao sam neke primjere na internetu
ono što me muče su ti bitovi (OPTION_REG i INTCON i TMR0). kako ih podesiti
pokušao sam pročitatit trax-ov kod od onog nixie sata ali je problem što ja neznam asm!
znam jedino picbasic i to što si nas ti naučio
nemoj misliti da tražim sve gotovo na tanjuru ali bi mi bilo jednostavnije neki primjer...
oprosti što te ovako gnjavim...
EDIT:Da li misliš na onaj kristal iz sata
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

Pa isto kao i svki drugi registar!
option_reg=%010101010
Pises samo gde ti treba 1, gde 0.
Sta koji bit znaci to imas u tablicama u datasheetu.
Napisi kako bi ih voleo postaviti, i polako redjaj bit po bit, pa da vidimo ide li ti...
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: radovi forumasa sa ubrzanog kursa pbp

Post by VFDisplay »

evo kako sam ja to razumio...
znam da nevalja jer ne radi e sad šta sam ja tu zbrljao neznam no vjerujem cijeli program
za glavni osc koristio sam kristal iz sata a RA.4 stavio sam na Vcc te i na masu preko 4k7 (kao na trax-ovoj shemi)

Code: Select all

DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0 
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 3
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 5 
DEFINE LCD_LINES 2
pause 500
COUNTER VAR BYTE
SECOND VAR BYTE
start:
OPTION_REG = %00110010
INTCON = %00100100
On Interrupt GOTO BROJAJNE
BROJAJNE:
COUNTER = COUNTER + 1
IF COUNTER > 32 THEN SECOND = SECOND + 1
LCDOUT $FE,1,DEC SECOND
INTCON = 0
TMR0 = 0
RESUME
GOTO START
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

Evo da puno ne lupamo glavu

Code: Select all

'****************************************************************                                            *
'*  Notes   : To use this example with MicroCode Studio, you    *
'*          : should:                                           *
'*          : (1) Compile this code and program your target     *
'*          :     MCU using the 'Compile and Program' button    *
'*          :     or F10                                        *
'*          : (2) Ensure that a serial cable is connected to    *
'*          :     your PC and development board (using a        *
'*          :     suitable line driver like a MAX232)           *
'*          : (3) Open the Serial Communications Window (from   *
'*          :     VIEW or just press F4                         *
'*          : (4) Select the correct COM port and set the       *
'*          :     baudrate to 19200                             *
'*          : (5) Press the 'Connect' button                    *
'****************************************************************

'define LOADER_USED 1     ' using a loader, OK to leave in if a loader is not used
define OSC 20            ' this example uses a 20MHz clock
DEFINE HSER_BAUD 19200   ' set baud rate to 19200

Minute   var     byte    ' Define minute variable
Second   var     byte    ' Define second variable
Ticks    var     byte    ' Define pieces of seconds variable
DoUpdate var     byte    ' Define variable to indicate update 

clear             ' clear all RAM (sets all VAR declarations to zero)
DoUpdate = 1      ' Force first display

OPTION_REG = $57            ' Set TMR0 configuration 
INTCON = $A0                ' Enable TMR0 interrupts
On Interrupt Goto TickInterrupt

' Main program loop 
MainLoop:
   if DoUpdate then
      hserout [dec2 Minute,":", dec2 Second,$D,$A]
      DoUpdate = 0
   endif
   Goto MainLoop  

' Interrupt routine to handle each timer tick
' Disable interrupts during interrupt handler
disable 
TickInterrupt:
   Ticks = Ticks + 1                 ' Count pieces of seconds
   If Ticks < 61 Then ExitInterrupt  ' 61 ticks per second 

  ' One second elasped - update time
   Ticks = 0
   Second = Second + 1
   If Second >= 60 Then
      Second = 0
      Minute = Minute + 1
      If Minute >= 60 Then
         Minute = 0
      endif
   Endif
   DoUpdate = 1      ' Set update

ExitInterrupt: 
    INTCON.2 = 0    ' Reset timer interrupt flag
    Resume
To sam nasao u folderu MCS-a.
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: radovi forumasa sa ubrzanog kursa pbp

Post by VFDisplay »

PUNO TI HVALA!!!
spasio si me ovim!
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

Ostaje ti za pocetak umesto serout ubaciti lcdout, pa onda dodas i podesavanje i eto sata.
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: radovi forumasa sa ubrzanog kursa pbp

Post by VFDisplay »

to sam odmah napravio i promjenio brzinu oscilatora te sam promjenio i onaj ticks sa 61 na 38
Da li pic16f84 se može oštetiti ako radi na frek većoj od njegove (10mhz)?
Ja sam probao na 16 i radi samo što mu na početku programa stavim define osc 16
Usput da li trebam ra.4 spojiti na +5v te istovremeno ga spojiti preko 4k7 na masu kako je @trax napravio na svom nixie satu?
Još jednom puno hvala!
vukboban
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 212
Joined: 05-12-2008, 17:49
Location: Pancevo

Re: radovi forumasa sa ubrzanog kursa pbp

Post by vukboban »

16F84 nema "njegovu" frekvenciju,nego radi na onoj kakav mu kristal stavis.
Znaci kakav kristal takav i defineosc.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

Ne znam zasto bi dirao ra4 ako ga ne koristis...
A ako ga koristis onda moras dodati pull up otpornik, jer nema tranzistora prema +.
EDIT:
@ traxu to sluzi za detekciju nestanka napajanja, pa da uredjaj ide u mod samo za bateriju...
User avatar
niho
Pravi forumaš
Pravi forumaš
Posts: 1895
Joined: 24-09-2009, 17:26
Location: Brcko, Bosnia and Herzegovina

dimer sa 16f84a

Post by niho »

Evo napokon sam napravio i istestirao mali dimer sa PIC16f84a. Ima podesavanje na up i down tastere u rezoluciji od 30 podioka. Uredjaj je krajnje jednostavan i vise je za ucenje i pocetnike nego za neku pravu upotrebu :) Radi na principu raspodjele svjetla i pauze (nesto kao PWM :) )ide od 1:30 u korist pauze = najtamniji polozaj pa do 30:1 u korist svjetla. Treperenje se ne moze primijetiti jer se radi o brzinama 33 Hz koje oko ne moze registrovati.
Shema:
shema sklepana na brzaka u proteusu
shema sklepana na brzaka u proteusu
dimer.jpg (13.05 KiB) Viewed 15480 times
a ovo je kod pisan u Microcode pbp

Code: Select all

'****************************************************************
'*  Name    : dimer.BAS                                      *
'*  Author  : [niho]                    *
'*  Notice  : Copyright (c) 2010 [niho] *
'*          : All Rights Reserved                               *
'*  Date    : 16.01.2010                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16f84a,XT_OSC,WDT_OFF,PROTECT_OFF 'definicija konfiguracije
DEFINE OSC 4  'definicija oscilatora
 i VAR BYTE    'postavka prvog brojaca (varijable)
 i=1
SYMBOL LED=portb.7         'postavka simbola  zamjene pinova
SYMBOL taster1=portb.0      
symbol taster2=portb.1      
OUTPUT LED
INPUT TASTER1                'postavke ulaza-pojacavanje int.svjetla
input taster2                 'smanjivanje intenziteta svjetla
pocetak:         'radni potprogram 
low led
pause i
high led
pause 30-i
if taster1=0 then i=i+1      'pojacavanje svjetla
if taster2=0 then i=i-1      'smanjivanje svjetla                    
if i>30 then i=30            'ogranicenje pauze
if i<1 then i=1
goto pocetak

end                 ' kraj 

Hex kod:

Code: Select all

:1000000028288F018E00FF308E07031C8F07031CEA
:10001000232803308D00DF300F2003288D01E83EB8
:100020008C008D09FC30031C18288C070318152838
:100030008C0764008D0F15280C181E288C1C222894
:1000400000002228080083130313831264000800B1
:100050000130A600831686130614861483128613B5
:1000600083168613831226080120861783168613AB
:10007000831226081E3C9E000030031CFF3E9F009A
:100080001F088F001E080220640006184828A60AD0
:10009000640086184C28A60364001F302602031C47
:1000A00053281E30A60064000130260203185A2887
:0A00B0000130A6002F2863005B2832
:02400E00F13F80
Otpornik R4 dimenzionisati prema vrsti LED diode po formuli R=(Uvcc-Ud)/Id
gdje su:
R = otpor u omima,
Uvcc = napon napajanja u Voltima
Ud = radni napon Led diode ( zavisno od vrste a najcesce je 1,7V)
Id = maksimalna struja kroz diodu ( i PIC ne smije biti veca od 0,02A) Ne preporucujem manji od 180 Oma za Uvcc od 5 V.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

Odlicno, ovo se moze iskoristiti i za sijalicu uz jedan tranzistor...
Branez
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 457
Joined: 22-04-2008, 16:27
Location: Maribor(SLO) Koprivnica(HR)
Contact:

Re: radovi forumasa sa ubrzanog kursa pbp

Post by Branez »

Pedja, jesi vidio šta rade tvoji učenici! Image
Real Radios Glow in the Dark!
User avatar
niho
Pravi forumaš
Pravi forumaš
Posts: 1895
Joined: 24-09-2009, 17:26
Location: Brcko, Bosnia and Herzegovina

Re: radovi forumasa sa ubrzanog kursa pbp

Post by niho »

To se zove djak hehe, nisam zelio dalje "komplikovati", ostalo neka bude stvar maste svakog pojedinca :)
Jasno da moze ici tranzistor pa neka sijalica ili tranzistor i niz ledica, optokopler pa SRC i sijalica ili motor..
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: radovi forumasa sa ubrzanog kursa pbp

Post by VFDisplay »

evo da se i ja malo nadovežem s ovim PWM
dakle ovo sam napravio prije 2 tjedna (da ne ispadne da sam te kopirao,makar znam da niste takvi licemjeri)
dakle evo primjera kako da se taj "postotak" jačine osvjetljenja prikaže na LCD-u

Code: Select all

define osc 10
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0 
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 3
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 5 
DEFINE LCD_LINES 2
pause 500
pwmr var word
pwmr = 0
pwmrw var word
start:
if portb.2 = 1 then
pwmr = pwmr + 1
pause 80
endif
pwm portb.4,pwmr,1
pwmrw = pwmr
lcdout $fe,1,"Razina:",dec2 pwmrw,"%"
goto start
samo jedna napomna:ovdje gdje piše pause 80 povećati/smanjiti po voljijer zbog same brzine pojačavanja/smanjivanja i zbog treptanja lcd-a

EDIT:Super odrađeno @niho!
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

@Branez, vidim, i drago mi je stro nije sve ono uzalud kucano.
@niho samo tako nastavi.
@ VFDisplay svaka cast.
User avatar
niho
Pravi forumaš
Pravi forumaš
Posts: 1895
Joined: 24-09-2009, 17:26
Location: Brcko, Bosnia and Herzegovina

Re: radovi forumasa sa ubrzanog kursa pbp

Post by niho »

@VF_display, Hvala, mada kad sam testirao program, pauza vec preko 40ms se moze vidjeti kao treperenje pa sam zato smanjio na 30, i vjeruj da radi odlicno!
User avatar
niho
Pravi forumaš
Pravi forumaš
Posts: 1895
Joined: 24-09-2009, 17:26
Location: Brcko, Bosnia and Herzegovina

Re: radovi forumasa sa ubrzanog kursa pbp

Post by niho »

@pedja089 Kako uzalud, ovo je bio jedan od najboljih kurseva koje sam pratio do sada, ne znam cime se bavite u zivotu ali kao prosvjetni radnik ( sa 26 godina staza u nastavi) mogu Vam reci da ste jako dobro osmislili kurs i pedagoski i metodicki pravilno odradili, zato i imate rezultate i dobre ucenike :)
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

Ja sam trenutno student druge godine mehatronike.
To je pisano pre nego sto sam krenuo na fakultet.
Kad sam krenuo onda sam stao sa pisanjem jer nisam imao internet u stanu.
Hvala na pohvalama :)
Edit:
Za to je najvise zasluzan @vbmaster, hvala i njemu :!:
Post Reply