amal
15.07.2011, 09:34
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
// PD0 = Taster für Richtung für alle Motoren
// PD1 = Taster für Start
// PD2 = Taster für Interrupt0
// PD3 = Taster für Interrupt1
// PD4 = Taster für Stop
// PD5 = Taster für Reset
// PB4 = Richtung für alle Motoren
//******************************
// MOTOR 1 Richtung X
//******************************
// PB0 = Enable M1
// PB1 = Clock M1
//******************************
// MOTOR 2 Richtung Y
//******************************
// PB2 = Enable M2
// PB3 = Clock M2
// PC0 = Trigger
// PD2 = Interrupt0
// PD3 = Interrupt1
volatile uint16_t zx,zy,D;
void pause(D)
{
for(uint16_t i=0;i<D;i++)
asm volatile ("nop");
}
void STOP()
{
PORTB&=~(1<<PB0);//Mx En löschen
PORTB&=~(1<<PB2);//My En löschen
}
ISR (INT0_vect)
{
PORTB|=(1<<PB0);//Mx En
PORTB|=(1<<PB2);//My En
PORTB|=(1<<PB4);// Richtung
for(unsigned int i=0;i<10;i++)
{zx=0;
zy=0;
for(unsigned int j=0;j<10;j++)
{
for(unsigned int k=0;k<10;k++)
{
PORTB|=(1<<PB1); //
pause(1000); // Clk Mx
PORTB&=~(1<<PB1); //
zx++;
}
PORTC|=(1<<PC0); //
pause(2000); // Triggern 5hz
PORTC&=~(1<<PC0); //
}
for(unsigned int l=0;l<10;l++)
{
for(unsigned int m=0;m<10;m++)
{
PORTB|=(1<<PB3); //
pause(1000); // Clk My
PORTB&=~(1<<PB3); //
zy++;
}
PORTC|=(1<<PC0); //
pause(2000); // Triggern 5hz
PORTC&=~(1<<PC0); //
}
PORTB&=~(1<<PB4);// Richtung ändern
for(unsigned int n=0;n<10;n++)
{
for(unsigned int p=0;p<10;p++)
{
PORTB|=(1<<PB2); //
pause(1000); // Clk Mx
PORTB&=~(1<<PB2); //
zx--;
}
PORTB|=(1<<PC0);
pause(2000); //Triggern 5hz
PORTB&=~(1<<PC0);
}
PORTB|=(1<<PB4);// Richtung
for(unsigned int r=0;r<10;r++)
{
for(unsigned int s=0;s<10;s++)
{
PORTB|=(1<<PB3); //
pause(1000); // Clk My
PORTB&=~(1<<PB3); //
zy++;
}
PORTC|=(1<<PC0); //
pause(200); // Triggern 5hz
PORTC&=~(1<<PC0); //
}
}
ISR (INT1_vect)
{
void STOP();
pause(1000);
PORTB|=(1<<PB0);//Mx En
PORTB&=~(1<<PB4);// Richtung
if(zy>0)
{
for(unsigned int q=0;q<zy;q++)
{
PORTB|=(1<<PB3); //
pause(1000); // Clk My
PORTB&=~(1<<PB3); //
}
}
if(zx>0)
{
for(unsigned int q=0;q<zx;q++)
{
PORTB|=(1<<PB1); //
pause(1000); // Clk Mx
PORTB&=~(1<<PB1); //
}
}
}
//Hauptprogramm START----------
int main(void)
{
DDRD=0b11100000; // PIN 0-4 als Eingang definieren
DDRB=0xb11111111; // PortB als Ausgang definieren
DDRC|=(1<<PC0); // PC0 als Ausgang
sei(); //Interrupts freigeben
//Interrupt initialisieren
EIMSK|=(1<<INT0)|(1<<INT1);
EICRA|=(1<<ISC01)|(1<<ISC11);
while(1) //Endlosschleife
{
}
return 0;
}
ich bekomme diese Fehlern,
../M_XY_vers2.c:133: error: static declaration of '__vector_2' follows non-static declaration
../M_XY_vers2.c:133: error: previous declaration of '__vector_2' was here
weißt bitte jemand wo der Fehler ist?
danke
#include <avr/interrupt.h>
#include <stdint.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
// PD0 = Taster für Richtung für alle Motoren
// PD1 = Taster für Start
// PD2 = Taster für Interrupt0
// PD3 = Taster für Interrupt1
// PD4 = Taster für Stop
// PD5 = Taster für Reset
// PB4 = Richtung für alle Motoren
//******************************
// MOTOR 1 Richtung X
//******************************
// PB0 = Enable M1
// PB1 = Clock M1
//******************************
// MOTOR 2 Richtung Y
//******************************
// PB2 = Enable M2
// PB3 = Clock M2
// PC0 = Trigger
// PD2 = Interrupt0
// PD3 = Interrupt1
volatile uint16_t zx,zy,D;
void pause(D)
{
for(uint16_t i=0;i<D;i++)
asm volatile ("nop");
}
void STOP()
{
PORTB&=~(1<<PB0);//Mx En löschen
PORTB&=~(1<<PB2);//My En löschen
}
ISR (INT0_vect)
{
PORTB|=(1<<PB0);//Mx En
PORTB|=(1<<PB2);//My En
PORTB|=(1<<PB4);// Richtung
for(unsigned int i=0;i<10;i++)
{zx=0;
zy=0;
for(unsigned int j=0;j<10;j++)
{
for(unsigned int k=0;k<10;k++)
{
PORTB|=(1<<PB1); //
pause(1000); // Clk Mx
PORTB&=~(1<<PB1); //
zx++;
}
PORTC|=(1<<PC0); //
pause(2000); // Triggern 5hz
PORTC&=~(1<<PC0); //
}
for(unsigned int l=0;l<10;l++)
{
for(unsigned int m=0;m<10;m++)
{
PORTB|=(1<<PB3); //
pause(1000); // Clk My
PORTB&=~(1<<PB3); //
zy++;
}
PORTC|=(1<<PC0); //
pause(2000); // Triggern 5hz
PORTC&=~(1<<PC0); //
}
PORTB&=~(1<<PB4);// Richtung ändern
for(unsigned int n=0;n<10;n++)
{
for(unsigned int p=0;p<10;p++)
{
PORTB|=(1<<PB2); //
pause(1000); // Clk Mx
PORTB&=~(1<<PB2); //
zx--;
}
PORTB|=(1<<PC0);
pause(2000); //Triggern 5hz
PORTB&=~(1<<PC0);
}
PORTB|=(1<<PB4);// Richtung
for(unsigned int r=0;r<10;r++)
{
for(unsigned int s=0;s<10;s++)
{
PORTB|=(1<<PB3); //
pause(1000); // Clk My
PORTB&=~(1<<PB3); //
zy++;
}
PORTC|=(1<<PC0); //
pause(200); // Triggern 5hz
PORTC&=~(1<<PC0); //
}
}
ISR (INT1_vect)
{
void STOP();
pause(1000);
PORTB|=(1<<PB0);//Mx En
PORTB&=~(1<<PB4);// Richtung
if(zy>0)
{
for(unsigned int q=0;q<zy;q++)
{
PORTB|=(1<<PB3); //
pause(1000); // Clk My
PORTB&=~(1<<PB3); //
}
}
if(zx>0)
{
for(unsigned int q=0;q<zx;q++)
{
PORTB|=(1<<PB1); //
pause(1000); // Clk Mx
PORTB&=~(1<<PB1); //
}
}
}
//Hauptprogramm START----------
int main(void)
{
DDRD=0b11100000; // PIN 0-4 als Eingang definieren
DDRB=0xb11111111; // PortB als Ausgang definieren
DDRC|=(1<<PC0); // PC0 als Ausgang
sei(); //Interrupts freigeben
//Interrupt initialisieren
EIMSK|=(1<<INT0)|(1<<INT1);
EICRA|=(1<<ISC01)|(1<<ISC11);
while(1) //Endlosschleife
{
}
return 0;
}
ich bekomme diese Fehlern,
../M_XY_vers2.c:133: error: static declaration of '__vector_2' follows non-static declaration
../M_XY_vers2.c:133: error: previous declaration of '__vector_2' was here
weißt bitte jemand wo der Fehler ist?
danke