hallo bin grad wieder mal beim programmieren auf ein kleines problemchen
gestoßen. und zwar hab ich das problem, dass ich mit meinem atmega16
zwei timer mit interrupts benutze. jetzt stehe ich vor dem problem, dass
mir bisher nur die möglichkeit die interrupts global ein- bzw.
auszuschalten mit sei() bzw. cli().
in meinem fall ist es aber wichtig, dass ich die interrupts einzeln ein-
und ausschalten muss, weil sonst mein piezosummer ständig piepst.
hier mein kurzer programmausschnitt:
1
ISR(TIMER2_OVF_vect)
2
{
3
PORTB|=(1<<PB4);
4
}
5
//PWM für LEDs
6
ISR(TIMER2_COMP_vect)
7
{
8
PORTB&=~(1<<PB4);
9
}
10
11
12
ISR(TIMER0_COMP_vect)
13
{
14
PORTD^=(1<<PD6);//PD6 togglen für Piezosummer
15
}
16
17
intmain(void)
18
{
19
DDRB=0xFF;//Gesamtes Portregister als Ausgang
20
DDRD=0b11110000;// PD0 bis PD3 als Eingang
21
22
PORTB=0b00000000;//Alle Pins von PortB auf 0
23
PORTB|=(1<<PB3);//SCL auf high => Reset von Schieberegister aus
24
DDRD|=(1<<PD6);//Ausgang für Piezosummer
25
PORTD&=~(1<<PD6);// nötig, da Piezo schwingt, wenn er dauerhaft an Vcc liegt
26
27
28
29
/* Timer2 Initialisierung */
30
31
TCCR2|=(1<<CS22)|(1<<CS21);//Prescaler auf 256
32
TIMSK|=(1<<TOIE2)|(1<<OCIE2);// Interrupt bei Overflow und Compare Match
33
34
/* Timer0 Initialisierung */
35
36
TIMSK|=(1<<OCIE0);//Interrupt bei Compare Match (hier Zählerstand auf 0 zurücksetzen, da CTC- Modus)
37
TCCR0=(1<<WGM01);// CTC- Modus
38
TCCR0|=(1<<CS00)|(1<<CS01);//Prescaler auf 64
39
40
sei();//globale Interrupts ein
41
42
43
LED_Fading();
44
long_delay(1000);
45
46
lauflicht();
47
long_delay(1000);
48
49
lichtschweif();
50
long_delay(1000);
51
schlussakkord_schnell();
52
53
while(1)
54
{
55
56
}
57
58
return0;
59
}
mein problem ist jetzt, dass der interrupt von timer0 nur ausgeführt
werden darf, wenn der piezo töne von sich geben soll.
wer kann mir weiterhelfen?
mfg andi
Hallo Andi,
schau bitte mal auf Deinen Bildschirm.
Genau oberhalb des Fensters, in dem Du Deine Postings schreibst.
Was steht da?
Ich Kopier´s hier nochmal hin:
###################################
Groß- und Kleinschreibung verwenden
###################################
Scheinbar kannst Du das, denn in Deinem Code finde ich prima
Grossbuchstaben.
Aber herzlichen Dank dafuer, dass Du - im Unterschied zu vielen Anderen
- wenigstens weisst, wann man "dass" mit zwei "s" schreibt und auch
Satzzeichen kennst Du.
Dann duerfte die "Shift"-Taste doch auch noch zu bedienen sein, oder?
Gruss
Michael
> hallo bin grad wieder mal beim programmieren auf ein kleines problemchen> gestoßen. und zwar hab ich das problem, dass ich mit meinem atmega16> zwei timer mit interrupts benutze. jetzt stehe ich vor dem problem, dass> mir bisher nur die möglichkeit die interrupts global ein- bzw.> auszuschalten mit sei() bzw. cli().>> in meinem fall ist es aber wichtig, dass ich die interrupts einzeln ein-> und ausschalten muss, weil sonst mein piezosummer ständig piepst.>> hier mein kurzer programmausschnitt:>> mein problem ist jetzt, dass der interrupt von timer0 nur ausgeführt> werden darf, wenn der piezo töne von sich geben soll.>> wer kann mir weiterhelfen?>> mfg andi
TIMSK|=(1<<TOIE2)|(1<<OCIE2);// Interrupt bei Overflow und Compare Match
2
TIMSK|=(1<<OCIE0);//Interrupt bei Compare Match (hier Zählerstand auf 0 zurücksetzen, da CTC- Modus)
die Interrupts eingeschaltet.
Z.B. durch setzen des entsprechenden Bits auf Null kannst Du sie auch
wieder ausschalten. Achte darauf, das Du die anderen Bits nicht
unbeabsichtigt änderst.
Siehe dazu auch den Artikel:
http://www.mikrocontroller.net/articles/Bitmanipulation
Hi
>hier mein kurzer programmausschnitt:
Sieht nicht so aus.
> TIMSK |= (1<<TOIE2) | (1<<OCIE2); // Interrupt bei Overflow und Compare
Match
Wenn man die Interrupts durch Setzen der Bits einschaltet, kann man sie
durch Löschen auch wieder ausschalten.
Man sollte wenigstens verstehen, was man kopiert.
MfG Spess
ganz ehrlich. ich halte es in so einem forum nicht für nötig die
shiftaste zu benutzen. manchmal kommt es mir hier so vor, als könnte
eine korrekte Groß- und Kleinschreibung leute glücklich machen.
aber das war jetzt ja auch nicht der grund für meinen post. ich habe ja
ein ganz anderes problem.
mfg
andi schrieb:> ganz ehrlich. ich halte es in so einem forum nicht für nötig die> shiftaste zu benutzen.>
dann hast du ja Glück, dass du jemanden in diesem Forum gefunden hast,
der es für notig hielt dir zu antworten...
Ich finde diese Ignoranz dt. Rechtschreibung zeugt von einer gehörigen
Portion Ignoranz und Aroganz!
spess53 schrieb:> Hi>>>hier mein kurzer programmausschnitt:>> Sieht nicht so aus.>>> TIMSK |= (1<<TOIE2) | (1<<OCIE2); // Interrupt bei Overflow und Compare> Match>> Wenn man die Interrupts durch Setzen der Bits einschaltet, kann man sie> durch Löschen auch wieder ausschalten.>> Man sollte wenigstens verstehen, was man kopiert.>> MfG Spess
danke spess. es ist nicht so, dass ich nicht verstehe was ich
programmiere. aber hatte wohl grad einfach ein brett vor dem kopf. hab
viel zu kompliziert gedacht.
mfg
Grossschreiber schrieb:> andi schrieb:>> ganz ehrlich. ich halte es in so einem forum nicht für nötig die>> shiftaste zu benutzen.>>> dann hast du ja Glück, dass du jemanden in diesem Forum gefunden hast,> der es für notig hielt dir zu antworten...>> Ich finde diese Ignoranz dt. Rechtschreibung zeugt von einer gehörigen> Portion Ignoranz und Aroganz!
tut mir leid. ich weiß echt nicht was das problem einiger hier ist. was
bringt es denn bitte außer mehr zeitaufwand wenn man hier auf penible
Groß/Kleinschreibung achtet.
dieses forum beschäftigt sich mit mikrocontrollern und allem was dazu
gehört. dazu ist es eine hervorragende möglichkeit bei fragen und
antworten zu diesem thema mit anderen auszutauschen bzw. anderen zu
helfen.
vielleicht sollte sich der ein oder andere hier im forum mal darüber
gedanken machen, ob er nicht in einem "deutschgrammatikforum" besser
aufgehoben wäre.
mfg andi
andi schrieb:> tut mir leid. ich weiß echt nicht was das problem einiger hier ist. was> bringt es denn bitte außer mehr zeitaufwand wenn man hier auf penible> Groß/Kleinschreibung achtet.>
...wenn deine Programme auch so oberfläch hingeschludert sind, na dann
gute Nacht.
andi schrieb:> was> bringt es denn bitte außer mehr zeitaufwand wenn man hier auf penible> Groß/Kleinschreibung achtet.
Es erleichtert das Lesen. Ohne groß/klein drückst Du aus, dass Dir der
Leser egal ist. Soll er sich ruhig ein bisschen mehr Mühe geben als
mit.
Statt dass sich der ganze Rest bemüht, könnte sich der Eine, der
schreibt, vielleicht Mühe geben? Wäre das nicht besser?
Der Sinn ist mit Groß/Kleinschreibung einfach schneller zu erfassen (und
manchmal nur mit ihr: er hat in moskau liebe genossen).
Hi
>vielleicht sollte sich der ein oder andere hier im forum mal darüber>gedanken machen, ob er nicht in einem "deutschgrammatikforum" besser>aufgehoben wäre.
Warum fragst du dann nicht in einem englischsprachigen Forum?
Für mich ist ist eine (möglichst) korrekte Schreibweise, incl.
Groß-/Kleinschreibung ein Ausdruck der Bildung. Und die schaltet man
auch nicht einfach an und ab. Also wenn du deine, hoffentlich vorhanden,
Bildung weiter verheimlichen willst, dann bleib bei deiner Schreibweise.
MfG Spess