.. Vielleicht kann mir ja wer mal einen Hinweis darüber geben , was ich da grundlegend falsch mache ..
Hallo Gerhard,
alles Gute im Neuen Jahr.
Siehe Kommentar oben, also statt :
DDRB = (1<<PB5)|(1<<PB6);
schreibe ich:
DDRB |= (1<<PB5)|(1<<PB6);
(der senkrechte Strich vor dem Gleichheitszeichen: [Alt Gr]+[> <|]
Gaanz zweifelhaft erscheint mir diese Schreibweise:
TCCR1A = (1<< COM1A1) + (1<< COM1B1) + (1<< WGM11) + (1<< WGM10);
TCCR1B = (1<< WGM12) + (1<< CS11);
Was machen die vielen Pluszeichen? Hier empfiehlt sich ebenfalls die oben genannte Schreibweise: der "oder"Operator | vor dem Gleichheitszeichen und ebenso statt der Pluszeichen. Aber Deine Schreibweise habe ich nicht getestet. Sieht mir nur etwas sehr strange aus :-/ - und ich vermute, dass das keine Spezialität Deines Compilers ist.
Mal (m)ein aktuell laufendes Beispiel (Studio4, mega1284) :
Code:
// ============================================================================= =
// === Initialisierung fuer ADC mega1284 MIT Interrupt free running
// siehe Dokumentation Atmel-8272G-AVR-01/2015
// === ADC0/PC0 auf 10 Bit, fertige Wandlung ###>>> löst Interrupt aus
void ADC0_i10free (void) // Init ADC-0, 10 Bit, mit free runn. Interrupt
{ // Kanal 0 <=> Temperatur RN VNRN-VN2
// - - - - - - - - - - - - - - -
ADMUX = 0 ; // Multiplexer zeigt auf ADC_0_ ! !
ADMUX |= (1<<REFS0); // Referenzspannung ist AVcc S 249
ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // Prescaler=clock/128 251
ADCSRA |= (1<<ADATE); // Auto Triggering Enable 250
// es wird bei clock 20 Mhz alle ca. 86,40 µs getriggert: 20e6/128/13,5 =>
// 11 574,07 Interrupts pro Sekunde (ca. 11kHz)
// =>> Erforderlich ist uU. eine Anpassung an die Quelle <<<<< === z.B.:
// Sharp GP2Y0A60SZLF ca. 20,5 ms/Wandlung => alle 237 ADC-ISR !!!
// genauer: ca 12 Zyklen in 1 ms <=> 1200 Hz
ADCSRA |= (1<<ADIE); // ADC Interrupt Enable 251
ADCSRA |= (1<<ADEN); // ADC Enable 250
ADCSRA |= (1<<ADSC); // starte gleich die erste Wandlung 250
In_adc = 0; // Durchlaufzähler ADC zum Kanalumschalten
} // Ende von void ADC_in_10free(void)
// ============================================================================= =
Lesezeichen