Hallo Gerhard,.. Vielleicht kann mir ja wer mal einen Hinweis darüber geben , was ich da grundlegend falsch mache ..
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) // ============================================================================= =







Zitieren
Lesezeichen