Sari la conținut
ELFORUM - Forumul electronistilor

icprog si oscilatorul intern de 16F628A


Vizitator zahei

Postări Recomandate

sunt incepator si m-am poticnit deja la primul meu exemplu de programare. ledul ala nenorocit ar trebui sa clipeasca, dar ori n-o face deloc, ori o face sporadic si total neregulat, in functie de tipul de oscilator pe care il selectez din meniu la scriere. ce oscilator ar trebui sa aleg din meniu ca sa folosesc oscilatorul intern al microcontrolerului 16F628A? optiunile sunt: LP, XT, XS, ExtClk, IntRC I/O, IntRC CLKOUT, RC I/O, RC CLKOUT.

Link spre comentariu
  • Răspunsuri 7
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

sunt incepator si m-am poticnit deja la primul meu exemplu de programare. ledul ala nenorocit ar trebui sa clipeasca, dar ori n-o face deloc, ori o face sporadic si total neregulat, in functie de tipul de oscilator pe care il selectez din meniu la scriere. ce oscilator ar trebui sa aleg din meniu ca sa folosesc oscilatorul intern al microcontrolerului 16F628A? optiunile sunt: LP, XT, XS, ExtClk, IntRC I/O, IntRC CLKOUT, RC I/O, RC CLKOUT.

Vine iarna si ne lasam de motoare, nu ? :supz: Cel mai probabil ar trebui sa mearga cu IntRC. Atentie insa, problema poate fi in cu totul alta parte. Daca ai putea posta codul ar fi mult mai usor.
Link spre comentariu
Vizitator zahei

codul e banal, in proton basic:

 

Symbol RB3 = PORTB.3     ' Bi-directional I/O portDelayMS 500                     ' Wait for PICmicro to stabiliseTRISB = %00000000          ' Set PORTD to all outputLoop:   High RB3                ' LED on        Delayms 500             ' Delay for .5 seconds        Low RB3                   ' LED on        DelayMS 500             ' Delay for .5 seconds        Goto Loop       	        ' Go back to loop and blink LED forever        End

codul asm generat este cam asta:

 

	#Define RB3 PORTB,3F1_SOF equ $ ; BLINK2.BASF1_000002 equ $ ; in [BLINK2.BAS] Delayms 500    ' Wait for PICmicro to stabilise	Movlw 1	Movwf PP1H	Movlw 244	Call dly@wF1_000003 equ $ ; in [BLINK2.BAS] TRISB = %00000000       ' Set PORTD to all output	Bsf STATUS,5ram_bank = 1	Clrf TRISBLOOP	Bcf STATUS,5ram_bank = 0F1_000004 equ $ ; in [BLINK2.BAS] Loop:   High RB3           ' First LED on	Bsf PORTB,3	Bsf STATUS,5ram_bank = 1	Bcf TRISB,3F1_000005 equ $ ; in [BLINK2.BAS] Delayms 500         ' Delay for .5 seconds	Movlw 1	Bcf STATUS,5ram_bank = 0	Movwf PP1H	Movlw 244	Call dly@wF1_000006 equ $ ; in [BLINK2.BAS] Low RB3	Bcf PORTB,3	Bsf STATUS,5ram_bank = 1	Bcf TRISB,3F1_000007 equ $ ; in [BLINK2.BAS] Delayms 500        ' Delay for .5 seconds	Movlw 1	Bcf STATUS,5ram_bank = 0	Movwf PP1H	Movlw 244	Call dly@wF1_000008 equ $ ; in [BLINK2.BAS] Goto Loop         ' Go back to loop and blink LED forever	Goto LOOPF1_000009 equ $ ; in [BLINK2.BAS] EndPb@lb2	Sleep	Goto Pb@lb2	END

@bogdanm: cel putin microcontrollerele nu sunt periculoase pentru sanatate.. daca nu fac parte dintr-un modul de aprindere de la motocicleta :)

Link spre comentariu

Aoleu !! Daca vrei sa-l pui pe aprindere, trebuie sa bagam PIC-uri serios in tine :snakeman:Asta am gasit in datasheet:

FOSC2:FOSC0: Oscillator Selection bits111 = RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN110 = RC oscillator: I/O function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN101 = INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN100 = INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN011 = EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN010 = HS oscillator: High speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN001 = XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN000 = LP oscillator: Low power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN

Mi se pare ca optiunea corecta este 100 in cazul tau (sau 101, nu ar trebui sa afecteze codul). Daca il pui asa si nu merge ... e ciudat. Cateva idei:- ai conectat pinul de RESET cum trebuie ? :)- i-ai 'spus' compilatorului de BASIC ce frecventa are clock-ul ? Trebuie sa aiba o optiune undeva. Daca nu stie, functia Delayms nu prea are cum sa mearga.- cum alimentezi hardughia?- ai dat un verify in ICProg la absolut tot ? (adica cod + fuses).
Link spre comentariu
Vizitator zahei

- i-ai 'spus' compilatorului de BASIC ce frecventa are clock-ul ? Trebuie sa aiba o optiune undeva. Daca nu stie, functia Delayms nu prea are cum sa mearga.

ha! de aici tre sa fie buba. in mod sigur tre sa includ un .inc ceva cu caracteristicile cip-ului. diseara incerc din nou. in rest am verificat tot prin icprog si intr-adevar scrie in cip ce vreau eu sa scrie.
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări