es läuft jetzt, aber der Motor macht merkwürdige Geräusche.
hier der Codeund hier ein Video vom Motor:Code:#include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include <stdint.h> #include <Stdio.h> #include "BinaryNr.h" #define F_CPU 1000000 // Interner Takt 1MHz #define Prescaler 8; // Timer 1 Vorteiler #define startwert 65537-625; // Zähler Startwert, 5ms #define u8 unsigned char #define u16 unsigned int /* Variablen */ u8 periode=0; /* INIT */ void port_init(void){ // initialize ports DDRC = B00110000; // PORTC 4 und 5 als Ausgang } void timer_start(int zeit){ TIMSK |= (1 << TOIE1); // Timer 1 Overflow Interrupt enable TCNT1 = 65537-zeit; // 625 = 5ms; } //Analog-Comparator Interrupt Routine SIGNAL (ANA_COMP_vect){ cli(); periode++; if (periode==1){ PORTC |= (1 << 5); // einschalten timer_start(1250); // 10ms warten 1 Halbwelle (Triggerimpuls Triac) ACSR=B00001011; // umschalten auf steigende Flanke } if (periode==2){ // ACSR=B00001010; // umschalten auf fallende Flanke } if (periode==3){ // ACSR=B00001011; // umschalten auf steigende Flanke } if (periode==4){ // PORTC |= (1 << 5); // einschalten timer_start(1250); // 10 ms warten 1 Halbwelle (Triggerimpuls Triac) ACSR=B00001010; // umschalten auf fallende Flanke } if (periode==5){ // ACSR=B00001011; // umschalten auf steigende Flanke } if (periode==6){ // ACSR=B00001010; // umschalten auf fallende Flanke periode=0; } sei(); // enable interrupts } //Timer Interrupt SIGNAL (TIMER1_OVF_vect){ // Timer1 overflow nach 5ms PORTC &= ~(1 << 5); // abschalten } /*********************/ int main(){ port_init(); // Ports initialisieren TCCR1B = B00000010; // Prescaler auf 1024 stellen TIMSK |= (1 << TOIE1); // Timer 1 Overflow Interrupt enable ACSR=B00001010; // analog-Komparator fallende Flanke sei(); for(;;){ // tue nix Schleife } }
http://www.stegem.de/Elektronik/motor/MOTOR.AVI
Ich werde morgen vielleicht mal noch andere Motoren testen.







Zitieren

Lesezeichen