Jak rozběhnout RC nebo HS externí oscilátor na PIC16F77?

Cafte, mate niekto skusenosti s tymto procakom ? Neche sa mi na nom rozbehnut externy oscilator (interny nema) skusam RC, tak ako je nakresleny v DS, ale nenaskoci vobec procak, dnes este skusim HS, ked budu kondy :smiley:
Pre istotu pripajam program, ci som tam niekde nepochybil

[code]LIST P=16F77
#include <p16f77.inc>

C1 EQU 20h
C2 EQU 21h
C3 EQU 22h

ORG 0x2007
dw _BODEN_OFF & _CP_OFF & _PWRTE_OFF & _WDT_OFF & _RC_OSC

ORG 0
GOTO START

ORG 4
GOTO START

START

MOVLW B’00100000’
MOVWF STATUS

MOVLW B’01011000’
MOVWF OPTION_REG

MOVLW B’00000000’
MOVWF INTCON

MOVLW B’11111111’
MOVWF ADCON1

MOVLW B’00000000’
MOVWF TRISA
MOVWF TRISB
MOVWF TRISC
MOVWF TRISD
MOVWF TRISE

CLRF STATUS ;NULTA BANKA

CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE

PROGRAM

BSF PORTD,0
CALL CAKAJ

BCF PORTD,1
CALL CAKAJ

GOTO PROGRAM

CAKAJ
MOVLW .10
MOVWF C3
MOVLW .255
MOVWF C2
MOVWF C1
DECFSZ C1
GOTO $-1
DECFSZ C2
GOTO $-4
DECFSZ C3
GOTO $-7
RETURN

END[/code]
DAKUJEM :slight_smile:

:arrow_right: administrator: přejmenováno z "PIC 16f77 oscilator"

Konkretne s 16F77 skusenost nemam, ale s jeho bratom 16F74 skusenost mam, aj s 16F777, co je lepsia verzia 16F77.

Mimochodom, 16F77 je jeden z tych skutocne obstaroznych a muzealnych kuskov, takze pokial zacinas novy projekt, tak sa radsej obzri po niecom novsom, ako napriklad 16F887.

No ale k tomu problemu, to by chcelo schemu, lebo zle zapojeny HW sa z programu da tazko spoznat :wink:

No schema je presne ako DS. ww1.microchip.com/downloads/en/D … 30325b.pdf strana 92.

No ale na HW sa toho da pokazit aj viac nez len zapojenie oscilatora… preto som sa pytal na schemu. Ake su tam pouzite hodnoty R a C?

22KOhm, 10nF

A este k tomu programu - ten robi to, ze v nekonecnej slucke nastavuje PORTD,0 a nuluje PORTD,1
Ak to malo byt blikanie LEDkou, tak treba najprv nastavit a potom vynulovat ten isty bit:

PROGRAM
	BSF      PORTD,0
	CALL   CAKAJ
	BCF      PORTD,0
	CALL   CAKAJ
	GOTO   PROGRAM

ehh,… ano :blush: smyklo sa mi cislo :slight_smile:

To dava casovu konstantu 2,2x10-4 sekundy, teda frekvencia asi 4,5kHz. Rychlost vykonavania instrukcii je zhruba 1000 instrukcii za sekundu. To znamena, ze podprogram CAKAJ so svojimi asi 2-mi milionmi instrukcii sa bude vykonavat asi 1700 sekund, co je zhruba pol hodiny.

Aha, ale to nevysvetluje preco tu ledku ani nezapne. Prva instrukcia je BSF, teda by sa mala rozsvietit, a cakat pol hodinu, nie ? Pri zmene odporu za 3k3 tiez ziadna zmena

Ano, malo by to fungovat tak, ze sa najprv rozsvieti LEDka na PORTD,0 a potom cakat pol hodiny. Teda za predpokladu, ze LEDka je zapojena katodou na zem a anodou cez odpor na pin, teda v pozitivnej logike.
To je jeden z dovodov, preco som si pytal schemu, lebo bez schemy, alebo aspon poriadneho popisu mozem len hadat, co je tam zapojene.
Co sa tyka RC oscilatoru, tak by som volil cca 4,7kOhm a 22pF.

Treba si pozriet ww1.microchip.com/downloads/en/D … 30325b.pdf na strane 144 a 145.

heh, ano ledka je zapojena spravne, akurat bez odporu. skusam menit tie hodnoty, ale nic sa nedeje :frowning:
dokonca ani ked zmenim program, ze miesto CLRF portov dam

MOVLW .255 MOVWF PORTA MOVWF PORTB MOVWF PORTC MOVWF PORTD MOVWF PORTE
tak sa nerozsvieti, ten procak nebeha :frowning:

Bez odporu?

Nechcem byt hnusny, ale obavam sa, ze tu nam chyba toho podstatne viac ako len nejaky odpor alebo co. Ono je to tak, ze pokial nemas odpor k LEDke, ako mozem vediet, ci mas odpor na MCLR? A blokovacie kondiky? A ci je to vobec dobre zapojene? Ak niekto urobi tak katastrofalny pruser ako chybajuci odpor k LEDke, nemozem ocakavat, ze ostatne bude dobre. Hoci aj bez odporu sa da LEDka prevadzkovat, ale clovek musi presne vediet, co robi a preco to robi, co evidentne nie je tento pripad.

Takze, ak sa mame pohnut niekde dalej, potrebujem vidiet schemu tak ako je skutocne zapojena, fotka by bola k tomu este lepsia, plus info o tom, aky programator je pouzity.

Nakolko radic portov obmedzuje prud na pin na 20, alebo 25mA odpor na ziadnu ledku pripajanu k ziadnemu mcu nedavam, takze ziaden katastrofalny pruser sa nekona.
Nemam ziadne dalsie kondy okrem oscilacneho, cely procak je prpojeny k pickitu2, takze schemu budem asi tazko kreslit.
jedine suciastky v poli su: mcu, led, odpor, kond.

Kde je napisane, ze “radic portov” obmedzuje prud na 20 alebo 25mA?
To, ze ako jeden z elementarnych elektrickych udajov IO pinu je udaj “Maximum output current sourced/sunk by any IO pin” s hodnotou 25mA, tak to znamena, ze je tvojou ulohou ten prud obmedzit na tych 25mA max, nie ze pin to robi sam. A kedze je to v kategorii “Absolute maximum ratings”, znamena to, ze po prekroceni takychto parametrov vyrobca nic negarantuje.

Dalej, ak po pripojeni LEDky bez odporu k pinu LEDka nezhori, tak to je preto, ze skratovy prud (resp. nie skratovy, ale v rezime tlacenia prudu do priechodu LEDky to nebude daleko od pravdy) CMOS hradla je mensi ako to, co LEDka kratkodobo utiahne, neznamena to vsak, ze takyto navrh je dobry. Takisto to neznamena, ze PIC-ku takyto rezim vyhovuje. Argumentacia “ale ved mne to takto funguje” je chybna. Treba najprv vediet preco to tak funguje. resp. preco je to tak dobre alebo zle.
A to je ten katastrofalny pruser, o ktorom som pisal predtym, tu nejde o jeden blby odpor.

Pokial nemas odpor medzi MCLR a Vdd, tak to bezat moze, ale nemusi. Ale skor to bezat nebude, lebo MCLR vystup u PK2 je po programovani v stave vysokej impedancie a MCLR pin je CMOS vstup. Treba tam strcit pull-up odpor cca 22kOhm.
A samozrejme blokovacie kondiky 100nF co najblizsie k napajacim parom Vdd/Vss su snad samozrejmostou v digitalnej technike.

NO TO MA POSER ! Fakt ten odpor na MCLRE pomohol, uz beha ako ma. Som trosku mimo, vzivote som tam ten odpor nedaval,…

…a pritom je to v dokumentacii k PicKit-u… :wink:
Tu sa ukazalo, ze aj ked si ho tam nikdy nedaval, tak ho tam bolo treba. Argument, ze predtym to fungovalo, tak to netreba, vseobecne neplati.

Ale som rad ze to uz funguje.
Este si zvykni na tie blokovacie kondenzatory. Fakt to nie je buzeracia, ono to moze fungovat aj bez nich, ale skor ci neskor sa na tom popalis a samozrejme to bude v tu najmenej vhodnu chvilu.

No kedze to napajam PK2, tak je to super hladkych 5V, takze kondy nedavam, ale keby to slo cez hocico ine, tak tam su urcite.
Btw, uz su objednane 16F1939 a 18F4550, takze vpohode :slight_smile:

Blokovací kondíky tam nejsou pro vyhlazení napětí, ale pro eliminaci parazitních vlastností přívodů napájení. Každý vodič má totiž vlastní indukčnost. Pokud se procesor zrovna rozhodne něco přepnout, vznikne tam proudová špička(ano, při přepnutí CMOS hradla může vzniknout impulz i několik desítek mA) a indukčnost přívodů způsobí, že tam třeba na 10ns nebude dostatečný napájení, procesor zblbne nebo se ti resetuje a budeš koukat jak trubka a celej den hledat, proč se to děje.
Holt někdo ale musí na všechno přijít sám…

Dovolím si malou citaci :slight_smile:: “Young not always do what they are told”.

Presne tak, dobre napisane.

Ta spicka ma velkost pokojne aj niekolko stoviek mA, u hodne velkych MCU aj jednotky A.

Vlastne cely odberovy diagram ma priebeh ostrych spiciek s amplitudou niekolko desiatok az stoviek mA, polozenych na pozadi s hodnotou inzinierskej nuly (0,000nic), ale stredna hodnota tohto je ten znamy odoberany prud, ktory sa da zmerat multimetrom, typicky to byva u 16F PICiek niekolko stoviek uA az niekolko jednotiek mA.