Stránka 1 z 4

Pic 16f87-vstupní pin odebíra velký proud

Napsal: 24 úno 2015, 22:11
od ferda3
Zdravím,
mám zapojení dle obrázku
Obrázek.
VDD je +5V, v programu mám nastavený porty RB jako vstupní. Pokud takto připojím tlačítko na vstup RB0 prochází proud odporem 5mA (změřeno). Pokud jej ale připojím na RB1 tak proud vzroste na 50mA (změřeno). Zkoušel jsem i další vstupy RB (RB2, RB3 OK ale RB4, RB5 opět 50mA). Odpory jsou 10KΩ, přeměřeny. Vyzkoušel jsem i jiný PIC a problém je stejný. Vyzkoušel jsem jedno stejné tlačítko i odpor na různé vstupy RB a problém je stejný. Můžete mi poradit čím to může být?

Napsal: 24 úno 2015, 22:30
od forbidden
Jak může 10 kΩ odporem při napájení 5 V procházet 5, nebo dokonce 50 mA? 8O Musíš měřit někde něco jinýho, jinak to není možný.

Napsal: 24 úno 2015, 22:47
od Michal22
A nemyslel po stisku toho spínače?
Pro proud 50mA by musel mít Vcc= 500V, to by ten procesor už nikdy nenašel :D

Napsal: 24 úno 2015, 22:51
od forbidden
Píše, že proud odporem, tak nevím co měří.

Napsal: 24 úno 2015, 23:15
od ferda3
Omlouvám se za chybu (chyba v desetinné čárce), proud správně má být 0,5mA ale těch 50mA opravdu prochází a PIC topí... Proud je měřen při stisku tlačítka. Na obr jsem doplnil ampérmetr

Obrázek

Napsal: 24 úno 2015, 23:19
od breta1
To vypadá, že ty B porty nejsou nastaveny jako vstupní.

Napsal: 24 úno 2015, 23:20
od hakamusai
Nemáš chybu v programu ? (port RB1 jako výstup,nebo povolený SDI/SDA)
Bylo by dobře dát sem i program.

Napsal: 25 úno 2015, 12:00
od ferda3
Porty mám nastaveny takto:

TRISA = 00000;
TRISB = 11111111;
TRISC = 00000000;
TRISD = 00000000;

PORTA = 0b00000;
PORTB = 0b00000000;
PORTC = 0b00000000;
PORTD = 0b00000000;

Napsal: 25 úno 2015, 12:46
od forbidden
Takže měříš proud pinem (z pinu), ne proud odporem, to je dost podstatnej rozdíl.
Nastavení portů přes TRIS registry ještě nic neznamená, musíš ještě přes ostatní registry nastavit a povypínat případný jiný periferie, nebo ještě třeba nastavit piny jako digitální.

Napsal: 25 úno 2015, 13:15
od mikollar
problem je tu 11111111; toto je decimal cislo, ma tam byt 0b11111111; pre binarny zapis

Napsal: 25 úno 2015, 16:38
od MiloPS3
no ale default jsou nastaveny jako vstupni , a pokud s nima nic nedelal tak i zustanou a to uplne vsechy protoze neprepina banky, na RB1 nic neni takze nevypnuti nejake periferie tu nehrozi..

kolik tam tece kdyz to tlacitko hodis na VSS a odpor na VDD ?

Napsal: 25 úno 2015, 18:12
od mikollar
tak si preloz to cislo do bin
101010011000101011000111

posledne 8 bity su 11000111 a takto mas nasteveny PORTB

Ak das blbe cislo neznamena ze sa to nenastavi. Ono robi len to co mu povies.

Napsal: 25 úno 2015, 18:21
od MiloPS3
default jsou nastaveny jako vstupni
neprepina banky takze sou porad vstupni tudiz zapis na PORTB nemuze nic ovlivnit
pokud tedy ty banky opravdu neprepina ,jinak ano

tak si preloz to cislo do bin
101010011000101011000111
a i kdyby to tak bylo tak to nejak nesedi
Pokud takto připojím tlačítko na vstup RB0 prochází proud odporem 5mA (změřeno). Pokud jej ale připojím na RB1 tak proud vzroste na 50mA

Napsal: 25 úno 2015, 19:39
od Chenzee
to co zde dal je zcela nedostačující. Řekne se, aby sem dal program a on sem dá totok. :roll:

Napsal: 27 úno 2015, 10:11
od ferda3
Zkusil jsem tedy binární zápis (TRISB = 0b11111111) a pomohlo to. Nahrál jsem znovu program a RB5 už byl OK, ale RB4 protékal proud 50mA. Zkusil jsem tedy vymazat paměť procesoru a nahrát program znovu a už je to vše v pořádku.
Vyzkoušel jsem také na jiném procesoru (16f57) ověřit zápisy portů TRISB = 0b11111111 vs TRISB = 11111111 a oba případy byli v tomto případě totožné (všechny porty RB nastaveny jako vstupní). Program píši v MPLAB X IDE v2.30 v jazyku C a programuji přes PICKIT 2. Je možné, že by kompilátor při jiném typu procesoru různě kompiloval nastavení portů?