es läuft jetzt, aber der Motor macht merkwürdige Geräusche.
hier der Code
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
}
}
und hier ein Video vom Motor:
http://www.stegem.de/Elektronik/motor/MOTOR.AVI
Ich werde morgen vielleicht mal noch andere Motoren testen.
Lesezeichen