Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

PIC 12F675
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Tlouk
Neregistrovaný





PříspěvekZaslal: ne březen 04 2007, 15:24    Předmět: PIC 12F675 Citovat

Zdravím,začínám s tímto procesorem a zajímalo by mě,jestli je možné PIC zničit programově (když napíšu špatně program) ?
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.
Návrat nahoru
tatous



Založen: Sep 06, 2004
Příspěvky: 122
Bydliště: Střední Čechy

PříspěvekZaslal: ne březen 04 2007, 17:52    Předmět: Citovat

Na obě otázky zní odpověď ne. Zničit procesor můžeš mimo jiné špatným programováním ve špatném programátoru, přepětím, ale ne programem.
Program se může "zakousnout", ale neničí. LED při proudu 5mA také port neodpálí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Tlouk
Neregistrovaný





PříspěvekZaslal: ne březen 04 2007, 21:47    Předmět: Citovat

Programoval jsem to programátorem PRESTO.Program jsem několikrát mazal a znovu programoval,na pohled to fungovalo dobře.Program měl blikat (po 1s) s LED.LEDka (5mA) s odporem byla zapojena mezi GP0 a GND.Programově jsem nastavil všechny registry TRISIO=0. Po zapnutí napájení se LEDka rozsvítila na jednu sekundu a zhasla a už se nerozsvítila.Vynadal jsem procesor a chtěl program smazat,nebo znovu naprogramovat a program hlásil nějakou chybu (prostě to nešlo).
V čem by mohl být problém,nebo kde jsem udělal chybu ?
Návrat nahoru
nop
Neregistrovaný





PříspěvekZaslal: ne březen 04 2007, 22:07    Předmět: Citovat

je to jen tip,ale máš vypnutý nebo ošetřený watchdog?
Návrat nahoru
Tlouk
Neregistrovaný





PříspěvekZaslal: ne březen 04 2007, 22:12    Předmět: Citovat

watchdog mám vypnutý
Návrat nahoru
nevim
Neregistrovaný





PříspěvekZaslal: ne březen 04 2007, 22:15    Předmět: Citovat

zkus sem poslat program..
Návrat nahoru
Tlouk
Neregistrovaný





PříspěvekZaslal: ne březen 04 2007, 22:26    Předmět: Citovat

Je to psaný v mikropascalu a je to example k PIC 12F675.
V projectu jsou zaškrtnuta tato nastavení WDT_OFF,INTRC_OSC_NOCLKOUT
Program:
kód:

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.
Návrat nahoru
Tlouk
Neregistrovaný





PříspěvekZaslal: ne březen 04 2007, 22:41    Předmět: Citovat

Takhle vypadá kód assembleru při disaaemblerování
kód:


; 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:

:100000000428FF3FFF3FFF3F031383168501FF30A6
:10001000831285000630DC00FF30DB00FF30DA00A1
:10002000DC0B13281A28DB0B16281928DA0B1628E4
:10003000132810281A30DB00FF30DA00DB0B2128F0
:100040002428DA0B21281E284230DA00DA0B262871
:1000500085010630DC00FF30DB00FF30DA00DC0B0E
:1000600032283928DB0B35283828DA0B3528322896
:100070002F281A30DB00FF30DA00DB0B4028432842
:10008000DA0B40283D284230DA00DA0B45280728F1
:100090004828FF3FFF3FFF3FFF3FFF3FFF3FFF3F3E
:02400E00F43F7D
:00000001FF
Návrat nahoru
tatous



Založen: Sep 06, 2004
Příspěvky: 122
Bydliště: Střední Čechy

PříspěvekZaslal: po březen 05 2007, 5:59    Předmět: Citovat

Máš vypnuté komparátory a nastaveny porty na digit I/O? Nikde jsem to neobjevil, jak v .asm , tak v disasembl. hexu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
ViPali



Založen: Nov 21, 2005
Příspěvky: 524
Bydliště: Bratislava

PříspěvekZaslal: po březen 05 2007, 9:24    Předmět: Citovat

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?

_________________
Ako elektrikár sa cítim slobodne.
Môžem hovoriť do vedenia!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nop
Neregistrovaný





PříspěvekZaslal: po březen 05 2007, 10:30    Předmět: Citovat

taky by se měl někde nastavovat registr ANSEL kterým nastavuješ jetli port bude jako analogový nebo digitální IO
Návrat nahoru
tatous



Založen: Sep 06, 2004
Příspěvky: 122
Bydliště: Střední Čechy

PříspěvekZaslal: po březen 05 2007, 12:40    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Tlouk
Neregistrovaný





PříspěvekZaslal: po březen 05 2007, 17:22    Předmět: Citovat

tatous napsal(a):
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 napsal(a):

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 napsal(a):

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 napsal(a):
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.
Návrat nahoru
Tlouk
Neregistrovaný





PříspěvekZaslal: po březen 05 2007, 17:29    Předmět: Citovat

Jakou hodnotu má mít ANSEL (pro oba stavy)?
Díky
Návrat nahoru
tatous



Založen: Sep 06, 2004
Příspěvky: 122
Bydliště: Střední Čechy

PříspěvekZaslal: po březen 05 2007, 18:48    Předmět: Citovat

V mikroC je u 675 nutné vypnout komparátory. Pokud nastavíš všechny porty v TRISGPIO jako výstupní, kompilátor ví, že analogový výstup je blbost a nastaví vše jako digitální. Potom není nutno nastavovat ANSEL. Pokud je to ale potřeba, tak vstup se nastavuje na nejnižších čtyřech bitech ANSEL (Banka1), ANS0 až ANS3 a to, 0-digit, 1-analog, pro AN0 až AN3. I/O se nastavuje v TRISGPIO. Nakonec vše je v Data Sheetu.
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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.17 sekund