Forum: Mikrocontroller und Digitale Elektronik Kriege Timer 1 im Mega2560 nicht zum laufen!


von Mike Litoris (Gast)


Lesenswert?

Hi!

Folgendes Problem: Ich brauche auf einem MEGA2560 einen Timerinterrupt 
im Sekundentakt.
Denke ein 16bit timer entsprechend konfiguriert ist da die beste Wahl.

Bis jetzt habe ich immer mit MEGA328 gespielt, habs da auch immer 
hinbekommen, den Timer richtig zu konfigurieren. Leider klappt es dieses 
mal nicht.

Mein Code:
1
//TIMER STARTEN
2
  //OC Pins abkoppeln
3
  TCCR1A |= ((1 << COM1A1));
4
  TCCR1A |= ((1 << COM1A0));
5
6
  //CTC Modus verwenden
7
  TCCR1A |= ((1 << WGM11));
8
  TCCR1A |= ((1 << WGM10));
9
  
10
  //PRESCALER 1024
11
  TCCR1B |= ((1 << CS12));
12
  TCCR1B |= ((1 << CS11));
13
  TCCR1B |= ((1 << CS10));
14
  
15
  //CTC Modus verwenden
16
  TCCR1B |= ((1 << WGM13));
17
  TCCR1B |= ((1 << WGM12));
18
19
  //Interrupte einschalten
20
  TIMSK1 |= ((1 << OCIE1A));
21
22
23
  OCR1A = 15624;
24
25
  sei();

sowie weiter unten im Code:
1
ISR(TIMER1_COMPA_vect)
2
{
3
  digitalWrite(RoteLEDPin, HIGH);
4
  delay(10);
5
  digitalWrite(RoteLEDPin, LOW);
6
  Serial.print("interrupt");
7
8
  
9
}


Erkennt jemand den Fehler? Ich bin das ganze Kapitel im Datenblat 
durchgegangen, anscheinend hab ich was übersehen?!

Grüße und danke!

von Hubert G. (hubertg)


Lesenswert?

Mit WGM10, 11, 12, 13 hast du FastPWM eingestellt.

von spess53 (Gast)


Lesenswert?

Hi

>  TCCR1B |= ((1 << CS12));
>  TCCR1B |= ((1 << CS11));
>  TCCR1B |= ((1 << CS10));

Das ist External clock source on Tn pin. Clock on rising edge.
Willst du das?

MfG spess

von Mike Litoris (Gast)


Lesenswert?

Hi!


Komisch, warum ich das übersehen hatte.

Sieht jetzt so aus:
1
//TIMER STARTEN
2
  //OC Pins abkoppeln
3
  TCCR1A |= ((1 << COM1A1));
4
  TCCR1A |= ((1 << COM1A0));
5
6
  //CTC Modus verwenden
7
  //TCCR1A |= ((1 << WGM11));
8
  //TCCR1A |= ((1 << WGM10));
9
  
10
  //PRESCALER 1024
11
  TCCR1B |= ((1 << CS12));
12
  //TCCR1B |= ((1 << CS11));
13
  //TCCR1B |= ((1 << CS10));
14
  
15
  //CTC Modus verwenden
16
  //TCCR1B |= ((1 << WGM13));
17
  TCCR1B |= ((1 << WGM12));
18
19
  //Interrupte einschalten
20
  TIMSK1 |= ((1 << OCIE1A));
21
22
23
  OCR1A = 15624;
24
25
  sei();

geht aber immer noch nicht...

von Felix A. (madifaxle)


Lesenswert?

Du veroderst immer in der Form "TCCR1A |=". Setzt du das Teil auch im 
Initfall mal auf einen konstanten Wert wie etwa 0 oder greifst du nur 
hier auf das Register zu und verlässt dich auf den Reset des 
Controllers?

von spess53 (Gast)


Lesenswert?

Hi

>  TCCR1A |= ((1 << COM1A1));
>  TCCR1A |= ((1 << COM1A0));

Passt nicht zum Kommentar.

>  //CTC Modus verwenden
>  TCCR1B |= ((1 << WGM12));

bei CTC mit OCR1A als Top muss WGM12 und WGM13 gesetzt sein.

MfG Spess

von Thomas E. (thomase)


Lesenswert?

Mike Litoris schrieb:
> //OC Pins abkoppeln
>   TCCR1A |= ((1 << COM1A1));
>   TCCR1A |= ((1 << COM1A0));

Was bezweckst du denn damit?

mfg.

von Frederik H. (diveturtle93)


Lesenswert?

Hallo

> //Interrupte einschalten
> TIMSK1 |= ((1 << OCIE1A));

Hier hast du ein Falsches Register benutzt.

Es müsste nur TIMSK heißen.

: Bearbeitet durch User
von Mike Litoris (Gast)


Lesenswert?

spess53 schrieb:
> bei CTC mit OCR1A als Top muss WGM12 und WGM13 gesetzt sein.

Ich brauch doch Mode 4 und nicht Mode 12? Für Mode 4 nur WGM12.

Felix A. schrieb:
> Du veroderst immer in der Form "TCCR1A |=". Setzt du das Teil auch im
> Initfall mal auf einen konstanten Wert wie etwa 0 oder greifst du nur
> hier auf das Register zu und verlässt dich auf den Reset des
> Controllers?

Der Rest sollte automatisch 0 sein, oder?

Thomas E. schrieb:
> Mike Litoris schrieb:
>> //OC Pins abkoppeln
>>   TCCR1A |= ((1 << COM1A1));
>>   TCCR1A |= ((1 << COM1A0));
>
> Was bezweckst du denn damit?

"These bits control the Output Compare pin (OC0A) behavior. If one or 
both of the COM0A1:0 bits are set, the
OC0A output overrides the normal port functionality of the I/O pin it is 
connected to."
Das brauch ich nicht, deswegen COMA1 und COMA0 auf 0 für "Normal port 
operation, OC0A disconnected."

Danke schonmal!

von Thomas E. (thomase)


Lesenswert?

spess53 schrieb:
> bei CTC mit OCR1A als Top muss WGM12 und WGM13 gesetzt sein.

Nee, das ist schon richtig so. 12/13 ist mit ICR1 als Top.

mfg.

von Thomas E. (thomase)


Lesenswert?

Frederik H. schrieb:
> Es müsste nur TIMSK heißen.

Nein. Es gibt ein Leben nach dem Atmega8.

Mike Litoris schrieb:
> Das brauch ich nicht, deswegen COMA1 und COMA0 auf 0 für "Normal port
> operation, OC0A disconnected."

Und warum setzt du das dann auf 1?

Hängt da deine LED dran?

mfg.

von Felix A. (madifaxle)


Lesenswert?

Normal Port Operation, also kein Zugriff durch den Timer, geht über 
COM1A1=0 und COM1A0=0.

OCR1A wird benutzt, wenn nur WGM12=1.

Im TCCR1B den Takt einstellen (das weißt bislang nur du).

Im TIMSK1 nur OCIE1A=1 setzen.

Dann noch den Interruptvektor setzen und sei(); benutzen, um die zu 
aktivieren.

Wenn du immerzu TCCR1A |= ... benutzt über viele Zeilen, wird es zum 
Einen unübersichtlich und zum Anderen (das hängt davon ab) wurde 
vielleicht woanders auf das Register zugegriffen und es steht irgendwo 
eine 1, die aber stört.

Durch TCCR1A = (1<<...) | (1<<..) | 1<<.....) würde TCCR1A einen 
definierten Wert bekommen.

: Bearbeitet durch User
von Kaj (Gast)


Lesenswert?

Timer 1 wird von dem Arduinozeug intern gebraucht! Nimm 'nen anderen 
Timer, dann sehen wir weiter.

von Veit D. (devil-elec)


Lesenswert?

Kaj schrieb:
> Timer 1 wird von dem Arduinozeug intern gebraucht! Nimm 'nen
> anderen
> Timer, dann sehen wir weiter.

Ist doch gar nicht wahr. Warum wird immer so ein Unsinn erzählt.
Timer 1 wird nur verwendet wenn man mit den analogWrite Befehl auf Pin 9 
und/oder 10 verwendet. Macht man das nicht, ist Timer 1 vollkommen frei 
verwendbar. Andererseits spricht auch nichts dagegen einen Timer 
mehrfach zuverwenden, mit all seinen ISRs. Muß man sich nur vorher mehr 
Gedanken machen.

@ Mike:  mir fehlt der komplette Code?
Und serial.print hat im ISR Handler auch nichts zu suchen. ISR im ISR. 
Macht man nicht. Führt immer zu Problemen.

von Mike Litoris (Gast)


Lesenswert?

Hi!

Ich bin das Datenblatt nochmal durchgegangen und habe nun folgende 
Konfiguration:
1
  //TIMER STARTEN  
2
        //CTC Modus und 1024 Vorteiler
3
  TCCR1B = (1<<WGM12) | (1<<CS10) | (1<< CS12);
4
  TIMSK1 |= (1<<OCIE1A);
5
6
7
  OCR1A = 15625;
8
9
  sei();

Damit sollte der Interrupt einmal pro Sekunde aufgerufen werden:
16000000/(1024*15624) = 1


Dies ist aber nicht der Fall, der Interrupt wird sehr viel öfter 
aufgerufen.
Wo liegt nun der Fehler?

Veit D. schrieb:
> Und serial.print hat im ISR Handler auch nichts zu suchen. ISR im ISR.
> Macht man nicht. Führt immer zu Problemen.

Weiss ich, ist nur zum testen.

Felix A. schrieb:
> Wenn du immerzu TCCR1A |= ... benutzt über viele Zeilen, wird es zum
> Einen unübersichtlich und zum Anderen (das hängt davon ab) wurde
> vielleicht woanders auf das Register zugegriffen und es steht irgendwo
> eine 1, die aber stört.
>
> Durch TCCR1A = (1<<...) | (1<<..) | 1<<.....) würde TCCR1A einen
> definierten Wert bekommen.

Hab versucht das zu beherzigen. Danke!

Grüße!

von Karl H. (kbuchegg)


Lesenswert?

Veit D. schrieb:

> Ist doch gar nicht wahr. Warum wird immer so ein Unsinn erzählt.
> Timer 1 wird nur verwendet wenn man mit den analogWrite Befehl

Welcher Timer wird im Arduino benutzt um die Systemuhr zu betreiben?

(Disclaimer: Ich weiss es nicht. Ich frage nur. Dass irgendein Timer 
benutzt wird, ist klar. Denn wie soll sonst millis() funktionieren. Die 
Frage ist: welcher?)

von Mike Litoris (Gast)


Lesenswert?

Karl H. schrieb:
> Veit D. schrieb:
>
>> Ist doch gar nicht wahr. Warum wird immer so ein Unsinn erzählt.
>> Timer 1 wird nur verwendet wenn man mit den analogWrite Befehl
>
> Welcher Timer wird im Arduino benutzt um die Systemuhr zu betreiben?
>
> (Disclaimer: Ich weiss es nicht. Ich frage nur. Dass irgendein Timer
> benutzt wird, ist klar. Denn wie soll sonst millis() funktionieren. Die
> Frage ist: welcher?)

Ich verwende die Funktion nicht. soweit ich weiss, wird der Timer dafür 
nur verwendet, wenn man die FUnktion mindestens einmal aufruft?

von Karl H. (kbuchegg)


Lesenswert?

Mike Litoris schrieb:

> Ich verwende die Funktion nicht. soweit ich weiss, wird der Timer dafür
> nur verwendet, wenn man die FUnktion mindestens einmal aufruft?

Das glaub ich ehrlich gesagt nicht. Das wäre ziemlich unsinnig bei jedem 
millis() Aufruf erst mal lang und breit zu prüfen, ob der Timer nicht 
schon läuft.

Sorry. Aber Arduino funktioniert nicht nach dem Prinzip "You don't pay 
for what you don't use". Wenn das Ardunion System hochfährt krallt es 
sich ein paar Dinge und setzt sein Basisystem auf. Möglich, das einzelne 
Komponenten erst mit der Benutzung allokiert werden. Aber von 
grundlegenden Sachen kann man davon ausgehen, dass die von Anfang an von 
der Basissoftware ohne Rücksicht auf Verluste allokiert werden. Und 
gerade bei Timern wäre ich da vorsichtig. ALs Arbeitspferde für fast 
alles gibt es kaum ein Programm, welches nicht mindestens 1 Timer in 
Beschlag hat.

Aber: das lässt sich ja rauskriegen, indem man in einem Testprogramm 
welches sonst nichts macht, einfach mal in loop() die 
Timerkonfigurationsregister sich ausgeben lässt. Wenn da alles 0 ist, 
dann ist der Timer unbenutzt.

: Bearbeitet durch User
von Mike Litoris (Gast)


Lesenswert?

Ich konnte leider nicht rausfinden, welchen Timer die millis() Funktion 
nutzt.

Ich hab den Interrupt daher mal auf Timer 3 umgezogen. Der wird ja 
komplett identisch angesteuert:
1
  //TIMER STARTEN
2
  TCCR3B = (1<<WGM12) | (1<<CS10) | (1<< CS12);
3
  TIMSK3 |= (1<<OCIE3A);
4
5
6
  OCR3A = 15624;
7
8
  sei();

und:
1
ISR(TIMER3_COMPA_vect){
2
  
3
  digitalWrite(RoteLEDPin, HIGH);
4
  delay(10);
5
  digitalWrite(RoteLEDPin, LOW);
6
  Serial.println("interrupt");
7
}

selbes Phänomen wie mit Timer 1: Interrupt wird ausgelößt, aber viel zu 
schnell...

von Mike Litoris (Gast)


Lesenswert?

Hier nochmal der gesamte Code:
1
//Array zum Speichern aller analogen Eingänge
2
int AnalogWert[16] = {0};
3
4
//Pindefinitionen Ausgänge
5
int RoteLEDPin = 13;      //Rote LED
6
7
8
void setup() {
9
  Serial.begin(115200);
10
11
  //Alle LED Ausgänge setzen
12
  pinMode(RoteLEDPin, OUTPUT);
13
14
  TimerConfig();
15
}
16
17
void loop() {
18
19
}
20
21
void TimerConfig()
22
{
23
  TCCR5B = 0;
24
  TCCR5B |= (1<<WGM52) | (1<<CS50) | (1<< CS52);
25
  
26
  TIMSK5 = 0;
27
  TIMSK5 |= (1<<OCIE5A);
28
29
  OCR5A = 15624;
30
  sei();
31
}
32
33
34
ISR(TIMER5_COMPA_vect){
35
  
36
  digitalWrite(RoteLEDPin, HIGH);
37
  digitalWrite(RoteLEDPin, LOW);
38
}

Das Signal am Pin 13 hat ungefähr eine Frequenz von 61Hz. Es sollte 1 Hz 
sein.

16MHz, 1024 Vorteiler, 15624 Compare Wert...

Jemand eine Idee?

von Joachim B. (jar)


Lesenswert?

Veit D. schrieb:
> Kaj schrieb:
>> Timer 1 wird von dem Arduinozeug intern gebraucht! Nimm 'nen
>> anderen
>> Timer, dann sehen wir weiter.
>
> Ist doch gar nicht wahr. Warum wird immer so ein Unsinn erzählt.
> Timer 1 wird nur verwendet wenn man mit den analogWrite Befehl auf Pin 9
> und/oder 10 verwendet.

hmm, komisch, ich würde dir ja gerne glauben, aber ich habe hier ein 
Programm das auf dem Arduino nano328p auf Timer1 läuft, das selbe (OK 
das gleiche) Programm eben nicht mit Timer1 auf dem mighty m1284p 
Arduino Clone, aber eine kleine Änderung zu Timer3 und es läuft eben.

Ich finde keine Erklärung warum der mighty Arduino Clone nicht mit dem 
Programm auf Timer1 läuft.

von Mike Litoris (Gast)


Lesenswert?

Joachim B. schrieb:
> hmm, komisch, ich würde dir ja gerne glauben, aber ich habe hier ein
> Programm das auf dem Arduino nano328p auf Timer1 läuft, das selbe (OK
> das gleiche) Programm eben nicht mit Timer1 auf dem mighty m1284p
> Arduino Clone, aber eine kleine Änderung zu Timer3 und es läuft eben.
>
> Ich finde keine Erklärung warum der mighty Arduino Clone nicht mit dem
> Programm auf Timer1 läuft.

Nagut, ich habs jetzt mit timer 1, 3 und 5 ausprobiert. Immer das selbe 
Ergebnis.

Ich verstehe auch ehrlich gesagt nicht, was noch falsch sein könnte. 
SOllte eigentlich alles passen jetzt?

Grüße!

von Karl H. (kbuchegg)


Lesenswert?

Mike Litoris schrieb:

> Ich verstehe auch ehrlich gesagt nicht, was noch falsch sein könnte.
> SOllte eigentlich alles passen jetzt?


Sehe ich auch so. Habs 3 mal nachgerechnet. Aber ein Faktor ~60 und das 
noch dazu zu schnell ist ungewöhnlich. Da klingelt gar nichts.

Moment. Strohhalm greif.
Hast du schon mal probiert, ob dein µC ständig resetet?
Im setup(): Led ein, delay 1 Sekunde, LED aus, delay 1 Sekunde

: Bearbeitet durch User
von Felix A. (madifaxle)


Lesenswert?

Hast du mal ins OCR5A geschrieben und eine Sekunde später den Wert aus 
diesem Register gelesen und mal per Uart an ein Terminal gesendet? 
Scheint zwar irgendwie sinnlos, aber vielleicht gibt es da irgendwo ne 
Macke...

von Felix Adam (Gast)


Lesenswert?

Oder noch einfacher: gibt die Arduino-IDE ein Listfile (.lss oder sowas) 
aus, in dem man den Quellcode samt Assemblercode sieht? Da könnte sich 
auch ein Blick lohnen.

von Joachim B. (jar)


Lesenswert?

Mike Litoris schrieb:
> Nagut, ich habs jetzt mit timer 1, 3 und 5 ausprobiert. Immer das selbe
> Ergebnis.

hast du nachgesehen ob alle Bits in den passenden Register liegen?
vielleicht hilft das ja?
1
#if defined(__AVR_ATmega328P__)
2
  #define   TIMSKx              TIMSK1
3
  #define   OCIExA              OCIE1A
4
  #define   TIMERx_COMPA_vect   TIMER1_COMPA_vect  // ATmega
5
  #define   TCCRxA              TCCR1A
6
  #define   COMxA0              COM1A0
7
  #define   OCRxA               OCR1A
8
  #define   TCCRxB              TCCR1B
9
  #define   WGMx2               WGM12
10
  #define   CSx0                CS10
11
12
  #define LED_ARDUINO      5
13
  #define LED_ARDUINO_DDR  DDRB
14
  #define LED_ARDUINO_PORT PORTB
15
  #define LED_ARDUINO_ON   LED_ARDUINO_PORT|=(1<<LED_ARDUINO)
16
  #define LED_ARDUINO_OFF  LED_ARDUINO_PORT&=~(1<<LED_ARDUINO)
17
18
// arduino nano v3
19
// D0 (Rx)        PD0
20
// D1 (Tx)        PD1
21
// D2 (Int0)      PD2
22
// D3 (Int1)      PD3
23
// D4 (XCK/T0)    PD4
24
// D5 (T1)        PD5
25
// D6 (AIN0)      PD6
26
// D7 (AIN1)      PD7
27
// D8 (ICP1)      PB0
28
// D9 (OC1A)      PB1 (PWM)
29
// D10(SS/OC1B)   PB2 (PWM)
30
// D11(MOSI/OC2)  PB3 (PWM)
31
// D12(MISO)      PB4
32
// D13(SCK)       PB5 (LED)
33
34
// ANALOG
35
// A0 (ADC0)      PC0
36
// A1 (ADC1)      PC1
37
// A2 (ADC2)      PC2
38
// A3 (ADC3)      PC3
39
// A4 (ADC4/SDAglb)  PC4
40
// A5 (ADC5/SCLgrn)  PC5
41
42
//#if defined(__AVR_ATmega328P__)
43
#elif defined(__AVR_ATmega1284P__)
44
45
  #define   TIMSKx              TIMSK3
46
  #define   OCIExA              OCIE3A
47
  #define   TIMERx_COMPA_vect   TIMER3_COMPA_vect  // ATmega
48
  #define   TCCRxA              TCCR3A
49
  #define   COMxA0              COM3A0
50
  #define   OCRxA               OCR3A
51
  #define   TCCRxB              TCCR3B
52
  #define   WGMx2               WGM32
53
  #define   CSx0                CS30
54
55
//                                m1284p
56
//    mighty ARDUINO          +----\/----+
57
//                        RST |1  ISP  36| VCC
58
//              RX0 (D 8) PD0 |2         | PB7 (D 7) PWM/SCK 
59
 #define LED_ARDUINO                              7
60
 #define LED_ARDUINO_PORT                         PORTB
61
 #define LED_ARDUINO_DDR                          DDRB
62
 #define LED_ARDUINO_ON       LED_ARDUINO_PORT  |= (1<<LED_ARDUINO)
63
 #define LED_ARDUINO_OFF      LED_ARDUINO_PORT &= ~(1<<LED_ARDUINO)
64
 
65
//              TX0 (D 9) PD1 |3         | PB6 (D 6) PWM/MISO 
66
//        RX1/INT0 (D 10) PD2 |4         | PB5 (D 5) MOSI 
67
//        TX1/INT1 (D 11) PD3 |5         | PB4 (D 4) PWM/SS
68
//             PWM (D 12) PD4 |6         | PB3 (D 3) PWM 
69
//             PWM (D 13) PD5 |7         | PB2 (D 2) INT2 
70
//             PWM (D 14) PD6 |8         | PB1 (D 1) 
71
//             PWM (D 15) PD7 |9         | PB0 (D 0) 
72
//                            |          |
73
//                            |          |
74
//          SCLgrn (D 16) PC0 |10      27| PA0 (AI 0 / D24)
75
//          SDAglb (D 17) PC1 |11      26| PA1 (AI 1 / D25)
76
//             TCK (D 18) PC2 |12      25| PA2 (AI 2 / D26)
77
//             TMS (D 19) PC3 |13      24| PA3 (AI 3 / D27)
78
//             TDO (D 20) PC4 |14      23| PA4 (AI 4 / D28)
79
//             TDI (D 21) PC5 |15      22| PA5 (AI 5 / D29)
80
//                 (D 22) PC6 |16      21| PA6 (AI 6 / D30)
81
//                 (D 23) PC7 |17      20| PA7 (AI 7 / D31)
82
//                        GND |18      19| AREF
83
//                            +----------+
84
85
//#elif defined(__AVR_ATmega1284P__)
86
#else
87
 #error "board_wahl_falsch.h"
88
#endif // defined(__AVR_ATmega1284P__)

von Dieter F. (Gast)


Lesenswert?

Pack den

  TCCR5A = 0;

mal noch mit rein, dann funktioniert es auch.

von Mike Litoris (Gast)


Lesenswert?

Dieter F. schrieb:
> Pack den
>
>   TCCR5A = 0;
>
> mal noch mit rein, dann funktioniert es auch.

Oha. Funktioniert.

Erklärung? Klingt nämlich ziemlich nach Vodoo?


Grüße - ich brauch jetzt erstma n Bier :D

von Joachim B. (jar)


Lesenswert?

kann man Kriege nicht durch "bekomme" ersetzen?

Kriege sind so negativ

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Timer 0 wird für delay, millis und micros verwendet

Timer 1 wird die Servo Lib verwendet, auf Mega Timer 5

tone() nutzt Timer 2

und dann sind wie schon geschrieben bei Verwendung von analogWrite für
verschiedene Pins verschiedene Timer im Einsatz, aber nur dann eben.

Timer 0 sollte man wirklich in Ruhe lassen. Denn fast jeder gute Code
nutzt millis().

Mir ist noch nicht bekannt das es mit analogWrite und Timer Nutzung
Problem gab.

von Dieter F. (Gast)


Lesenswert?

Mike Litoris schrieb:
> Erklärung? Klingt nämlich ziemlich nach Vodoo?

Der Versuch einer Erklärung ...

Aus welchen Gründen auch immer (Arduino-Default ?) ist WGM50 beim Start 
gesetzt. Dadurch kommst du in den Mode5 (fast pwm) mit Top-Wert 0x00FF
(passt zu den ca. 61 Hz bei Prescaler 1024).
Bei fast pwm wird das Output Compare Interrupt Flag scheinbar auch 
gesetzt ...

"In non-inverting Compare Output mode,
the Output Compare (OCnx) is cleared on the compare match between TC NTn 
and OCRnx, and set at BOTTOM.
In inverting Compare Output mode output is set on compare match and 
cleared at BOTTOM. "

Müsste man mal debuggen und sich anschauen ... ich hab es halt probiert, 
weil ich keiner Initialisierung außer meiner eigenen vertraue :-)

Haut mich :-)

von kjel (Gast)


Lesenswert?

Joachim B. schrieb:
> kann man Kriege nicht durch "bekomme" ersetzen?
>
> Kriege sind so negativ

Nur wenn man so assoziiert.

von Joachim B. (jar)


Lesenswert?

kjel schrieb:
>> Kriege sind so negativ
>
> Nur wenn man so assoziiert.

kommt nicht von mir sondern von meinem Deutschlehrer.

Wer kriegt denn schon? Man bekommt höchstens.

von kjel (Gast)


Lesenswert?

Joachim B. schrieb:
> kjel schrieb:
>>> Kriege sind so negativ
>>
>> Nur wenn man so assoziiert.
>
> kommt nicht von mir sondern von meinem Deutschlehrer.
>

Und dann will es keiner gewesen sein.

von Joachim B. (jar)


Lesenswert?

kjel schrieb:
> Und dann will es keiner gewesen sein.

stimmt und deswegen sollte man "Kriege" vermeiden wo es geht zumal es 
passenderen Ersatz gibt, hier z.B. "Bekomme"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.