Začetl jsem se do knihy C pro mikrokontroléry PIC od Davida Matouška.
Tam popisuje jak udělat blikání s LED.
Problém je v tom že to popisuje s jiným mcu ,který má interní oscilátor.
a to tak že nastaví OSCCON =0b01110011 .
////////////////////////////////
otázka 1,Tady tkví první problém používám PIC18F452 a ten má jen
extrení oscilátor ,mám tam 4 MHz krystal-HS mode budu šahat při nastavení do OSCCONu?
////////////////////////////////
otázka 2, V knize se popisuje nastavení předděličky.... k tomu se se dělí knitočtem interního oscilátoru v knize 8Mhz /4 =2 mhz to znamená 0,5s je perioda.
Budu i ten kmitočet externího krystalu připojeného k PIC dělit 4 ?
////////////////////////////////
otázka 3, Z výše uvedené věty je zřejmé že budeme potřebovat 1 000 000 impulzů.
Jak proboha k tomu přišel to vycházelo jedině 2Mhz * 0,5s atohle nevím co je jak to nazvat co vlastně počítal atd.
Dále se v knize odhadne že 65536 x 16 = 1 048 576 , protože máme 16 bitovou šíři Timeru0 a nastavená předdělička je 16 to znamená nejbližší výsledek impulzů nebo co to je?
///A pak se řekne že 1 000 000 /16 = 62500 - tohle chápu.
////////////////////////////////
Dále se vydělí 8Mhz/4=2, 2Mhz/16 =125 Khz >>> T = 0,000008 s
Dále 0,5/0,000008 = 62500 impulzů
65536-62500 = 3036
A toto číslo se vloží do TMR0L a TMR0H aby mohl přetéct
////////////////////////////////
Zájímá mě tenhle ten postup, potřeboval bych objasnit Nastavení a výpočet ...díky doufám že se tu najde někdo přes PIC 18F.
Chtěl bych si nastavit třeba jedna sekunda a nebo libovolný čas pomocí Timer0.
Kód: Vybrat vše
#include <p18cxxx.h>
#pragma config OSC = INTIO2
#pragma config WDT = OFF
void inicializace();
void cekejTimer0();
void inicializace()
{
OSCCON=0b01110011; //8 MHz
T0CON=0b10010011; //2 MHz, deleni 16 (125 kHz)
TRISB=0b00000000;
PORTB=0b11111111;
}
void cekejTimer0()
{
TMR0H=0x0B;
TMR0L=0xDC;
INTCON=INTCON&0b11111011;
while(!(INTCON&0b00000100));
}
void main()
{
inicializace();
while(1)
{
PORTB=LATB^0b00000001;
cekejTimer0();
}
}