Nebo by jste mi doporučili pomocí obyčejného časovače generovat pravidelné pulsy _-_-_-_.... ?
Dále bych se chtěl zeptat co mám ještě nastavit pro překladač na zkompilování?
Tak aktuální soubor vypadá následovně (I prot y co by v budoucnu potřebovali)
Kód: Vybrat vše
/*
PortB -> Výstupní piny na ovládání jednotlivých částí auta
RB0 - Řízení pohonu // RB0:RB1 -> 1:0 Dopředu, 0:1 Dozadu, 1:1 / 0:0 Disable
RB1 - Řízení pohonu // ^ ^
RB2 - Mlhovky
RB3 - Zadní světla
RB4 - Klakson
RB5 - Přední světla
RB6 - Řízení zatáčení // RB0:RB1 -> 1:0 Doleva, 0:1 Doprava, 1:1 / 0:0 Rovně
RB7 - Řízení zatáčení // ^ ^
RA0 - Výstup z PMW signal, ktery ovlada enable na H-mostu u pohonu
Enable na pohon motorů (H-bridge -> Vstup pwm)
*/
#include "p18c252.h"
#include "usart.h"
#include "pwm.h"
#pragma config OSC = HS
unsigned long proc_type 0x8252;
unsigned char pB = 0x0;
unsigned char getRx();
void setPin(unsigned char get);
void setPwm(unsigned char get);
void init();
void init() {
//inicializace uartu
baudUSART (BAUD_IDLE_CLK_HIGH &
BAUD_8_BIT_RATE & //8 bitový přenos
BAUD_WAKEUP_ON & //Hlidání příchozí komunikace
BAUD_AUTO_ON); //Automaticka rychlost
//inicializace portu
TRISB = 0; //Všechny piny RB sou výstupní
//inicializace pwm
SetOutputPWM1 (SINGLE_OUT, PWM_MODE_1);
OpenPWM1(0x64); //Perioda
SetDCPWM1(0); //Duty cycle
}
void main() {
unsigned char read;
init();
read = getRx();
if (read & 0x40) setPwm(read);
else setPin(read);
}
unsigned char getRx() {
unsigned char result;
result = ReadUSART();
return result;
}
void setPin(unsigned char get) {
unsigned char pin;
unsigned char h;
unsigned char mask;
h = get & 0x80; //hodnota
h = h >> 7;
pin = get & 0x7;
mask = 1 << pin;
if (h) pB |= mask;
else pB &= ~mask;
PORTB = pB;
}
void setPwm(unsigned char get) {
unsigned char frek;
frek = get & 0x3F; //00xxxxxx - Vyčteme frekvenci
//změna frekvence PWM
//?
}