Po přechodu z 16F84 na 16F74 nefungují porty

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.

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

Na portu B nic z toho co popisuješ není.

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

VSS (12,31) a VDD (11,32) jsou uvnitř propojeny.

Napájení je ok, ale LED svítí, nebliká :frowning:

ehm, jo, kouk sem jinam, VSS 12,31, VDD 11,32 :blush:
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 ?

Z jedné strany napájíš MCU a z druhé strany připojíš třeba eeprom, je jedno kterou stranu si vybereš.

luger.205 a s tímto programem a 16f84 ti to běželo ?

Edit: kam si zase utekl…

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.

Běželo, běželo :slight_smile:

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é :-/

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

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é.

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.

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

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.