Hallo zusammen, ich arbeite mit dem AT90CAN128 Mikrocontroller, ich benutze dafür Atmel Studio 7 und will damit ein Motor starten. Die Schaltung habe ich schon gebaut nun brauche ich nur die Beispiel Code dafür in C Sprache. kann mir jemand da helfen? vielen dank
Hier steht wie man einen Port als Ausgang auf 0/1 setzt. Damit kannst Du den Motor ein/ausschalten: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Ausg.C3.A4nge
Danke gigigigi das habe ich schon benutzt aber ich kriege in der Stelle immer Fehler, deswegen wollte ich fragen ob jemanden schon eine Code hat damit ich das ganze erstmals testen kann. Ich brauche ein einfaches Beispiel um den Motor zu starten da ich mit Software nicht wirklich gut auskenne :(
sammirou schrieb: > Danke gigigigi > das habe ich schon benutzt aber ich kriege in der Stelle immer Fehler, > deswegen wollte ich fragen ob jemanden schon eine Code hat damit ich das > ganze erstmals testen kann. Ich brauche ein einfaches Beispiel um den > Motor zu starten da ich mit Software nicht wirklich gut auskenne :( Dann poste Deinen Code. Den Fehler finden wir schon.
Hallo zusammen, ich habe folgende Code geschrieben und habe die auf dem at90can128 Mikrocontroller geflasht ist aber nix passiert. Hat es mit der Bits Initialisierung was zu tun? Habe ich die richtigen Bits benutzt? der Motor soll seine Geschwindigkeit erhöhen dann wieder langsamer drehen. was mache ich da falsch :(
#include <avr/io.h> #include <avr/interrupt.h> #include <inttypes.h> #include <stdbool.h> #include <avr/pgmspace.h> #define F_CPU 16000000ULL #include <util/delay.h> void InitPWM() { TCCR0A|=(1<<WGM00)|(1<<WGM01)|(1<<COM0A1)|(1<<CS00); DDRB|=(1<<PB7); } void SetPWMOutput(uint8_t duty) { OCR0A=duty; } void Wait() { _delay_loop_2(3200); } void main() { uint8_t speed=0; //Initialize PWM Channel 0 InitPWM(); while(1) { //Now Loop with increasing speed for(speed=0;speed<255;speed++) { //Now Set The speed using PWM SetPWMOutput(speed); //Now Wait For Some Time Wait(); } //Now Loop with decreasing speed for(speed=255;speed>0;speed--) { //Now Set The speed using PWM SetPWMOutput(speed); //Now Wait For Some Time Wait(); } } }
Setze doch erstmal einfach den nur Pin auf High (und dass den ganzen PWM Kram raus), dann sollte der Motor mit maximaler Drahzahl laufen. Danach sehen wir weiter. Bis du sicher, dass _delay_loop_2(3200) die gewünschte Zeit dauert? Ich würde _delay_ms() verwenden.
Hallo Stefanus: Der TO hat dazu schon 4 Threads unter verschiedenen Namen laufen: Siehe Beitrag "Atmel Code in C zur Motorsteuerung" unten sind die Links auf die anderen Threads. Da sollte man nicht mehr antworten, sondern ein Mod aufräumen.
Ich habe verschiedene Fragen gestellt deswegen auch verschiedene Pseudo damit ich die unterscheiden kann ich habe nix zu verstecken!!!! und trotzdem sehe ich da kein Problem. Danke Stefan aber Welche PIN soll ich nehmen, ich habe mein Mikrocontroller an PB7 mit dem Motor verbunden und das ist doch der PWM Port für at90can128, den soll ich auf High setzen?
Wenn der Motor an Pin PB7 angeschlossen ist, dann setze diesen Per Software auf High.
remi schrieb: > Ich habe verschiedene Fragen gestellt deswegen auch verschiedene Pseudo > damit ich die unterscheiden kann ich habe nix zu verstecken!!!! > und trotzdem sehe ich da kein Problem. > > Danke Stefan > aber Welche PIN soll ich nehmen, ich habe mein Mikrocontroller an PB7 > mit dem Motor verbunden und das ist doch der PWM Port für at90can128, > den soll ich auf High setzen? Doch, das Problem ist, dass du ähnliche Fragen in verschiedenen Threads gestellt hast, und wir sollen uns jetzt ein Gesamtbild vorstellen... Mach doch mal ein Foto von deinem Aufbau, würde mich interessieren, und kann nur hilfreich sein...
Zu praktisch allen Mikrokontrollern gibt es das Äquivalent zum Hello-World aus der 08/15-C-Programmierung. Da wird ein Pin ein und wieder ausgeschaltet (Blink). Das sollte auch ein Anfänger lesen können (sonst vergiss Dein Vorhaben). Ändere einfach die verwendete Zeit und schließe den Motor, an den verwendeten Pin an. Alternativ kannst Du ja auch gucken, welcher Pin im Beispiel verwendet wird, und diesen an Deine Strippen anpassen. Muss aber nicht sein...
Hallo zusammen, ich habe die fertige Schaltung angehängt, wie ihr das sieht ich benutze den PIN PD0 von meinem Board, ich habe versucht den PIN auf High zu setzen hat der Motor sich aber nicht gedreht
Dann nimm dein Multimeter und mess mal ob der Pin schaltet und falls ja ob der Transistor schaltet. Stell dich nicht an wie ein 4jähriger, benutze dein Hirn, dafür ist es da.
Stecke mal das rote Kabel von PB0 ab und direkt an VCC. Dann sollte sich der Motor drehen. Es sei denn, der Transistor ist kaputt oder die Stromversorgung.
Mal ganz blöd gefragt ... die einzige Energiequelle auf den Bildern ist doch der USB-Anschluss .. richtig? OK, dann wundert es mich nicht, dass der Motor nicht anläuft.
Holger schrieb: > OK, dann wundert es mich nicht, dass der Motor nicht anläuft. Da muß man mit > 24 Volt dran, dann läuft der Motor an -und zwar blau ;-) MfG Paul
wenn ich den Motor an VCC anschließe dreht sich der Motor schon. Ich wollte aber den PIN PD0 oder irgend ein PIN benutzen und das in meiner Code anpassen und dann meine Code auf dem Mikrocontroller flashe sodass der Motor dann auch startet.
Kann es evtl. sein, dass die Spannung vom USB derart zusammenbricht, wenn der Motor anläuft, dass Dein Controller komische Sachen macht. Neu starten wäre noch das harmloseste.
#define F_CPU 16000000UL //Taktfrequenz 1MHz #include <avr/io.h> #include <util/delay.h> int main(void){ DDRD |= (1 << PD0); // damit ist dann PD0 ein Ausgang while(1){ PORTD |= (1 << PD0); //PD0 High } return 0; } Diese Code habe ich geschrieben.
> Stecke mal das rote Kabel von PD0 ab und direkt an VCC. Dann sollte > sich der Motor drehen. Es sei denn, der Transistor ist kaputt Hast du den Transistor überprüft? Wes für ein Typ ist das überhaupt? Nicht dass du versehentlich einen PNP verwendest, oder so.
ist es falsch so einen Transistor bei dieser Schaltung zu benutzen?
Na dann schau doch mal in deinen Schaltplan und denk scharf nach. Hast du einen NPN zur Hand, dann steck den mal in die Schaltung. Gruß Robert
remi schrieb: > ja ein PNP BC327 Transistor remi schrieb: > das wurde auch mir empfohlen dieser Transistor zu nehmen Ja, von Stefan Us in Beitrag "Re: Elektronik Bauteile um Motor zu starten mit AT90CAN" Der schreibt aber sowieso nur Blödsinn. > ist es falsch so einen Transistor bei dieser Schaltung zu benutzen? So ist es. Du benötigst einen NPN Transistor wie mindestens BC337. Oder besser einen, der auch den Anlaufstrom des Motors überlebt. Falls es der Pollin Motor ist, der blockiert ca. 360mA an 10V zieht, dann reicht der BC337 und der Vorwiderstand Rb von 100 Ohm passt auch wenn der uC mit 3.3V läuft.
Der Mikrocontroller läuft mit 5V Spannung. wird es auch gehen wenn ich ein BC547C Transistor nehme? es geht um einen Mabuchi Motor PAT
remi schrieb: > Der Mikrocontroller läuft mit 5V Spannung. > wird es auch gehen wenn ich ein BC547C Transistor nehme? > es geht um einen Mabuchi Motor PAT Wie stellst du dir das eigentlich vor? Willst du jedes kleine Detailproblem hier nachfragen und jedesmal 100 Leute beschäftigen, für dich nachzudenken? Es ist doch nicht zuviel verlangt, sich mal über die Funktionsweise und die Eigenschaften von Transistoren klar zu werden, das ganze überschlägig durchzurechnen und ein Miniprogram zum Schalten eines Ports zu schreiben. Wenn du später im E-Technikbereich arbeiten willst, musst du dringend als erstes lernen, so kleine Probleme selbst zu lösen. Wenn du immer gleich jemanden fragst, nur weil du nach 2 Stunden nachdenken noch nicht auf die Lösung gekommen bist, ist das nichts für dich. Komm wieder her, wenn du dir ein ganzes Wochenende um die Ohren gehauen hast und dann immer noch nicht weiter gekommen bist. Und bemühe dich bitte dringend, schlauere Fragen zu stellen.
Ich habe dir in dem anderen Thread den BC327 als NPN empfohlen. Das ist falsch. Es hätte der BC337 sein sollen. Bei allen anderen NPN/PNP Pärchen hat der NPN Typ immer die kleinere Nummer. Zum Beispiel BC458 und BC558. Blöder Fallstrick. > wird es auch gehen wenn ich ein BC547C Transistor nehme? Ja, wenn der Motor ihn nicht überlastet.
sorry aber ich kenne mich mit so was nicht richtig gut aus, und wollte nur grade wissen ob ich den BC547C Transistor, den ich jetzt zu Verfügung habe, benutzen darf. Ich arbeite mehr mit Software und programmiere gerne aber mit Hardware kenne ich mich nicht gut aus. danke trotzdem für eure Antworten.
remi schrieb: > Ich arbeite mehr mit Software und programmiere gerne aber mit Hardware > kenne ich mich nicht gut aus. Ja das sieht man an deiner Eingangsfrage: sammirou schrieb: > Die Schaltung habe ich schon gebaut nun brauche ich nur die Beispiel > Code dafür in C Sprache. Übrigens ist es NICHT ERWÜNSCHT in einem Thread unter verschiedenen Namen zu posten. Les mal die Netiquette
remi schrieb: > Ich arbeite mehr mit Software und programmiere gerne aber mit Hardware > kenne ich mich nicht gut aus. Warum hast du dann diesen Thread eröffnet? Der Titel sagt jedenfalls, daß du von Software auch keine Ahnung hast. Aus den unzähligen Parallelpostings kann man das ebenfalls entnehmen.
> wird es auch gehen wenn ich ein BC547C Transistor nehme?
Ja, wenn der Motor ihn nicht überlastet.
Wieviel Strom zieht der Motor denn beim Anlaufen?
remi schrieb: > Ich arbeite mehr mit Software und programmiere gerne aber mit Hardware > kenne ich mich nicht gut aus. Du erzählst Blödsinn. Oben hattest du geschrieben, dass du die Hardware schon hast und nur ein Beispiel C-Code brauchst. Also kennst du dich auch mit den einfachsten Software-Themen nicht aus. So funktioniert das nicht. Das, was du machen willst ist wirklich sehr einfach. Und mit den Antworten, die bisher kamen, müsste das Thema auf jeden Fall geklärt sein. Wenn du immernoch Fragen hast, solltest du überlegen, ob das das Richtige für dich ist. Also: Bald ist Ostern. Viel Zeit, mal grundlegend nachzudenken. Komm nach Ostern wieder, aber bitte mit schlauen Fragen.
Stefan schrieb: > Ja, wenn der Motor ihn nicht überlastet. > Wieviel Strom zieht der Motor denn beim Anlaufen? der Motor hat ein Anlaufstrom von 80mA
remi schrieb: > der Motor hat ein Anlaufstrom von 80mA :-/ Welcher kommt denn deinem Motor am nächsten? Vielleicht steht er ja sogar in der Liste? http://www.mabuchi-motor.co.jp/en_US/product/p_0306.html
:
Bearbeitet durch User
Ralf schrieb: >Welcher kommt denn deinem Motor am nächsten? Vielleicht steht er ja >sogar in der Liste? das ist der Flat Typ
aha ... und welcher von den Flat Typen? FC-286SB ist z. B. ein Flat-Typ und hat einen Blockier-Strom von 1,5 A bei 12 Volt ... also nix mit 80 mA!!!
:
Bearbeitet durch User
Günter M. schrieb: > aha ... und welcher von den Flat Typen? Wollt' ich auch gerade fragen. Da gibt' 27 verschiedene. @remi Willst du nicht mal ein wenig mitarbeiten?
Leute ich weiß dass ich nerve aber ich habe jetzt den anderen BC547C Transistor genommen und es hat auch nicht funktioniert, meine Code ist doch richtig geschrieben oder? : #define F_CPU 16000000UL //Taktfrequenz 16MHz #include <avr/io.h> #include <util/delay.h> int main(void){ DDRD |= (1 << PD0); // damit ist dann PD0 ein Ausgang while(1){ PORTD |= (1 << PD0); //PD0 High } return 0; }
Da wir immer noch nicht wissen, welchen Motor Du hast, wissen wir auch immer noch nicht, ob das mit dem Transistor überhaupt geht. Wenn nicht, dann brennt einfach der Transistor jedesmal durch. Hast Du den Rat schon befolgt, mit dem Multimeter einfach mal zu messen, ob der Pin auf HIGH schaltet? PS: fang einfach an und nimm statt dem Motor erstmal eine LED mit Vorwiderstand direkt an den Port-Pin. Wenn die dann blinkt, dann versuch sie nicht direkt sondern per Transistor zum Blinken zu bringen. Und erst wenn das auch geht, kannst Du einen Motor an den Transistor hängen. Bis dahin weißt Du dann hoffentlich auch endlich, welcher Motor GENAU es ist.
:
Bearbeitet durch User
remi schrieb: > Leute ich weiß dass ich nerve aber ich habe jetzt den anderen BC547C > Transistor genommen und es hat auch nicht funktioniert, > meine Code ist doch richtig geschrieben oder? : Geh doch mal systematischer vor, dass ist ja ein Trauerspiel hier... 1) Häng den Motor direkt an GND und VCC. Dreht er sich -> weiter mit 2) 2) Hänge nun den Motor an einen (NPN)-Transistor, wieder zwischen GND und VCC. Die Basis legst du über einen Vorwiderstand ebenfalls auf VCC. Der Transistor müsste also dauernd durchschalten und der Motor sich drehen -> wenn alles i.O. weiter mit 3) 3) nun hängst du die Basis (über einen Vorwiderstand) an den digitalen Ausgang eines Controllers. Schreibe ein Programm, das den Pin auf VCC schaltet. -> Dreht sich der Motor -> 4) 4) Schreibe das Programm um so dass der Pin alle 2-3s zwischen GND und VCC toggelt. Motor soll nun abwechselnd Bremsen und Beschleunigen 5) Schreibe das Programm um so dass der Pin mittels PWM angesteuert wird. Mach das mal. Dadurch handelst du dir immer nur eine Unbekannte ein und kannst Fehler eingrenzen. Und, wenn was nicht klappt: Multimeter und Messen!
:
Bearbeitet durch User
remi schrieb: > Ich habe verschiedene Fragen gestellt deswegen auch verschiedene Pseudo > damit ich die unterscheiden kann ich habe nix zu verstecken!!!! > und trotzdem sehe ich da kein Problem. remi = Sammirou? Das hat man davon wenn man zu einer Sache zu jeder Teilaufgabe einen eigenen Thread beginnt, und dazu auch noch unter verschiedenen Nicks. Verwirrung. Und wir dürfen puzzeln. sammirou schrieb: > Ich brauche ein einfaches Beispiel um den > Motor zu starten da ich mit Software nicht wirklich gut auskenne :( remi schrieb: > Ich arbeite mehr mit Software und programmiere gerne aber mit Hardware > kenne ich mich nicht gut aus. ??? Aber jetzt mal Konstruktiv: Du rätselst noch immer über den Transistor. Warum setzt du nicht die Vorschläge um? Vergiss zunächst den Transistor und teste dein Programm mit einer LED. Dann hast du nicht zwei Baustellen gleichzeitig und kannst den Fehler zuordnen. Lasse sie zuerst blinken. Sonst steht man da und denkt die Software funktioniert nicht obwohl nur die Pole vertauscht wurden. remi schrieb: > wenn ich den Motor an VCC anschließe dreht sich der Motor schon. > Ich wollte aber den PIN PD0 oder irgend ein PIN benutzen und das in > meiner Code anpassen und dann meine Code auf dem Mikrocontroller flashe > sodass der Motor dann auch startet. Du sollst nicht den Motor an Vcc anschließen sndern Motor wie geplant anschließen und ihn mit Transistor manuell testen, also den Transistor bzw seinen Basisvorwiderstand auf + legen. Wenn du das gemeint hast und ich dich nur mißverstanden habe: Mit dem "falschen" Transistor hat das ja geklappt. Ich wette dann klappt das mit dem richtigen nicht. Folglich wäre die Schaltung falsch.
:
Bearbeitet durch User
Alles in allem hat remi hier anschaulich nachgewiesen, dass er nicht systematisch, also ingenieursmäßig, vorgehen kann und selbst die grundlegensten hard- und softwareseitigen Zusammenhänge nicht versteht und - noch viel schlimmer - nicht eigenständig erarbeiten kann. Die Schlussfolgerung lautet deshalb: Falscher Beruf
Danke Stefan und Le X .Es hat geklappt, alles funktioniert wunderbar :) Sorry für die Störung
remi schrieb: > Danke Stefan und Le X .Es hat geklappt, alles funktioniert wunderbar :) > Sorry für die Störung Merk dir am Besten für die Zukunft: immer kleine Schritte machen. Nur immer eine Unbekannte einführen. Alle Teilprobleme einzeln lösen. Niemand entwickelt eine komplexe Schaltung, schreibt eine dicke Firmware dafür und erwartet dann, das alles sofort funktioniert.
> Es hat geklappt, alles funktioniert wunderbar :)
Warum klappt es jetzt? Wo war der Fehler?
@Stefan Us: Nette Frage und auch berechtigt. Aber ein Troll wird sich doch nicht herablassen irgendwelche Antworten zu geben.
@ Schaltplan :) :) :) @ Stefan es lag an dem flashen vom Code auf dem Mikrocontroller ich habe eine andere Baudrate genommen und zwar 125000
@ Stefan: kann ich irgendwie meinen Motor extra mit Spannung versorgen sodass ich nicht die Spannung von dem VCC des Mikrocontroller nehme? Als Schutz für den Mikrocontroller
und hättest Du mit einem Multimeter nachgemessen wie schon vor langem vorgeschlagen, hättest Du gesehen, dass der MC nix tut. Wir geben solche Tipps doch nicht aus Langeweile!
ja habe ich gemessen aber ich bin nicht auf die Idee gekommen dass die Baudrate von meinem Flash Programm geändert werden muss.
wenn Du gemessen hast, warum hast Du uns dann nicht gesagt, dass der PIN nicht umschaltet? Das hätte uns das ganze Rätselraten um die Hardware (Motor / Transistor) erspart!
die alle letzte Frage: ich würde gerne meine Schaltung nicht direkt von dem Mikrocontroller mit 5v versorgen. was gibt's da für alternativen oder Bauteile die ich brauchen werde?
remi schrieb: > kann ich irgendwie meinen Motor extra mit Spannung versorgen sodass ich > nicht die Spannung von dem VCC des Mikrocontroller nehme? > Als Schutz für den Mikrocontroller Ja, das ist sogar üblich so. Bei deinem Schaltplan bin ich auch davon ausgegangen daß du das schon so machst. Man muß aber in der Regel den Masseanschluß beider Stromversorgungen an geeigneter Stelle miteinander Verbinden. Es gibt auch Bauarten, bei denen das nicht muß, aber in deiner Kostruktion ist es notwendig und du hast es auch schon passend im Schaltplan stehen.
ich werde eine stabilisierte Spannungsquelle mit 5V Spannung und dazu ein Optokoppler nehmen um das ganze galvanisch zu trennen. Hat jemanden schon damit gearbeitet? was kann man da empfehlen?
Du hattest doch vorhin geschrieben, dass das deine letzte Frage ist. Dir muss man wirklich alles vorkauen. Hast du keine Lust, selbst nachzudenken oder bist du dazu nicht in der Lage??? Irgendwo hattest du auch geschrieben, dass es um eine wissenschaftliche Arbeit geht. Von wissenschaftlichem Arbeiten merkt man bei dir nix. Ich hoffe, dir beantwortet hier keiner mehr irgend eine Frage, bis du mal zeigst, dass du auch selbst was auf die Reihe kriegst.
remi schrieb: > ich werde eine stabilisierte Spannungsquelle mit 5V Spannung und dazu > ein Optokoppler nehmen um das ganze galvanisch zu trennen. > Hat jemanden schon damit gearbeitet? > was kann man da empfehlen? Wie schon mal geschrieben. Galvanische Trennung ist hier nicht unbedingt notwendig (und wird natürlich die Sache komplizierter und fehlerträchtiger machen). Deshalb, einfach erstmal die Motor-Stromquelle dort anschließen wie in deinem Schaltplan eingezeichnet. Und Masse ist eben Masse für alles. Wenn das funktioniert kannste immer noch galvanisch trenne. Oder auch optisch, oder akustisch, oder mechanisch oder wie auch immmer :)
Schaltungsvorschläge findest du in der Artikelsammlung, sogar ganz konkret für diesen Fall. Und ja, der Motor kann eine eigene andere Spannungsversorgung haben.
Hallo zusammen, alles funktioniert wunderbar mit eigenem Spannungsversorgung, nun habe ich eine Code geschrieben um PWM als Ausgang PIN zu setzen, allerdings weiß ich nicht welche Bits ich auf 1 setzen soll. #include <avr/io.h> #include <avr/interrupt.h> #include <inttypes.h> #include <stdbool.h> #include <avr/pgmspace.h> #define F_CPU 16000000ULL #include <util/delay.h> void InitPWM() { TCCR0A|=(1<<WGM00)|(1<<WGM01)|(1<<COM0A1)|(1<<CS00); DDRB|=(1<<PB7); } void SetPWMOutput(uint8_t duty) { OCR1A=duty; } void main() { uint8_t speed=0; //Initialize PWM Channel 0 InitPWM(); while(1) { //Now Loop with increasing speed for(speed=0;speed<255;speed++) { //Now Set The speed using PWM SetPWMOutput(speed); //Now Wait For Some Time _delay_ms(2000) } //Now Loop with decreasing speed for(speed=255;speed>0;speed--) { //Now Set The speed using PWM SetPWMOutput(speed); //Now Wait For Some Time _delay_ms(2000) } } }
> allerdings weiß ich nicht welche Bits ich auf 1 setzen soll.
Wo willst du ein Bit auf 1 Setzen, warum und welcher Pin ist denn der
gewünschte PWM Ausgang?
PB7 ist der PWM Pin und den soll ich benutzen und dessen BITS initialisieren
lies Dir das Tutorial über Timer durch http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer und das über Interrupts http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmieren_mit_Interrupts ... und zwar so lange, bis Du sie verstanden hast ... und dann wirst Du sehen, was bei Dir noch fehlt.
Es soll also PB7 sein. Jetzt wollte ich gerade prüfen, ob der Pin überhaupt PWM Funktionalität hat, da fällt mir auf, dass die wichtigste Frage noch gar nicht gestellt wurde: Um welchen Mikrocontroller geht es? Du hast das Bit COM0A1 gesetzt, damit aktivierst du den PWM Ausgang OC0A1. Beim ATmega48, 88, 168, 328 ist das der Pin PD6. Wenn du andere Pins als PWM Ausgang verwenden willst, als von der Hardware vorgesehen, dann musst du COM0A1 auf 0 setzen und stattdessen mit Interruptroutinen arbeiten. Die werden aber deine delay() Befehle stören, so dass deren Timing nicht mehr genau eingehalten wird. Fehler: Das TCCR0A Register hat kein CS00 Bit. Du bist da beim falschen Register. Außerdem: Bist du sicher, dass du keinen Prescaler verwenden willst? Dein Counter wird dann mit den vollen 16Mhz getaktet. Bei der hohen Frequenz kannst du Interruptroutinen vergessen. Die versauen Dir das ganze Timing.
#include <avr/io.h> #include <avr/interrupt.h> #include <inttypes.h> #include <stdbool.h> #include <avr/pgmspace.h> #define F_CPU 16000000ULL #include <util/delay.h> void InitPWM() { TCCR1B = (0<<ICNC1)|(0<<ICES1)|(1<<WGM13)|(1<<WGM12)|(0<<CS12)|(1<<CS11)|(1<<CS10 ); DDRB |= (1 << DDB6); //port b6 } void SetPWMOutput(uint8_t duty) { OCR1B=duty; } // void Wait() // { // _delay_loop_2(3200); // } void main() { uint8_t speed=0; //Initialize PWM Channel 0 InitPWM(); while(1) { //Now Loop with increasing speed for(speed=0;speed<255;speed++) { //Now Set The speed using PWM SetPWMOutput(speed); //Now Wait For Some Time _delay_ms(2000); } //Now Loop with decreasing speed for(speed=255;speed>0;speed--) { //Now Set The speed using PWM SetPWMOutput(speed); //Now Wait For Some Time _delay_ms(2000); } } } ist OCR1B=duty; richtig verwendet? weil ich denke dass void InitPWM() richtig geschrieben ist
Jetzt hast du TCCR1A nicht initialisiert. Das ist schon nach wie vor nötig.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.