PIC 12F675
Moderátor: Moderátoři
-
Tlouk
PIC 12F675
Na co si dát případně pozor ?
V datashetu píšou že je max.zatížitelnost GP 25mA,je možné aby se zničil po připojení LEDky (5mA) s odporem ?
Díky.
-
Tlouk
V čem by mohl být problém,nebo kde jsem udělal chybu ?
-
Tlouk
V projectu jsou zaškrtnuta tato nastavení WDT_OFF,INTRC_OSC_NOCLKOUT
Program:
Kód: Vybrat vše
program led_blinking;
begin
TRISIO := 0; // configure pins of gpio as output
while true do
begin
GPIO := $FF; // turn ON diodes on gpio
delay_ms(1000); // wait for 1 second
GPIO := $00; // turn OFF diodes on gpio
delay_ms(1000); // wait for 1 second
end;
end.-
Tlouk
Kód: Vybrat vše
; ADDRESS OPCODE ASM
; ----------------------------------------------
$0000 $2804 GOTO _main
$0004 $ _main:
;led_blinking.ppas,21 :: program led_blinking;
;led_blinking.ppas,25 :: TRISIO := 0; // configure pins of gpio as output
$0004 $1303 BCF STATUS, RP1
$0005 $1683 BSF STATUS, RP0
$0006 $0185 CLRF TRISIO, 1
;led_blinking.ppas,27 :: while true do
$0007 $ led_blinking_L_2:
;led_blinking.ppas,29 :: GPIO := $FF; // turn ON diodes on gpio
$0007 $30FF MOVLW 255
$0008 $1283 BCF STATUS, RP0
$0009 $0085 MOVWF GPIO
;led_blinking.ppas,30 :: delay_ms(1000); // wait for 1 second
$000A $3006 MOVLW 6
$000B $00DC MOVWF STACK_12
$000C $30FF MOVLW 255
$000D $00DB MOVWF STACK_11
$000E $30FF MOVLW 255
$000F $00DA MOVWF STACK_10
$0010 $0BDC DECFSZ STACK_12, F
$0011 $2813 GOTO $+2
$0012 $281A GOTO $+8
$0013 $0BDB DECFSZ STACK_11, F
$0014 $2816 GOTO $+2
$0015 $2819 GOTO $+4
$0016 $0BDA DECFSZ STACK_10, F
$0017 $2816 GOTO $-1
$0018 $2813 GOTO $-5
$0019 $2810 GOTO $-9
$001A $301A MOVLW 26
$001B $00DB MOVWF STACK_11
$001C $30FF MOVLW 255
$001D $00DA MOVWF STACK_10
$001E $0BDB DECFSZ STACK_11, F
$001F $2821 GOTO $+2
$0020 $2824 GOTO $+4
$0021 $0BDA DECFSZ STACK_10, F
$0022 $2821 GOTO $-1
$0023 $281E GOTO $-5
$0024 $3042 MOVLW 66
$0025 $00DA MOVWF STACK_10
$0026 $0BDA DECFSZ STACK_10, F
$0027 $2826 GOTO $-1
;led_blinking.ppas,31 :: GPIO := $00; // turn OFF diodes on gpio
$0028 $0185 CLRF GPIO, 1
;led_blinking.ppas,32 :: delay_ms(1000); // wait for 1 second
$0029 $3006 MOVLW 6
$002A $00DC MOVWF STACK_12
$002B $30FF MOVLW 255
$002C $00DB MOVWF STACK_11
$002D $30FF MOVLW 255
$002E $00DA MOVWF STACK_10
$002F $0BDC DECFSZ STACK_12, F
$0030 $2832 GOTO $+2
$0031 $2839 GOTO $+8
$0032 $0BDB DECFSZ STACK_11, F
$0033 $2835 GOTO $+2
$0034 $2838 GOTO $+4
$0035 $0BDA DECFSZ STACK_10, F
$0036 $2835 GOTO $-1
$0037 $2832 GOTO $-5
$0038 $282F GOTO $-9
$0039 $301A MOVLW 26
$003A $00DB MOVWF STACK_11
$003B $30FF MOVLW 255
$003C $00DA MOVWF STACK_10
$003D $0BDB DECFSZ STACK_11, F
$003E $2840 GOTO $+2
$003F $2843 GOTO $+4
$0040 $0BDA DECFSZ STACK_10, F
$0041 $2840 GOTO $-1
$0042 $283D GOTO $-5
$0043 $3042 MOVLW 66
$0044 $00DA MOVWF STACK_10
$0045 $0BDA DECFSZ STACK_10, F
$0046 $2845 GOTO $-1
;led_blinking.ppas,33 :: end;
$0047 $2807 GOTO led_blinking_L_2
;led_blinking.ppas,34 :: end.
$0048 $2848 GOTO $
HEX soubor vypadá takhle:
Kód: Vybrat vše
:100000000428FF3FFF3FFF3F031383168501FF30A6
:10001000831285000630DC00FF30DB00FF30DA00A1
:10002000DC0B13281A28DB0B16281928DA0B1628E4
:10003000132810281A30DB00FF30DA00DB0B2128F0
:100040002428DA0B21281E284230DA00DA0B262871
:1000500085010630DC00FF30DB00FF30DA00DC0B0E
:1000600032283928DB0B35283828DA0B3528322896
:100070002F281A30DB00FF30DA00DB0B4028432842
:10008000DA0B40283D284230DA00DA0B45280728F1
:100090004828FF3FFF3FFF3FFF3FFF3FFF3FFF3F3E
:02400E00F43F7D
:00000001FF
1/ Keď som prvý krát programoval 675, tak sa správala nie celkom korektne, musel som programovo prednastaviť registre. Tabuľka stavov po zapnutí nemusí celkom platiť. Ale dal sa viackrát programovať.
2/ Keď si ho ťahal zo zapojenia, bolo vypnuté napätie, neodpálil si ho nejakým skratom?
Môžem hovoriť do vedenia!
-
nop
>Oscillator: Internal, 04.000 MHz< původně 8MHz
void main() {
> CMCON = 0x07< vložit
> TRISIO = 0; <
Pokud nemáš MCLR spojeno přes rezistor na +, nastav konfig.bit MCLR=0. Po kompilaci a naprogramování LED bliká v 1sec intervalech.
Vyzkoušeno na kontakt. poli. Pokud napíšeš e-mail, pošlu Ti všechny soubory, včetně kompilace.
-
Tlouk
tatous píše:Máš vypnuté komparátory a nastaveny porty na digit I/O? Nikde jsem to neobjevil, jak v .asm , tak v disasembl. hexu.
Asi ne. Program jsem vzal tak jak je v examples programu Mikropascal.
ViPali píše:Dve veci:
1/ Keď som prvý krát programoval 675, tak sa správala nie celkom korektne, musel som programovo prednastaviť registre. Tabuľka stavov po zapnutí nemusí celkom platiť. Ale dal sa viackrát programovať.
2/ Keď si ho ťahal zo zapojenia, bolo vypnuté napätie, neodpálil si ho nejakým skratom?
1) zajímavé ...,v manuálu píšou :
Mikropočítač je vybaven šesti univerzálními vývody. Jejich nastavení záleží na periferiích, které jsou pro zařízení povoleny.
Obecně platí, že jakmile je povoleno periferní zařízení, přiřazený vývod již nefunguje jako univerzálně použitelný vývod.
Chápal jsem to tak,že pokud se nastaví TRISIO := 0; není potřeba dál nic nastavovat.
2)Na sto procent ne.Napětí zdroje mám 5,1V ,snad to není moc.
nop píše:taky by se měl někde nastavovat registr ANSEL kterým nastavuješ jetli port bude jako analogový nebo digitální IO
Netuším ...,nikde jsem ho nenastavoval.
tatous píše:Přepiš v "led_blinking.c"
>Oscillator: Internal, 04.000 MHz< původně 8MHz
void main() {
> CMCON = 0x07< vložit
> TRISIO = 0; <
Pokud nemáš MCLR spojeno přes rezistor na +, nastav konfig.bit MCLR=0. Po kompilaci a naprogramování LED bliká v 1sec intervalech.
Vyzkoušeno na kontakt. poli. Pokud napíšeš e-mail, pošlu Ti všechny soubory, včetně kompilace.
Rezistor tam nemám,proč je tam třeba a jakej ?
Jestli můžeš ,pošli mi hlavně ty soubory na 904436430439324@tiscali.cz
Díky.
Pin MCLR slouží k resetování procesoru. Rezistor na MCLR může být v rozmezí 0 až 10k, já preferuji 4k7 - 10k. Pokud chceš použít někde MCLR jako vstup, připne se vnitřní rezistor tohoto pinu. Viz Data Sheet.
Zkompilované soubory jsem už odeslal na e-mail