Stránka 1 z 1
Oscilátor
Napsal: 06 pro 2010, 21:34
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.
Napsal: 06 pro 2010, 22:12
od majsi
A v akom IDE to programujes? Ake kniznice pouzivas? Funkcia delay ktoru pouzivas bude najskor stale pouzivat defaultnu hodnotu oscilatora.
Napsal: 08 pro 2010, 19:32
od plecharts
Používám MPLAB IDE, knihovnu pic18f2550.h
Napsal: 08 pro 2010, 20:52
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ý.
Napsal: 09 pro 2010, 16:40
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
Napsal: 09 pro 2010, 16:54
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>
Napsal: 09 pro 2010, 23:04
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);
Napsal: 11 pro 2010, 19:29
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).