witam , potrzebuje pomocy , musze zaprogramowac uklad, ktory bedzie w stanie obrócić silnikiem krokowym jako taki pośrednik miedzy uart`em a sterownikiem silnika krokowego, jego rola bedzie sie ograniczala do przekrecania silnika o zadana liczbe krokow , ale zeby uzyskac wieksze predkosci maksymalne chcialbym zrealizowac rozpedzanie i hamowanie i tu wlasnie mam problem ( brak pomysłów ) jak zakodowac rozpedzanie i hamowanie , jak obliczyc ile ( czegoś ) ma trwać rozpedzanie i ile hamowanie przy okreslonej dlugosci ruchu, nie zawsze uklad bedzie sie calkowicie rozpedzał, przy krótkich odcinkach tylko czesciowo rozpedzał i czesciowo hamował - zrobilem szkielet programu ktorym w tej chwili moge ustawiac predkosc silnika i wygaszania sygnalu STEP a teraz ............... tak pustka , pomysłu brak , ktos moze realizowal to i moze mnie jakos naprowadzic ? moj kod wyglada tak , moze poprostu od zlej strony zaczelem ?
Kod: Zaznacz cały
#define AVR_AT90S8535
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
unsigned char imp=0;
unsigned char speed=100;
unsigned int pozycja=0;
char* buf;
SIGNAL(SIG_OVERFLOW0) {
if (imp) {
PORTB|=0x01;
outp(speed, TCNT0);
} else {
PORTB&=~0x01;
outp(255, TCNT0);
};
imp=1-imp;
}
SIGNAL(SIG_UART_RECV) {
}
int main ( void ) {
outp(0xff, DDRB); // port B jako wyjscie
outp(0xff, PORTB); // wymuszenie jedynki
outp(0x01, TIMSK); // przepelnienie licznika
outp(0x03, TCCR0); // prescaler set to 64
outp(255, TCNT0);
sei();
while ( 1 ) { };
};