 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.35
|
Objavljeno: Ned Dec 13, 2009 3:45 pm Naslov sporočila: |
|
|
ljudsko je napisal/a: |
- Je potrebno kaj posebej nastavljati, če preneseš že prevedeno .hex datoteko iz interneta, preden to zapišeš na mikrokrmilnik in sestaviš vezje?
- Ali sestavljam vezje narobe?
- Ali sem neumen?
- Ali je čip neumen?
- Ali me ima čip za norca? |
- fuse bite je treba nastavit, če že niso v hex
- možno
- možno
- možno
- možno
Težko je brez magične krogle povedat, kaj je narobe. Lahko je milion stvari, zelo verjetno kaka banalnost.
Mogoče bi za začetek vzel kak PIC z internim oscilatorjem, da odstraniš vsaj enega potencialnega kandidata za nedelovanje...
_________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
Branez Moderator


Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7831 Aktiv.: 32.96 Kraj: Koprivnica HR
|
Objavljeno: Ned Dec 13, 2009 3:54 pm Naslov sporočila: |
|
|
gumby je napisal/a: |
- fuse bite je treba nastavit, če že niso v hex
- možno
- možno
- možno
- možno
................... |
_________________ The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!
Albert Einstein |
|
Nazaj na vrh |
|
 |
ljudsko Član


Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 5.63 Kraj: Koroška-Mežica
|
Objavljeno: Ned Dec 13, 2009 5:01 pm Naslov sporočila: |
|
|
Poskusil sem z 12f675. Program:
Koda: |
;-----------------------
;multivibrator z 12f675
;-----------------------
list P=12f675
#INCLUDE "C:\ASM\P12F675.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _CP_OFF & _MCLRE_ON & _BODEN_OFF
org 0x0 ;Reset vektor
stevec1 equ 0x20
stevec2 equ 0x21
stevec3 equ 0x22
stevec4 equ 0x23 ;Spremenljivke
goto GLAVNI
org 0x4 ;Interrupt vektor
goto PAVZA
PAVZA
movlw .255
movwf stevec1
movwf stevec2
movlw .5
movwf stevec3
movwf stevec4
ZANKA
decfsz stevec1,f
goto ZANKA
decfsz stevec2,f
goto ZANKA
decfsz stevec3,f
goto ZANKA
decfsz stevec4,f
goto ZANKA ;255*255*5*5
return
GLAVNI
bsf STATUS,RP0 ;Banka 1
clrf ANSEL ;Digitalni I/O
clrf TRISIO ;Vsi pini izhodi
bcf STATUS,RP0 ;Banka 0
clrf CMCON ;Digitalni I/O
clrf GPIO ;Vsi pini na 0
bsf GPIO,0 ;GP0 visok
call PAVZA ;Zakasnitev
bcf GPIO,0 ;GP0 nizek
bsf GPIO,1 ;GP1 visok
call PAVZA ;Zakasnitev
goto GLAVNI ;Neskončna zanka
end
|
Kaj počnem narobe?
Morda vse deluje, le zanke so prekratke, da bi videl utripanje??
Popravljam: Pin 4 (MCLR) sem vezal na +, sedaj mi sveti LED, ki je vezana na GP0. Hm..en korak bližje sem.
_________________ return;
brake;
Nazadnje urejal/a ljudsko Ned Dec 13, 2009 5:21 pm; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
 |
Branez Moderator


Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7831 Aktiv.: 32.96 Kraj: Koprivnica HR
|
Objavljeno: Ned Dec 13, 2009 5:03 pm Naslov sporočila: |
|
|
Shema?
_________________ The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!
Albert Einstein |
|
Nazaj na vrh |
|
 |
ljudsko Član


Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 5.63 Kraj: Koroška-Mežica
|
Objavljeno: Ned Dec 13, 2009 5:17 pm Naslov sporočila: |
|
|
Shema:
EDIT: Program dela Zanka je bila predolga. 255*255*5*5. Sedaj je samo 255*255.
V filmčku se ne vidi ok, ker mi telefon ni posnel lepo. Zgleda, da ni ujel frekvence. Drugače lepo deluje.
Opis: |
|
 Download |
Ime datoteke: |
shema.pdf |
Velikost datoteke: |
10.44 KB |
Downloadano: |
28 krat |
Opis: |
|
 Download |
Ime datoteke: |
SNC00017.zip |
Velikost datoteke: |
734.81 KB |
Downloadano: |
11 krat |
_________________ return;
brake;
Nazadnje urejal/a ljudsko Ned Dec 13, 2009 5:38 pm; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
 |
NUFAN Član


Pridružen-a: Pon 05 Apr 2004 21:39 Prispevkov: 947 Aktiv.: 3.99 Kraj: Žalec
|
Objavljeno: Ned Dec 13, 2009 5:32 pm Naslov sporočila: |
|
|
A ti omejuješ tok v GND ? Upora R1 in R2 veži pred ledico.
_________________ Roke spadajo k telesu, ne k delu. |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.22 Kraj: Ljubljana
|
Objavljeno: Ned Dec 13, 2009 9:44 pm Naslov sporočila: |
|
|
NUFAN je napisal/a: |
A ti omejuješ tok v GND ? Upora R1 in R2 veži pred ledico. |
Tok bo enak v vsakem primeru, ne glede na to kje se nahaja upor, kajne
Torej je tvoja izjava trapasta... (ni žaljitev, komentiram izjavo)
|
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.35
|
Objavljeno: Ned Dec 13, 2009 9:45 pm Naslov sporočila: |
|
|
ljudsko:
- Pri 12F675 se načeloma najprej naredi kalibracija internega oscilatorja. To sicer ni življensko pomembno, je pa dobra praksa. Poglej v datasheet, kaj in kako (9.2.5.1 Calibrating the Internal Oscillator)
-
Koda: |
clrf CMCON ;Digitalni I/O |
Si prepričan v to? Poglej v datasheet, kako se ugasnejo komparatorji (6.2 Comparator Configuration)
Koda: |
org 0x4 ;Interrupt vektor
goto PAVZA |
Tole nima ravno nekega smisla. Če že ciljaš na prekinitev, ki se ne bi smela zgodit, je tam na mestu edino kak RETFIE. Ampak tudi ta sam po sebi ne bo pomagal, ker prekinitev ne bo ustrezno obdelana (in se bo takoj znova sprožila).
Sicer pa vsak reset pobriše GIE bit, torej se prekinitve ne bodo dogajale, dokler jih ne omogočiš.
Samo ideja za zakasnitve:
Koda: |
; 4MHz clock
cblock 0x20
delay_T1,delay_T2,delay_T3
endc
delay_Xms
movwf delay_T3
call delay_1ms
decfsz delay_T3,f
goto $-2
return
delay_1ms
movlw .2
movwf delay_T1
movlw .73
movwf delay_T2
decfsz delay_T2,f
goto $-1
decfsz delay_T1,f
goto $-3
nop
nop
return
|
Za recimo 200ms daš vrednost 200 v W in pokličeš delay_Xms
Koda: |
goto GLAVNI ;Neskončna zanka |
Tule raje skoči na začetek zanke, ne rabiš vsakič inicializacije delat
_________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
ljudsko Član


Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 5.63 Kraj: Koroška-Mežica
|
Objavljeno: Pon Dec 14, 2009 5:55 pm Naslov sporočila: |
|
|
Malo sem spremenil program. Zanko sem podaljšal, vsaka ledica utripne dvakrat. Gumpy, je zdaj ok? Ker sem opazil, ko vezje izključim in ga vklopim nazaj, moram kontroler malo umakniti iz protoboarda in ga vstaviti nazaj zelo rahlo, potem pa do konca . Je to, kot neko resetiranje? In enkrat se mi je zdaj zgodilo, da je utripalo počasneje, kot mora. Ko sem ga resetiral, je bilo ok. Je to povezano z kalibracijo, o kateri si govoril?
Program:
Koda: |
;-----------------------
;multivibrator z 12f675
;-----------------------
list P=12f675
#INCLUDE "C:\ASM\P12F675.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _CP_OFF & _MCLRE_ON & _BODEN_OFF
org 0x0 ;Reset vektor
stevec1 equ 0x20
stevec2 equ 0x21
stevec3 equ 0x22 ;Spremenljivke
goto GLAVNI
;------------------------
;ZAKASNITEV
;------------------------
PAVZA
movlw .255
movwf stevec1
movwf stevec2
movlw .2
movwf stevec3
ZANKA
decfsz stevec1,f
goto ZANKA
decfsz stevec2,f
goto ZANKA
decfsz stevec3,f
goto ZANKA
return
;------------------------
;GLAVNI PROGRAM
;------------------------
GLAVNI
bsf STATUS,RP0 ;Banka 1
call 0x3ff ;Get the cal value
movwf OSCCAL ;Calibrate
clrf ANSEL ;Digitalni I/O
clrf TRISIO ;Vsi pini izhodi
bcf STATUS,RP0 ;Banka 0
clrf CMCON
G_ZANKA
clrf GPIO ;Vsi pini na 0
;--------------------------------
bsf GPIO,0 ;GP0 prvic na 1
call PAVZA ;prva zakasnitev
bcf GPIO,0 ;GP0 na 0
call PAVZA ;druga zakasnitev
bsf GPIO,0 ;GP0 drugic na 1
call PAVZA ;tretja zakasnitev
bcf GPIO,0 ;GP0 na 0
;--------------------------------
bsf GPIO,1 ;GP1 prvic na 1
call PAVZA ;prva zakasnitev
bcf GPIO,1 ;GP1 na 0
call PAVZA ;druga zakasnitev
bsf GPIO,1 ;GP1 drugic na 1
call PAVZA ;treta zakasnitev
bcf GPIO,1 ;GP1 na 0
goto G_ZANKA ;Neskončna zanka
end
|
_________________ return;
brake; |
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.35
|
Objavljeno: Pon Dec 14, 2009 6:17 pm Naslov sporočila: |
|
|
Kalibrira se lahko kak % ali dva, torej tega ne bi smel zaznati "na oko". Očitno nekaj drugega nagaja, verjetno slabi kontakti...
Koliko je sploh vrednost upora R3?
btw komparator še vedno nimaš ugasnjen
_________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
ljudsko Član


Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 5.63 Kraj: Koroška-Mežica
|
Objavljeno: Pon Dec 14, 2009 6:24 pm Naslov sporočila: |
|
|
gumby je napisal/a: |
Kalibrira se lahko kak % ali dva, torej tega ne bi smel zaznati "na oko". Očitno nekaj drugega nagaja, verjetno slabi kontakti...
Koliko je sploh vrednost upora R3? |
Vsi upori so 300
gumby je napisal/a: |
btw komparator še vedno nimaš ugasnjen |
Lahko to storim tako?
Koda: |
bcf STATUS,RP0 ;Banka 0
movlw .7
movwf CMCON ;Izklop komparatorjev
|
_________________ return;
brake; |
|
Nazaj na vrh |
|
 |
dkone Član

Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2116 Aktiv.: 9.48 Kraj: Krško
|
Objavljeno: Tor Dec 15, 2009 10:42 am Naslov sporočila: |
|
|
igo je napisal/a: |
Ja pa kako vam uspe kaj takega?
Koda: |
org 0x0 ;Reset vektor ; ORG naslove se vedno piše v obliki 0x0000 ... 0xFFFF !
stevec1 equ 0x20 ; tole spada v CBLOCK!!!
stevec2 equ 0x21
stevec3 equ 0x22 ;Spremenljivke
goto GLAVNI ; Tole spada na org 0x0004 |
Takole naj bi si sledili deli programa:
- definicija registrov ali "include"
- konfiguracijska beseda
- definicija imen pinov in raznih zastavic
- vrednosti raznih konstant
- blok spremenljivk, ki se začne na nekem naslovu v RAMu (pri npr. 16F876A na 0x20)
- org 0x0000
- goto pNastavi ; podprogram, ki nastavi vse potrebno za zagon
- org 0x0004
- goto pPrek ; podprogram prekinitev
- podprogrami
Koda: |
__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC & _BODEN_OFF & _LVP_OFF ; & _CP_ALL ;
#define vPrek PORTB,0 ; Vhod Prekinitve
#define lcdLuc PORTB,1 ; osvetlitev lcd
#define lcdRS PORTB,2 ; RS od LCD
#define lcdE PORTB,3 ; E od LCD
#define D4 PORTB,4 ; PINI D4- D7 LCD-ja
#define D5 PORTB,5
#define D6 PORTB,6
#define D7 PORTB,7
#define zPavKon Zastave,0 ; Pavza končana
#define zNov01Cas Zastave,1 ; Postavi vsako 0,1 sekunde
#define zNov10Cas Zastave,2 ; Postavi vsako 1,0 sekundo
kABCD EQU .3 ; Konstanta za pavzo ...
kEFGH EQU .4 ; Konstanta ponovitev zanke ...
kIJKL EQU .50 ; Konstanta za ADC primerjavo ...
CBLOCK 0X20 ; blok spremenljivk
kopiw ; kopija W registra
kopis ; kopija STATUS registra
kopip ; kopija PCLATH registra
Zastave ; zastavice
stevec1
...
endc
ORG 0x0000
goto pNastavi
ORG 0x0004
goto pPrekin
pPrekin ; sem pride v primeru prekinitve
...
retfie
pNastavi ;
.... tu nastaviš OPTION_REG, TRIS_, INTCON, ADC, ... in vpišeš začetne vrednosti spremenljivk
... (nekateri to začuda imenujejo GLAVNI, čeprav nima s tem nobene zveze)
GlavnaZ ; Glavna Zanka programa
... sem spraviš vse, kar naj bi program počel. V glavnem klicanje podprogramov.
call pLedNa1
call pPavza
call pLedNa0
call pPavza
goto GlavnaZ
; Podprogrami
pPavza ;podprogram za Pavzo
...
return
pLedNa1 ; vklopi Led
...
return
pLedNa0 ; izklopi Led
...
return
end ; konec
|
Poglejte si zgradbe programov tukaj:
http://www.sprut.de/electronic/pic/programm/blink_10f/blink_10f.html
http://www.sprut.de/electronic/pic/programm/index.htm
Ali pa tukaj:
http://www.svet-el.si/download/PICprogrami.zip
http://www.svet-el.si/download/PICnaloga.zip
in upoštevajte imena
GlavnaZ, zZastavice, pPodprogrami, kKonstante ... pa boste ves čas vedeli,
da je kStevec1 konstanta, ki se vpiše v spremenljivko Stevec1, to se zgodi na začetku podprograma pPavza, nato se kStevec1-krat ponovi zanka pPavzaZ, na koncu pa se uspešno postavi zastavica zPavKon.
LP,
Igor |
_________________ Denis |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.42 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Tor Dec 15, 2009 11:17 am Naslov sporočila: |
|
|
Še vedno ne razumem zakaj umetno podaljšujete izvajanje prekinitve za 2 cikla brez potrbe z GOTO stavkom.
|
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.35
|
Objavljeno: Tor Dec 15, 2009 1:04 pm Naslov sporočila: |
|
|
mucek4 je napisal/a: |
Še vedno ne razumem zakaj umetno podaljšujete izvajanje prekinitve za 2 cikla brez potrbe z GOTO stavkom. |
Žrtev bogovom strukturiranosti.
_________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14679 Aktiv.: 61.78
|
Objavljeno: Tor Dec 15, 2009 1:44 pm Naslov sporočila: |
|
|
Dejstvo je, da z spornim GOTO ni nič narobe razen tega, da pokuri dva ciklusa. Kot sem že napisal - osebno prekinitvene rutine vedno tako pišem. Za lokacijo 0x04 pa postavljam rutine, ki se morajo izvajati na eni strani - recimo tabele. Seveda se tabele lahko postavljajo tudi drugam. Dejstvo pa je, da so le te običajno tiste, katere dostikrat spreminjamo. Tako imam istočasno vse take rutine v glavi programa. Mikrochip je z načinom prekinitve itak precej zasral. Vse prekinitve namreč letijo na 0x04 potem pa je potrebno ugotavljat katera se je zgodila. Spet se pokurijo vsaj 3 ukazni ciklusi. (btfsc, goto) Precej bolj "pametno" je zadevo rečil AVR, kjer ima vsaka prekinitev svoj prekinitveni vektor. Tam pa si prisiljen pisati na tak način.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
|
|
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: 11 dni
Powered by phpBB © 2001, 2005 phpBB Group
|