Oscilátor

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
plecharts
Příspěvky: 12
Registrován: 29 říj 2010, 02:00

Oscilátor

#1 Příspěvek od plecharts »

Zdravím, mám menší problém s PIC18F2550, konkrétně nastavení rychlosti. Nastavím vše na 20MHz oscilátor ale LEDky blikají jak splašené. Když přejdu zpět na interní oscilátor, vše bliká jak by mělo.

Uživatelský avatar
majsi
Příspěvky: 51
Registrován: 23 led 2010, 01:00

#2 Příspěvek od majsi »

A v akom IDE to programujes? Ake kniznice pouzivas? Funkcia delay ktoru pouzivas bude najskor stale pouzivat defaultnu hodnotu oscilatora.

Uživatelský avatar
plecharts
Příspěvky: 12
Registrován: 29 říj 2010, 02:00

#3 Příspěvek od plecharts »

Používám MPLAB IDE, knihovnu pic18f2550.h

Uživatelský avatar
iginoiii
Příspěvky: 364
Registrován: 01 črc 2010, 02:00
Bydliště: Bratislava

#4 Příspěvek od iginoiii »

a čo takto vložíť program? blikať môžte softwarovo, hardwarovo a bohvie ešte ako . Takže takto sa dá jedine veštiť. Aj keď ja s pic neviem(a nejeden tu na fóre by mohol napísať, že neviem ani s atmelom :) ), ale každopádne dotaz je zle položený.

Uživatelský avatar
plecharts
Příspěvky: 12
Registrován: 29 říj 2010, 02:00

#5 Příspěvek od plecharts »

Kód: Vybrat vše

#include <p18f2550.h>
#include <delays.h>
#include "configuration.h"

//#pragma config FOSC = INTOSCIO_EC //Internal oscillator, port function on RA6, EC used by USB 
//#pragma config WDT = OFF //Disable watchdog timer

#define LEDPin1  LATCbits.LATC0
#define LEDTris1 TRISCbits.TRISC0

#define LEDPin2  LATCbits.LATC1
#define LEDTris2 TRISCbits.TRISC1

void main()
{
	LEDTris1 = 0;//Set LED Pin data direction to OUTPUT
	LEDPin1 = 1;//Set LED Pin
	LEDTris2 = 0;//Set LED Pin data direction to OUTPUT
	LEDPin2 = 1;//Set LED Pin
	
	while(1)
	{
		LEDPin1 = ~LEDPin1;//Toggle LED Pin
		Delay10KTCYx(25);//Delay 250K cycles (1 second at 1MHz since each instruction takes 4 cycles)
		LEDPin2 = ~LEDPin1;//Toggle LED Pin
		Delay10KTCYx(25);//Delay 250K cycles (1 second at 1MHz since each instruction takes 4 cycles)
	}

}
soubor configuration.h není potřeba přikládat, jsou v něm jen configuration bits a ty upravuji manuálně v MPLAB

Uživatelský avatar
iginoiii
Příspěvky: 364
Registrován: 01 črc 2010, 02:00
Bydliště: Bratislava

#6 Příspěvek od iginoiii »

meníte niekde v kóde definovanie frekvenciu procesoru? u atmelov je to príkaz pred kniznicou delay(ako som spomínal, pic nepoznám, ale ta filozofia bude rovnaká, ako už spomínal majsi)

Kód: Vybrat vše

#define F_CPU 16E6 // 16 MHZ rychlost uPC
#include <util/delay.h>

Uživatelský avatar
majsi
Příspěvky: 51
Registrován: 23 led 2010, 01:00

#7 Příspěvek od majsi »

Vies vobec co ma robit tato funkcia???
Delay10KTCYx(25);

caka 10000*25 instrukcnych cyklov. Inak povedane sa 250000 krat vykona instrukcia NOP. To znamena ze cim rychlejsi das oscilator tym kratsie sa tych 10000*25 instrukcnych cyklov vykona. Konkretne toto

Delay10KTCYx(25); trva 0,05sekundy

rata sa to asi takto
1 TCY = 1/Fosc/4 = 1/(20 000 000/4) = 0.000 000 2s = 0.2us
pre 2.5s = 2.5/0.000 000 2 = 12 500 000 TCY
takze pre delay dlhy 2.5 sekundy pouzijes pri 20 MHz
Delay10KTCYx(1250);

Uživatelský avatar
plecharts
Příspěvky: 12
Registrován: 29 říj 2010, 02:00

#8 Příspěvek od plecharts »

Tak po vysvětlení funkce to funguje, ale je tu další problém, a to když chci připojit čip s bootloaderem k PC pomocí USB, PC rozpozná pouze že se něco připojilo, ale nechce dál spolupracovat. Ovladače mám (HID).

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“