Pracoval jsem s 16F84, došly mi portíky, tak jsem přešel na 16F74. A hned jako na potvoru nejsem schopen ovládat jediný výstupní pin.
Mám zapojené napájení, krystal 4.00MHz a jednu LEDku.
Program je následující:
void main()
{
while(1)
{
output_high(PIN_B0);
delay_ms(500);
output_low(PIN_B0);
delay_ms(500);
}
}
Nevím, jestli je to složitostí toho programu (haha vtip), nebo jsem pominul nějaké specifikum procesoru 16F74.
Jsem zoufalý, prosím poraďte.
administrator: přejmenováno z "PIC 16F74 - základní chyba"
Když pracuješ s PIC, co má komparátory nebo ADC, musíš je nejprve vypnout, jsou defaultně zapnuté. Např. PIC16F627 má jen komparátory, tvá PIC16F74 má ADC, PIC16F84 nemá nic z toho, proto Ti jela hned. Registry atd. najdeš v datasheetu.
ww1.microchip.com/downloads/en/D … 30325b.pdf
Petr
December 19, 2009, 4:40pm
3
Na portu B nic z toho co popisuješ není.
MiloPS3
December 19, 2009, 4:58pm
4
Cau, skus si zmerit napeti primo na nozickach picu, VDD,VSS,MCLR, a pozor ma to 2 x VSS (8,19) , a pojistky si skontroluj, #fuses XT,NOWDT,NOPROTECT
Petr
December 19, 2009, 5:10pm
5
VSS (12,31) a VDD (11,32) jsou uvnitř propojeny.
Napájení je ok, ale LED svítí, nebliká
MiloPS3
December 19, 2009, 5:16pm
7
ehm, jo, kouk sem jinam, VSS 12,31, VDD 11,32
to ze sou uvnitr propojeny nevim, neskoumal sem to az tak detailne
mas tam #use delay(clock=4000000), ale asi jo , jinak bi ti to hodilo Eror,
a co ty pojistky , WDT ?
Petr
December 19, 2009, 5:26pm
8
Z jedné strany napájíš MCU a z druhé strany připojíš třeba eeprom, je jedno kterou stranu si vybereš.
Petr
December 19, 2009, 5:29pm
9
luger.205 a s tímto programem a 16f84 ti to běželo ?
Edit: kam si zase utekl…
MiloPS3:
ehm, jo, kouk sem jinam, VSS 12,31, VDD 11,32
to ze sou uvnitr propojeny nevim, neskoumal sem to az tak detailne
mas tam #use delay(clock=4000000), ale asi jo , jinak bi ti to hodilo Eror,
a co ty pojistky , WDT ?
Používám microC PRO for PIC - takze direktivy typu #use delay(clock=4000000) jsou v nastavení projektu, nikoliv ve zdrojáku.
A pojistky nastavuji zase v programátoru.
Petr
December 19, 2009, 5:52pm
12
LED diodu máš tedy připojenou na portu b pin 0 = RB0 a stále svítí, ano ?
Přesně. Ostatní porty jsou ve vysoké impedanci, jen ten jeden RB0 je na log. 1. Nehledě na program. Zajímavé :-/
administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.
Petr
December 19, 2009, 7:45pm
14
Chtělo by to zjistit jestli MCU skutečně “běží”.
Mám tu dva fungl nový kousky, oba dělají stejnou věc. Zajímavé je, že jen ten pin RB0 je na jedničce a ostatní piny (RB1,2,…) jsou mrtvé.
Petr
December 19, 2009, 8:16pm
16
Jen pro informaci, kde nastavuješ aby RB0 byl jako výstupní.
Používám jiný překladač, tak to nemusí být stejné jako u mě.
No ta knihovna, kterou používám, to dělá automaticky.
Petr
December 19, 2009, 8:54pm
18
Jasně, tím že napíšeš output_high(PIN_B0); se pin nastavý jako výstup a přejde do log 1.
Takže napájení je v pořádku, pin MCLR je připojen na +5V, s 16F84 to běželo a s 16F74 to nejede. To je záhada.
No povídej mi o tom. Je na čase vrátit se k assembleru, vymyslet header, a všechno pěkně ručně. To je mi radosti
Petr
December 19, 2009, 11:11pm
20
Zkus to tedy napsat v asm a uvidíš jestli to pojede. Alespoň budeš mít jistotu že vše ostatní je v pořádku a pak můžeš laborovat z Céčkem.