www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Usposabljanje PIC12F675
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Sob Okt 06, 2007 4:04 pm    Naslov sporočila:  Usposabljanje PIC12F675 Odgovori s citatom

Pozdravljeni!

Pred kratkim sem se naučil programiranja mikrokotrolerjev. Prvi je bil 16F84A in z njim mi je uspelo nekaj preprostih programov (utripanje, semafor, potovanje 8 led, pa še vse to z dodanim stikalom, ki spremeni hitrost ali kaj drugega).

Potem pa sem kupil še PIC12F675, ker je fizično manjši. Takrat ko potrebuješ samo recimo en izhod in en vhod, ne boš zraven tlačil 18 pin mikrokontrolerja.

Do sedaj pa mi ni uspel še noben program na 12F675. Tukaj je en, ki sem ga sam napisal. Ne deluje, LED stalno gori. Povejte, če še kaj manjka:

Koda:
;bliskavica
;LED na izhodnem pinu RA0 utripa v razmakih

   #include   P12F675.inc
   __CONFIG   _WDT_OFF

;nastavi

STATUS   equ   0x03
TRISIO   equ   0x85
GPIO   equ   0x05
COUNT1   equ   0x11
COUNT2   equ   0x12

;nastavi izhode
   
   bsf   STATUS,RP0
   movlw   0x00
   movwf   TRISIO
   bcf   STATUS,RP0

;prižgi LED

Start   movlw   0x01
   movwf   GPIO

;dodaj pavzo

   call   Delay

;ugasni LED

   movlw   0x00
   movwf   GPIO

;dodaj pavzo
   
   call   Delay
   call   Delay
   call   Delay
   call   Delay
   call   Delay

;na začetek

   goto   Start

;pavza

Delay   movlw   0x50   ;vrednost med 0x00 in 0xFF, določa dolžino pavze
   movwf   COUNT1
   movlw   0x0d   ;vrednost med 0x00 in 0xFF, določa dolžino pavze
   movwf   COUNT2                  

Loop1   decfsz   COUNT1,1
   goto   Loop1
   decfsz   COUNT2,1
   goto   Loop1
   return
   end


Nastavitve pri MPLABu (v priponki).

Vezje je klasično - pozitivna napetost na pin1, pin4, negativna na pin8. Led je med pin7 in minusom.

Uporabljam Winpic800 in JDM programator. 16F84 sprogramira brez problema.



Nastavitve.jpg
 Opis:
 Velikost datoteke:  24.48 KB
 Pogledana:  7 krat

Nastavitve.jpg


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Okt 06, 2007 4:15 pm    Naslov sporočila:   Odgovori s citatom

Kako je z reset pinom?
Splošno namenski registri (ram) se začne na lokaciji 0x20. Ti napoveduješ dva registra Count1 in count2 na 0x11 ter 0x12 - tam ni nič.
(priporočam branje datasheta - file register map)

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Sob Okt 06, 2007 4:23 pm    Naslov sporočila:   Odgovori s citatom

Sem spremenil lokacijo in še enkrat naredil HEX datoteko. Sedaj tudi ne javi napake (prej je napisalo invalid RAM location).

Pin MCLR (pin4) je direkt vezan na +5 V. Ali naj dodam še upor in kondenzator? Bom poskusil - javim.

EDIT: Deluje! Hvala Silvo!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Okt 06, 2007 4:39 pm    Naslov sporočila:   Odgovori s citatom

TECHNIC je napisal/a:
Sem spremenil lokacijo in še enkrat naredil HEX datoteko. Sedaj tudi ne javi napake (prej je napisalo invalid RAM location).



Taka sporočila niso brez veze.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Sob Okt 06, 2007 4:42 pm    Naslov sporočila:   Odgovori s citatom

Vem, samo nisem vedel kaj točno pomenijo. Šele potem, ko sem prebral datasheet mi je bilo jasno.

Če v vezje dodam upor in kondenzator na pin4, deluje bolje.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
twom
Član
Član



Pridružen-a: Ned 26 Okt 2003 0:37
Prispevkov: 986
Aktiv.: 4.16
Kraj: Ljubljana

PrispevekObjavljeno: Sob Okt 06, 2007 10:26 pm    Naslov sporočila:   Odgovori s citatom

12F675 ima po defoltu vklopljene komparatorje in AD, tako da so pini definirani kot analogni in ne digitalni.

v banki 1
clrf ANSEL ; A/D module OFF

v banki 0
movlw b'00000111'
movwf CMCON ; comparator off


Lp,
Peter
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Ned Okt 07, 2007 10:15 am    Naslov sporočila:   Odgovori s citatom

Pozdravljeni spet!

Sedaj ko hočem v vezje dodati stikalo, zopet no go.

Kaj manjka? Utripanje deluje, stikalo pa nima vpliva.

Koda:
;utripanje LED s stikalom - vklop 2× upočasni delovanje
;LED je na GP1, stikalo na GP0 s pull-down uporom

   include      p12f675.inc
   __config   _INTRC_OSC_CLKOUT & _WDT_OFF

;nastavi konstante

STATUS   equ   0x03
TRISIO  equ   0x85
GPIO   equ   0x05
COUNT1   equ   0x20
COUNT2   equ   0x21

;nastavi izhode
   
   bsf   STATUS,5
   movlw   0x01
   movwf   TRISIO
        clrf        ANSEL
   bcf   STATUS,5

   movlw   0x6f
   movwf   CMCON

;prižgi LED

Start   movlw   0x02
   movwf   GPIO
 

;preveri če je stikalo vklopljeno

   BTFSC   GPIO,0
   call   Delay

;dodaj pavzo

   call   Delay

;ugasni LED

   movlw   0x00
   movwf   GPIO

;preveri če je stikalo še vedno vklopljeno

   BTFSC   GPIO,0
   call   Delay

;dodaj pavzo

        call   Delay

;pojdi na začetek

   goto   Start

;pavza

Delay   

Loop1   decfsz   COUNT1,1
   goto   Loop1
   decfsz   COUNT2,1
   goto   Loop1
   return

;konec programa

   end


EDIT: Se mi je zdelo, da sem nekaj pozabil. Popravek je že vnešen. Sedaj deluje ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Ned Okt 07, 2007 11:35 am    Naslov sporočila:   Odgovori s citatom

Hmm, kaj pa je sedaj to ... Confused Confused

Ko imam v programatorju PICa 12F675, mi pokaže Hardware is not responding. Ko pa dam PICa ven, pa zopet deluje. Ko ga dam zopet noter ... no response ... Ampak ko dam detect device, pa zazna PIC12F675.

Programiranje tudi ne gre.

ko imam noter PICa 16F84A, deluje vredu. tudi programiranje.

Ja, PICa sem ponesreči premaknil eno mesto navzdol (za eno luknjico), tokrat pa na programatorju.
Ali sem skuril PICa? Sad



Napaka.jpg
 Opis:
Napaka pri poskusu programiranja
 Velikost datoteke:  68.26 KB
 Pogledana:  6 krat

Napaka.jpg



Napaka2.jpg
 Opis:
PICa zazna, kljub temu, da ...
 Velikost datoteke:  40.79 KB
 Pogledana:  4 krat

Napaka2.jpg



Napaka3.jpg
 Opis:
... se hardware ne odziva.
 Velikost datoteke:  40.87 KB
 Pogledana:  3 krat

Napaka3.jpg



jdmprog.gif
 Opis:
Takole sem ga priklopil.
 Velikost datoteke:  29.57 KB
 Pogledana:  7 krat

jdmprog.gif


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Okt 07, 2007 12:42 pm    Naslov sporočila:   Odgovori s citatom

Ne, vrjetno ga nisi skuril. Težava je vključen interni oscilator, pa morebiti še izključen MCLR, zaradi katerega takoj potem, ko pic dobi napajanje v njem steče program. To zmede marsikateri programator. O tem je bilo že govora na forumu. Uporabi iskanje.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Ned Okt 07, 2007 1:32 pm    Naslov sporočila:   Odgovori s citatom

Sem malo pogledal po forumu, našel par primerov, da naj bi pobrisal mikrokontroler, vendar ne gre. Tudi če poskusim večkrat, lahko potem še vedno preberem vsebino (in točno tisto kar je bilo prej gor zapisano).

Baje so na internetu popravki, kateri lahko to odpravijo.

Torej mora biti v programu __CONFIG _MCLRE_ON ?

Našel sem pa tole:



Kateri MOSFET uporabit?

Pa še tiskanina:

http://users.tpg.com.au/btkelly/feng3_pcb.html
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.07
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Ned Okt 07, 2007 2:49 pm    Naslov sporočila:   Odgovori s citatom

Uporabi 2n7002. Stamp code na ohišju je 702. Je dokaj razširjen, tako da z dobavljivostjo ne bo problema.
_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
matjay
Član
Član



Pridružen-a: Pon 06 Dec 2004 22:07
Prispevkov: 537
Aktiv.: 2.27
Kraj: Ljubljana

PrispevekObjavljeno: Ned Okt 07, 2007 7:54 pm    Naslov sporočila:   Odgovori s citatom

S takim programatorjem sem se mučil pred časom. Problem je bilo napajanje in RS232 in je včasih delal , včasih ne.

LP
Matjay
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Pon Okt 08, 2007 2:34 pm    Naslov sporočila:   Odgovori s citatom

Bom vseeno poskusil. Stane me malo. Če dela original verzija JDM, potem je velika verjetnost, da bo tudi popravek ...

Imam še eno vprašanje:

Kako izvesti AD meritev?
Kaj je treba narediti, da vklopimo AD pretvornike?

Kaj je rezultat pri AD meritvi? Se te vrednost (1-255) zapiše v register?

Na internetu je veliko navodil za osnove programiranja PIC16F84 v assembelrju, za PIC12F675 pa ne toliko ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.58

PrispevekObjavljeno: Pon Okt 08, 2007 3:20 pm    Naslov sporočila:   Odgovori s citatom

Preberi datasheet (poglavje o A/D pretvorniku). Tam pise vse, kar te zanima, torej kako se vkljuci (oz. izkljuci v tvojem primeru) analogne vhode, kako nastavis parametre pretvorbe, kako pretvorbo zazenes in kje preberes rezultat.
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.46
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Tor Okt 09, 2007 6:31 am    Naslov sporočila:   Odgovori s citatom

Meni dela takole:

BANK1, BANK0 sta makroja za prestavljanje bank (Jaz sem eden od lenob, ki se jim ne ljubi pisat bcf STATUS,RP0 vsakič)

Koda dela na 12F675 in 12F683 inicializira AD in naredi pretvorbo. Ker sta registra z izhodnim podatkom (10 bit) v različnih bankah jih jaz premaknem v dne lokalni spremenljivki. Dokler časa traja AD pretvorba ne delam nič ampak čakam (pooling). Upam da je razumljivo.

Koda:
   IFDEF __12F675
    BANK1
    call 0x3ff
    movfw OSCCAL
    BANK0                     ; Inicialization
    ENDIF
   IFDEF __12F683
    BANK1
    movlw b'00010000'
    movwf OSCCON
    BANK0                     ; Inicialization
    ENDIF

   clrw                     ; clear w
   clrf GPIO                  ; Clear all ports

   BANK1
   IFDEF __12F675
   movlw b'00010001'            ; set conversion time Fosc/8 and enable AN0
   ENDIF
   IFDEF __12F683
   movlw b'00000001'            ; set conversion time Fosc/8 and enable AN0
   ENDIF
   movwf ANSEL

   movlw b'00001001'            ; GP0 & GP3 input
   movwf TRISIO               ;
   BANK0

   movlw b'00000111'            ; disable comparator module
   IFDEF __12F675
    movwf CMCON               ; to enable digital I/O
   ENDIF
   IFDEF __12F683
    movwf CMCON0               ; to enable digital I/O
   ENDIF

   movlw b'10000001'            ; enable AD, right justified, Vdd reference, channel AN0 and power on AD
   movwf ADCON0

;-------------------------------------------------

;make AD conversion

   bsf ADCON0, GO               ; Set go bit to start AD conversion
AD_WAIT
   btfsc ADCON0, GO            ; If AD operation is not compete
   goto AD_WAIT               ; we wait

   movf ADRESH, w               ; move AD result into TMP variables
   movwf TMP2                  ;
   BANK1
   movf ADRESL, w               ;
   BANK0
   movwf TMP1                  ;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 491 dni


Powered by phpBB © 2001, 2005 phpBB Group