Hallo, Ich bin neu in Sachen Elektronik und deren Programmierung. Ich hab jedoch Erfahrung mit anderen Sprachen, weshalb ich den Code gut lesen kann. Vorausgesetzt, ich kenne die AR Befehle etc. Ich würde gerne für ein Schulprojekt eine LED dimmen. Dazu habe ich einige Fragen, als allererstes jedoch, wieso ich das Tutorial nicht realisiert kriege. Ich habe hier einen Atmega8 mit 8MHZ nach dem Aufbau wie im AVR Tutorial und füttere diesen mit dem C-Code aus dem LED-Fading Artikel. Leider leuchtet meine LED nur konstant hell und es passiert nichts. Das Oszilloskopt sagte auch nicht viel, flach wie ne Flunder. :P An was könnte es liegen? Falsche Fuses? Falsche Configs im Code? Hab ihn nicht angepasst, da nichts konkret diesbezüglich stand. Im Prinzip kann ja nur die TCC* Einstellung falsch sein, nicht? Weiter wüsste ich gerne, wie sie genau auf die 122 Mhz kommen. Ich probiere es schon lange und hab nen ziemlichen Stress, wäre froh über Hilfe. Werde mich sobald ich Zeit habe auch revanchieren, da ich denke, ein gutes LED Tutorial schreiben zu können. Im späterne Verlauf möchte ich meine eigenen PWM Werte per Stevssche Potzenfunktion berechnen, dazu werde auch noch Fragen kommen g. Da ich im Projekt das alles gut beschreiben muss, kann ichs sowieso etwas verändert veröffentlichen. Vielen Dank!
Klar, dachte die Artikel sind hier allen bekannt. Code: http://www.mikrocontroller.net/articles/LED-Fading Schaltplan: http://www.mikrocontroller.net/wikifiles/f/f6/Mega8_Tutorial.png Wir haben jedoch keinen Quarzoszillator sondern einen Quarz, so angebracht: http://www.mikrocontroller.net/wikifiles/e/eb/Tutorial-quarz-schaltplan.png Danke, froh wäre ich auch um die entsprechenden Seiten im Datasheet, damit ich mir das auch selbst durchlesen kann. Irgendwie finde ich nicht das gewollte.
pascal M. schrieb: > Danke, froh wäre ich auch um die entsprechenden Seiten im Datasheet, > damit ich mir das auch selbst durchlesen kann. VHS bietet Kurse an: Suchmaschinen erfolgreich bedienen Suchen und Finden im Internet ...
pascal M. schrieb: > Schaltplan: > http://www.mikrocontroller.net/wikifiles/f/f6/Mega... Das ist Dein Schaltplan? Wo ist denn da die an PD5 angeschlossene LED?
Das LED ist wie folgt angeschlossen (einfach an PD) http://www.mikrocontroller.net/wikifiles/b/bb/Led.gif Wie gesagt hab ich nichts selbst designed sondern alles von hier übernommen, aus dem Tutorial und dem LED-Fading Artikel. Googlen sowie lesen kann ich auch, aber wurde ich nicht fündig. Ich hab mehrer Stunden probier das Problem zu lösen.
pascal M. schrieb: > Das LED ist wie folgt angeschlossen (einfach an PD) Einen I/O-Pin "PD" gibt es nicht, die heißen z.B. PD0, PD1,... > Wie gesagt hab ich nichts selbst designed sondern alles von hier > übernommen, aus dem Tutorial und dem LED-Fading Artikel. Was meinst Du mit "hier"? Niemand kennt alle Schaltungen aus der Artikelsammlung oder dem Forum. Am besten können wir Dir helfen, wenn wir den kompletten und exakten Plan Deiner Schaltung (die oben von Dir verlinkte ist es schonmal nicht) und den Code, exakt so, wie Du ihn kompiliert hast. Da Du einen externen Quarz verwendest, und deshalb die passenden Fuses gesetzt werden müssen, wäre auch eine Angabe hierüber sinnvoll.
Hallo, Ja, dann erstmal entschuldigung. Ich achte normalerweise darauf, alle nötigen Infos zu packen. Ich ging irgendwie davon aus, dass die Tutorials die meisten kennen. Ich hab das Problem jedenfalls schonmal teilweise gelöst, und zwar ist der Code ja für Atmega32 gemacht, dort ist OC1A PD5. Bei Atmega8 ist es aber ja PB1. Das erklärt, warum es zwar leuchtet nicht aber dimmte. Ich werde das nun noch mehr überprüfen. Stundenlanges Gesuche und dann ein so doofer Fehler. Ich werde alle nötigen Infos noch posten, falls noch ein Problem auftaucht, welches mich in die Knie zwingt. Andere Frage: Wie kommen die auf 122 hz? (Siehe comments im Code welchen ich oben postete. Der Code ist 1:1, bis auf DDRB |= 1 << PB1; ganz unten) Der Timer benutzt ja, laut Datasheet eine 32kHZ Frequenz. Ich hab ja alle 8bit bzw 256 nen Interrupt, was mit doch einen 32kHz/256=125hz Takt gibt, nicht? Wo sind die anderen 3 hin?
Der Timer nutzt den Systemtakt mit einem Vorteiler. Bei deinem Beispiel hat der Timer scheinbar den Vorteiler 256. Dann ergibt sich f = (Systemtakt / Vorteiler) / Zählweite f = (8.000.000 / 256) / 256 f = 122,07 Hz
pascal M. schrieb: > Der Timer benutzt ja, laut Datasheet eine 32kHZ Frequenz. Nein. Der Prescaler ist doch auf 256 gesetzt. Bei einer Taktfrequenz von 8MHz bedeutet das: 8MHz/256 = 31.25kHz. Nicht 32kHz.
Tatsächlich, hab ich falsch gelesen. Wenn ich meine Eigene Schaltung + Code bastle, muss ich dann bei der PWM nicht die maximale Leistung pro Pulse berechnen? Wenn mein LED z.B. 350 Ampere braucht und 2V, dann benutz ich ja z.B. nen Mosfet welchen ich per PWM ansteuere, oder? Muss dann aber nicht darauf achten, dass ein voller Puls nicht dessen Leistung überspringt?
Du musst darauf achten, dass bei durchgeschaltetem Transistor, der Strom durch die LED nicht den zulässigen Wert überschreitet. Das macht man mit einem Vorwiderstand. http://www.mikrocontroller.net/articles/LED#Durchlassstrom Das führt dann automatisch dazu, dass die LED bei voll ausgeseteuerter PWM durchgängig mit voller Leistung leuchtet (und bei geringeren PWM-Tastverhältnissen dann erscheint dunkler erscheint, da sie pro PWM-Periode nur für kurze Zeit mit voller Helligkeit leuchtet und den Rest der Zeit ausgeschaltet ist).
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.