aSma>> schrieb:
> Schrittmotoren müssen mit einer Rampe angesteuert werden. Ist die
> Startfrequenz zu hoch, dann kommt der Motor aus dem Takt, verliert
> Schritte oder macht Geräusche und dreht sich einfach nicht.
Da ich das ganze neben bei auch mit einem Arduino testen will. Weil ich
mich da einfach leichter tue Sachen zu durchblicken. Jetzt dachte ich,
ich mache mir auf dem Arduino mal etwas mit einem Timer. Jetzt komme ich
mit dem einfachsten nicht klar, Und Zwar kann mir jemand sagen, wie ich
""x = 1;"" richtig Eintrage, denn wenn ich das wie beim Atmelstudio
mache, dann Kompiliert er es mir nicht.Wo liegt mein Fehler? ich glaube
beim erneut vorwegladen??
das wäre jetzt so eingestellt das es mir alle 0,5s ein Interrupt
aufruft. Und dann soll x = 1; sein.
hier hätte ich mal den Code..AM Arduino Board
1 | volatile int x = 0;
|
2 | int b = 0;
|
3 |
|
4 | void setup()
|
5 | {
|
6 | Serial.begin(9600);
|
7 |
|
8 | // Timer 1
|
9 | noInterrupts(); // Alle Interrupts temporär abschalten
|
10 | TCCR1A = 0;
|
11 | TCCR1B = 0;
|
12 |
|
13 | TCNT1 = 34286; // Timer nach obiger Rechnung vorbelegen
|
14 | TCCR1B |= (1 << CS12); // 256 als Prescale-Wert spezifizieren
|
15 | TIMSK1 |= (1 << TOIE1); // Timer Overflow Interrupt aktivieren
|
16 | interrupts(); // alle Interrupts scharf schalten
|
17 | }
|
18 | // Hier kommt die selbstdefinierte Interruptbehandlungsroutine
|
19 | // für den Timer Overflow
|
20 | ISR(TIMER1_OVF_vect)
|
21 | {
|
22 | TCNT1 = 34286;
|
23 | x = 1;
|
24 | }
|
25 |
|
26 | void loop()
|
27 | {
|
28 | if(x == 1)
|
29 | {
|
30 | b ++;
|
31 | }
|
32 | if( b >= 500)
|
33 | {
|
34 | b = 0;
|
35 | }
|
36 |
|
37 | Serial.println(b);
|
38 | }
|