Du hast Mode #1 für Timer 1 und OCR1x ist größer als TOP?
Hiho,
Endlich hab ich mal wieder etwas Zeit zum rumbasteln
Allerdings scheitere ich grade daran meine Motoren anzusteuern.
Folgenden Code hab ich mir aus verschiedenen Tutorials und Foreneinträgen zusammengestückelt, allerdings klappt es nicht...
Das Multimeter zeigt am Motorausgang des Boards ~10,5 V an, egal wie ich OCR1A/B setze. Wen ich nen Motor anschließe bewegt sich allerdings garnichts.Code://10Bit FastPWM TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM10); TCCR1B = (1<<CS11); //Pins als Ausgang DDRB = _BV(DDB0) | _BV(DDB1); DDRC = _BV(DDC6) | _BV(DDC7); PORTC = _BV(PC6); //Richtung Motor I PORTB = _BV(PB0); //Richtung Motor II //Set Speed (0-1023) OCR1A = 512; OCR1B = OCR1A;![]()
Das Beispielprogramm mit Bascom(von der CD) funktioniert.
Wahrscheinlich ist es irgend ein dummer Anfängerfehler
Bin für jede Hilfe dankbar![]()
Du hast Mode #1 für Timer 1 und OCR1x ist größer als TOP?
Disclaimer: none. Sue me.
Oh, das war anscheinend ein Kopierfehler... :-\
Eigentlich nutze ich Mode #7:
TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM10)| (1<<WGM11)| (1<<WGM12);
So stehts auch im Quellcode...
Ich habe WGM10/11/12 gesetzt also sollte TOP doch 0x03FF(1023) sein oder?
Servus, beim atmega16 muss WGM12 nicht bei TCCR1A sondern bei TCCR1B gesetzt werden:
TCCR1B |= (1<<WGM12);
Servus ^^
Ich hab nen Mega32 (Das instant-Board von Robotikhardware)
Die Bits sind alle streng nach Handbuch gesetzt. Ich habs trotzdem mal ausprobiert, allerdings hat sich nichts geändert...
Wenn ich den Fehler wenigstens eingrenzen könnte, aber ich mache nichts anderes, das oben ist im Endeffekt meine main()...
Oder muss ich da noch was machen?
Hallo,
mir sind die Pins zuwenig, die Du auf Ausgang stellst,
das sollten 6 Stück sein, nicht 4 wie oben !
Im Bascom-Beispiel sind das diese Ports:
Es müssen nicht nur die Richtungs-Pins auf Ausgang, sondern auch die PWM Ausgänge nochmal extra als Ausgang definiert werden.Code:'Ports für linken Motor Config Pinc.6 = Output 'Linker Motor Kanal 1 Config Pinc.7 = Output 'Linker Motor Kanal 2 Config Pind.4 = Output 'Linker Motor PWM 'Ports für rechten Motor Config Pinb.0 = Output 'Rechter Motor Kanal 1 Config Pinb.1 = Output 'Rechter Motor Kanal 2 Config Pind.5 = Output 'Rechter Motor PWM
PS:
Mega 16 und Mega 32 sind vom Prinzip intern gleich, alle Register usw.
Hiho,
Danke das wars anscheinend. Ich setze jetzt
DDRD = _BV(DDD4) | _BV(DDD5);
und es klappt.
Allerdings bekomme ich keine 12V (=Eingangspannung am Board) sondern nur 10,7; Aber ich denke das kann ich kompensieren wenn ich die Eingangsspannung auf 14V anhebe. Wichtig ist erstmal das ich jetzt Räder dranpappen kann
Danke!
Das mit dem Spannungsabfall ist normal, kommt von den Transistoren im L293.
Wenn Du die Eingangsspannung anhebst, musst Du aber evtl. einen Kühlkörper an den 7805 pappen, da der sehr warm werden kann, da der Spannungsunterschied schon sehr gross ist, 14 - 5V.
Lesezeichen