Hi, ich habe das Beispiel hier einmal verwendet http://www.mikrocontroller.net/articles/LED-Fading Aber leider tut sich garnichts wenn ich eine LED zwischen PD5 und LO anschließe. Weder mit noch ohne 1KOhm Widerstand. Habe das Beispiel kopiert bei mir (AVR Studio) eingefügt und meine Frequenz 3686400Hz eingestellt. Auch in den Einstellungen hab ich ATmega8, 3686400Hz und -0s eingestellt. Was mach ich denn falsch?
Aber einen Link zum Code... und Schaltplan.... ist ein fertiges Testboard und somit Lötfehler ausgeschlossen wenn du das meinst. Andere Sachen funktionieren auch damit.
Ah ok beim ATmega8 ist der OC1A nicht auf PD5 sondern PB1. Umgestellt -> geht Aber jetz seh ich das flackert ja wie bescheuert beim dimmen. Gibts da nich was besseres, oder geht das nicht besser mit PWM?
depp_007 schrieb: > Ah ok beim ATmega8 ist der OC1A nicht auf PD5 sondern PB1. > Umgestellt -> geht deswegen Schaltplan. Meist wird einem erst bewusst, was man falsch gemacht hat, wenn man einen Scahltplan davon machen muss. > Aber jetz seh ich das flackert ja wie bescheuert beim dimmen. Gibts da > nich was besseres, oder geht das nicht besser mit PWM? deswegen Code herzeigen. Mein Tip ins Blaue: Controllertaktfrequenz und Takteinstellungen im Programm passen nicht. :-)
Achso ja mit dem Takt hatte ich bei dem Teil schon immer Probleme... Der Code ist nach wie vor aus dem Link kopiert. Nur PD5 auf PB1 geändert. Es ist ein Oszilator mit 3,6864MHz auf dem Board eingebaut und ich habe im Programm 3686400Hz eingestellt. Warum macht der dann falsche Frequenzen? Auch mit folgendem erhalte ich keine 300Hz.
1 | #define F_CPU 3686400 |
2 | void wait_us(int mikroSec) |
3 | { |
4 | _delay_loop_2(1*(F_CPU/(1000000/4))*mikroSec); |
5 | } |
6 | while(1){ |
7 | PORTC =0b00000001; |
8 | wait_us(1667); |
9 | PORTC=0b00000000; |
10 | wait_us(1667); |
Erst wenn ich wait auf 1520 setze erhalte ich genaue 300Hz.
@ depp_007 (Gast) >Aber jetz seh ich das flackert ja wie bescheuert beim dimmen. Gibts da >nich was besseres, oder geht das nicht besser mit PWM? Wahrscheinlich ist im AVR die CLK8 Fuse gesetzt, dann läuft der mit 1 MHz statt 8, und deine LED flimmert mit ~15Hz statt 120Hz. Siehe [[AVR Fuses]]. MFG Falk
Wie Falk Brunner geschrieben hast du vermutlich per Fuses noch den internen Takt statt den Externen aktiviert.
Hmm der Fuse bit steht auf "Int RCosc Frequency 2MHz" Aber ich hab ja ein 3,6864MHz oszilat und das ist ja extern...Muss ich da auf Ext XTAL gehen?
depp_007 schrieb: > Hmm der Fuse bit steht auf "Int RCosc Frequency 2MHz" > Aber ich hab ja ein 3,6864MHz oszilat und das ist ja extern...Muss ich > da auf Ext XTAL gehen? Wirst du wohl tun müssen.
depp_007 schrieb: > Muss ich > da auf Ext XTAL gehen? Hast du einen Quarz, oder einen Oszilator dran? bei ersterem ist er tot, wenn du das einstellst. Nicht nur das umstellen, sondern auf jeden Fall auch die DIV8 Fuse überprüfen, die sollte nicht programmiert (=1) sein
Der Code im Artikel braucht einen Takt mit ~8MHz, denn sonst geht die 16 Bit PWM nicht. Auch die anderen PWMs sinf fest auf 8 MHz konfiguriert und werden NICHT autoatisch an eine andere Frequenz per F_CPU eingestellt. Leute, vor allem als Anfänger sollte man ein Beispiel erst einmal 100% so nachbauen wie vorgegeben. Wenn das dann läuft und man verstanden hat wie es läuft, DANN kann man anfangen eigene Änderungen vorzunehmen. MFG Falk
Es ist ein Quarz. Geht aber noch und mit der Ext XTAL einstellung funktioniert auch das Dimmen. Hatte eben nur ein experimentierboard hier und das hat kein 8MHz quarz... Wenn ich das fest verbaue schau ich auch das ich ein 8MHz Quarz auftreibe, aber zum testen hab ich leider nur dieses Board da. Wie müsste ich denn hier vorgehen wenn ich 2 Dimmbare Kanäle haben wollte?
@ depp_007 (Gast) >Hatte eben nur ein experimentierboard hier und das hat kein 8MHz >quarz... Es wäre ja auch VOLLKOMMEN ABSURD, den ATmega 8 einfach mit internem 8 MHz RC-Oszillator zu betrieben, so wie im Artikel geschrieben steht (nicht nur der ATmega32 hat den) >Wie müsste ich denn hier vorgehen wenn ich 2 Dimmbare Kanäle haben >wollte? Ja wie wohl? Den zweiten PWM-Kanal vom Timer 1 nutzen? Mann Oh Mann!
Beschäftige dich bitte zunächst mit dem µC: http://www.mikrocontroller.net/articles/AVR-Tutorial ... Du wirst sonst nicht weit kommen.
depp_007 schrieb: > Es ist ein Oszilator mit 3,6864MHz auf dem Board eingebaut und ich habe > im Programm 3686400Hz eingestellt. Warum macht der dann falsche > Frequenzen? Weil F_CPU dem Prozessor nicht auf magische Weise sagt, daß du einen externen Oszillator benutzen möchtest. Du teilst damit lediglich dem Programm mit, mit welcher Taktfrequenz der Prozessor läuft (also nicht "laufen soll", sondern "bereits läuft"). Daß er auch tatsächlich diese Frequenz hat, dafür mußt du selbst sorgen.
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.