Stránka 1 z 2

PIC16F648A - tlacitko

Napsal: 07 srp 2012, 20:17
od mbrazdil
Zdravim Vas,

po delsi odmlce jsem si opet sedl k programovani MCU. Chtel jsem si udelat uplne jednoduchy priklad s PICem 16F648A a rozihani diody pomoci tlacitka. Mam naprogramovane toto:


Kód: Vybrat vše

#include <htc.h>

#define _XTAL_FREQ 4000000

#define b RB0
#define o RB1

// Fuse bity
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & BOREN_OFF & LVP_OFF & CPD_OFF & CP_OFF);

// inicializace
void init() {
   TRISB0 = 1; // vstup
   TRISB1 = 0; // vystup
   RB1 = 0;
}

// hlavni program
void main() {
   init(); // inicializace

   while (1) {
      if (b) {
         o = 1;         
      } else {
         o = 0;
      }
   }
}


a schematem viz. obrazek. Problem je v tom, ze po zapojeni se mi hned od zacatku rosviti ledka, ktera se ma rozviti pouze kdyz drzim tlacitko, nevite v cem je hacek?

Napsal: 07 srp 2012, 20:38
od WLAB
Neni tlacitko rozpinaci?
Nejsem PICar, takze muzu rici jen to, ze obecne v kodu problem nevidim.

Napsal: 07 srp 2012, 20:50
od mbrazdil
Neni, mam to i promerene, je to mikrospinac ...

Napsal: 07 srp 2012, 20:52
od mbrazdil
Nebo jinak, tlacitka se pripojuji jen na digitalni porty?

Napsal: 07 srp 2012, 20:57
od monterjirka
Co to je za procesor 648? "Umí" interní hodiny"?
Co překladač a simulátor? Tam se toho u tak jednoduchého prográmku dá vysledovat...

Napsal: 07 srp 2012, 20:58
od Andrea
Třeba tě ta LEDka nemá ráda za to, že jsi jí nedal odpor.

Napsal: 07 srp 2012, 21:07
od WLAB
Tak over jestli mas ty porty dobre nakonfigurovane...

Andrea: to by vypadalo spis na to, ze ho nema rad ten PIC, kdyz to sviti furt...

Taky si dovedu predstavit treba to, ze pokud to jede z nejakeho mekkeho, ci spatne blokovaneho, zdroje, tak po eventuelnim sepnuti LEDky nekdy pri inicializaci klesne napeti, cele se to restartuje a tak dokola...

Napsal: 07 srp 2012, 21:23
od mbrazdil
to Andrea: ta ledka odpor nepotrebuje, sice sviti vice, ale vydrzi to ;) resp. musi ;)

Jinak to napajim z jednoclankove Lipolky tzv. napeti cca. 3.7 V, ale v tom problem byt nemel pac tento druh baterie je dostatecne tvrdy a navic tento PIC umi jet od 2 V

Napsal: 07 srp 2012, 21:44
od Andrea
mbrazdil píše:to Andrea: ta ledka odpor nepotrebuje, sice sviti vice, ale vydrzi to ;) resp. musi ;)

Tomu se říká prasárna, to si mrkej jak chceš.

Napsal: 07 srp 2012, 21:57
od mbrazdil
prasarna to je, to vim, ale to neni ten duvod proc porad sviti ...

Napsal: 07 srp 2012, 22:00
od Andrea
A když napíšeš smyčku na blikání, bez čtení tlačítka, tak bliká? Nebo když prohodíš ty příkazy v if a else, zhasne?

Napsal: 07 srp 2012, 22:34
od Hydrawerk
Životnost ledky klesne ze 100 000 hodin na 5 (?) hodin, řekl bych. Kup jí raději rezistor.

Napsal: 08 srp 2012, 07:57
od monterjirka
Hydrawerk píše:Životnost ledky klesne ze 100 000 hodin na 5 (?) hodin, řekl bych. Kup jí raději rezistor.

Procesor má výstupní proud omezený, LEDce to nevadí, spíše u více LED (více použitých výstupů) to zatěžuje procesor a zvyšuje jeho teplotu.
------------------
Máš správně ošetřený RESET? Já tenhle procesor neznám, ale 16F84 by takhle "nechodila".

Napsal: 08 srp 2012, 08:21
od Andrea
Procesor má výstupní proud omezený jen vlastnostmi (odporem) koncových tranzistorů, nemá žádné dodatečné proudové omezení s jasně garantovanou hodnotou. Výstupním odporem je z principu omezený každý reálný zdroj napětí i třeba zásuvka 230V, ale odebíraný proud se musí omezit nějak z vnějšku tak, aby nebyla překročená max. hodnota, kterou ten zdroj (a případně i zátěž) snese bez poškození (u mikroporcesoru jsou ta maxima v datašítu, PIC má psáno 25mA).
Prostě připojit LED na push-pull výstup procesoru bez omezovacího odporu je prasárna ať si to někdo okecává jak chce.

Napsal: 08 srp 2012, 09:04
od Atlan
Ak to napajas z baterky a nemas napajanie osetrene keramikou a elektrolitom, tak skoda badat dalej, navyse ta bezodporova ledka to este zhorsuje. Najprv too daj doporiadku a potom to budeme riesit, odpor na ledku, 100 n + 10uF na napajacie nozicky uP.