-
-
Hallo
also ich hab ein mavr board mit nem atmega8 und nem 3,6864 Mhz quarz drauf...
Ich möcht probieren damit nen Servo anzusteuern so billig dinger vom conrad. hab jetz mal den Code von michaelelb und mein Servo bewegt sich nach auch nach rechts. Bloß ich versteh den Code noch nicht ganz. Ich hab auch nen prscaler von 64 benutzt.
aber mir sagt des ganze tcnt0 und so zeugs ist und so ist. kann mir das mal einer erklären? wär echt super.
und was muss ich machen damit ich den servo zum beispiel in seine mittelposition fahr oder bzw nach links??
wär echt super wenn ihr mir helfen könntet.
Hier das Programm:
weiß leider nicht wie man dass in so nem weißen fenster postet...
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <inttypes.h>
#include <math.h>
#ifndef F_CPU
#define F_CPU 3686400UL /* Quarz mit 3.6864 Mhz */
#endif
volatile unsigned char servowert;
volatile unsigned char puls;
volatile unsigned char zaehler;
int set_servo(volatile uint8_t pos)
{
servowert = (pos/180) + 1;
}
int main(void)
{
zaehler = 0;
sei();
DDRB = (1<<PB0);
PORTB = (1<<PB0);
//Timer0 Prescaler 64
//3686400 hz hat der µC
//0.000000271s zischen den Takten
//mit Prescaler: 0.00001736 zischen den Takten
//0.0001s/0.00001736s = 57,6
//Preloadwert: 198,4 <= 256-57,6
//Zeit zwischen Interrupt 0.1ms
//1ms = 10 Takte
//1.5ms = 15 Takte
//2ms = 20 Takte
//20ms = 200Takte
//da erster Takt = 0
//nach 9 Takten low
//nach 199 Takten high!
TCCR0 = (1<<CS01)|(1<<CS00);
TCNT0 = 198,4;
TIMSK |= (1 << TOIE0);
for(;
{
}
}
SIGNAL(SIG_OVERFLOW0)
{
switch(zaehler)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: //Links
case 6:
case 7:
case 8:
case 9: //1ms
case 10:
case 11: //Mitte
case 12:
case 13:
case 14:
case 15://1.5ms
case 16:
case 17:
case 18:
case 19: //2ms //rechts
PORTB |= (1<<PB0);
zaehler++;
break;
case 199:
zaehler = 0;
break;
default:
PORTB &= ~(1<<PB0);
zaehler++;
break;
}
TCNT0 = 198.4;
}
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen