Znaleziono 2 wyniki

autor: pit202
20 wrz 2006, 16:07
Forum: Elektronika ogólna
Temat: avr zaprogramowanie ruchu
Odpowiedzi: 7
Odsłony: 2989

wiec biorę się za czytanie ze zrozumieniem :D
autor: pit202
19 wrz 2006, 18:30
Forum: Elektronika ogólna
Temat: avr zaprogramowanie ruchu
Odpowiedzi: 7
Odsłony: 2989

avr zaprogramowanie ruchu

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 ) { }; 
}; 

Wróć do „avr zaprogramowanie ruchu”