Blikání LED s PIC16F872

Dobrý den,
Mám malý problém s programem pro PIC16F872.
Sehnal jsem základní program pro blikání LED (wordpress.codewrite.co.uk/pic/2013/07/11/using-the-pic12f1840/) který jsem upravil pouze v hlavičce na #include <pic16f872.h>
Program jsem bez problémů nahrál do procesoru, jenže mi nefunguje.
LED nebliká.
Mám ji připojenou stejně jako na výše uvedené stránce, přes odpor 120 ohm na zem. Zapojení programátoru (PICKIT 3) je podle manuálu.
Používám MPLABX.
Vím, že jsem asi neupravil vše, ale nevím co dál.
Nevíte kde dělám chybu?
Děkuji.

na jakém pinu máš tu led pověšenou?
Zašli sem ten program.

Výpis programu je v odkazu. Ono by to spíš chtělo si nastudovat alespoň základy k elektronice, základy k programování a datasheet k procesoru. Pokud je schopný pouze zkopírovat z Internetu program a ani takhle triviální program není schopný pochopit a rozchodit, tak je něco špatně. Může mít otočenou LEDku, může být připojená na jiném pinu, může mít proesor nastavený na externí zdroj hodin atd.

PIC12F1840 je Enhanced Midrange core, což 16F872 rozhodně není, takže bude jinak konfigurace (BSR, LATx a ANSELx atd)…

LED je připojená na port RA4 s číselným označením 6 (podle datasheetu).
Je zapojená správně. Anodou přes odpor k pinu. Ale zkoušel jsem ji i otočit.
S konfiguračními bity jsem nic nedělal. Počítám že jsou nastaveny defaultně.
V MPLABu jsem si je prohlédl a je tam FFFF.

Ten MCU co máš potřebuje po startu provést po startu jinou inicializaci, než ten 16F872 (nebavím se o konfiguračních bitech ve flash, to je něco úplně jiného, ale i ty budou u tohoto MCU jinak). Stáhni si datasheet k tomu 12F1840, tam vše najdeš, nebo se ve svém okolí poohlédni po někom kdo zná PICy trochu líp než ty (zrovna v Holicích někdo takový určitě bude).

Začal bych tím, jak je zapojený hodinový obvod - 16F872 nemá interní oscilátor a podle konfiguračního slova (píšeš FFFF) máš nastavený mód RC -chce to na OSC1 (vývod 9) odpor na plus a kondenzátor k zemi

Pro Balů - nebuď tak ostrý, všichni jsem nějak začínali a zkopírovat/upravit/snažit se rozchodit je základní metoda - vědomosti se nabírají cestou :slight_smile:
Já třeba bez toho, abych věděl co je tranzistor upravoval rádia :laughing:

Ano, při pročítání dataseetu jsem také zjistil, že 16F872 nemá interní oscilátor.
V tomto článku (8bitu.cz/clanek/serial-pic16f84-8-oscilatory-a-resetovaci-obvody/) jsem našel hodnoty odporu a kondenzátoru RC článku.
Dále jsem ve své zásobě součástek (z velké části vypájené z elektoniky) našel krystal s označením CQS2A 4.433619, ale nejsem si jist, jestli to číslo znamená MHz.
Mám ale ještě jiné procesory - např 16F630 nebo 12F508, které by podle datasheetu měly mít interní oscilátory.

Poraďte mi prosím, co bude na začátek nejlepší; počítám že procesor s interním oscilátorem, ale nemám problém vyzkoušet i RC článek, nebo krystal.

Pro Anonymní: No asi jsem byl zbytečně ostrý, ale dotaz na mně udělal dojem “programátorů”, kteří na fóra píšou dotazy typu “Už tři dny hledám knihovnu pro ovládání displeje 16x2 znaků - poraďte.” a přitom napsat podprogramy pro základní ovládání tohoto displeje po pročtení datasheetu je otázkou cca hodiny. “Komfortní nadstavba” je už pak samozřejmě jiná pohádka a záleží na tom, co od knihovny člověk čeká.

Pro Matyáše: Poslyš, pokud s MCU začínáš, asi by bylo pro počáteční pokusy lepší použít procesor s interním oscilátorem. Jednak si zjednodušíš zapojení a jednak budeš mít jistotu, že pokud program nic nedělá, není to chybou oscilátoru. Pokud používám externí krystal, dělám to tak, že si naproramuju blikání LEDky, naprogramuju MCU. Jakmile se LEDka rozbliká, přehodím hodiny na krystal. Pokud LEDka bliká dál, je vše OK a natahuju program, který tam má být. Pokud používám externí zdroj hodin, není problém logickou sondou zjistit, jestli hodiny běží, u krystalu to tak jednoduše nejde - tam se často nechytneš ani s osciloskopem. Už se mi totiž stalo, že jsem měl zkrat pod SMD krystalem a MCU z krystalu nejel, dokud jsem zkrat neodstranil.

Ono by měl nejjednodušší, kdyby si koupil ten správný PIC (tedy 12F1840), když je začátečník a neví si s tím rady… a nebo aspoň aby si našel Blink v C přímo pro MCU, který má k dispozici. Jinak bych si jen dovolil upozornit, že v uvedeném odkazu není celý kód, ale jen jeho část (konkrétně Main), Config a Init tam vůbec není.

To Balů: máš pravdu, lenost některých lidí dokáže pěkně nadzvednout, ale já jsem v tomto případě měl spíš dojem absolutního začátečníka, který stojí kvůli detailu. Záčátek by měl být v pohodě - program až na typ procesoru je stejný (je pravda, že v příloze není kompletní), nastavení portů stejné, zkompilovat ho dokázal, jenom ten oscilátor.

To Matyáš: můj názor je, že když máš na stole 16F872 tak pracuj s ním, v neděli večer jiný neseženeš :slight_smile:, datasheet už přečtený máš a ten RC oscilátor je snad dost jednoduchý - už ho máš zapojený? Dělá to něco? Pro zajímavost: víš, co která instrukce v programu znamená?

Číslo na krystalu je frekvence v MHz, ale pro začátek ho nechej bokem, zvlášť jestli zapojuješ na nepájivém poli - stačí nějaká parazitní kapacita a je po kmitání. Ovšem až budeš příště kupovat procesor, interní oscilátor je bezva věc.