Hallo, ich hoffe ihr könnt mir helfen...ich habe mich jetzt erstmals mit AVR-GCC beschäftigt und komme bei den Timer/Counter nicht mehr weiter. Habe mir schon den Abschnitt dazu im Tutorial angeschaut aber wirklich schlau daraus bin ich net geworden. Es ist vielleicht noch zu erwähnen das ich erst vor 3 Tagen begonnen habe, mich mit Mikrocontrollern zu beschäftigen. Ich arbeite mit dem ATMega128 und möchte das eine LED leuchtet, solange bis der Timer/Counter abgelaufen ist, dann einen Interrupt ausführen in dem eine andere LED leuchten soll und dann wieder zurück zum Anfang. (!!!Halt nur um es zu verstehen!!!) Kann mir jemand vielleicht hierzu ein passendes Beispiel mit schönen Kommentaren hochladen und gibt es vielleicht einen bestimmten Algorithmus den man anwenden kann? (Programmstart, CPU-Freuquenz einstellen, Counter deklarieren, etc.)
hallo, was meiner meinung nach immer hilft ist: Aufschreiben. Das, was man erreichen will. Das dann zerlegen in kleinere Teile, was man da erreichen will. usw. Pseudocode reicht da schon. also:
1 | void main(..) |
2 | {
|
3 | // timer
|
4 | //timer wert laden
|
5 | // timer modus an
|
6 | // timer interrupt an
|
7 | // led 1 an
|
8 | // warten bis in alle ewigkeit
|
9 | }
|
dann noch die interruptserviceroutine (isr) schreiben, und gut ist. du hast das problem sehr allgemein gehalten, wundere Dich deshalb bitte nicht über allgemein gehaltene antworten. auch solltest du überdenken, das die isr nur sehr kurz aktiv ist (bzw. sein sollte). wenn du da eine led an- und wieder ausschaltest, wirst du das vermutlich nicht bemerken. hth ein bischen, bye kosmo
Nimm den 16 Bit Timer (Timer 1). Den initialisierst du mit einem Vorteiler von 1024 Bei verschiedenen Taktfrequenzen, keine Ahnung welche du benutzt, wird dann der Timer nach 1 Mhz: 1000000 65536 1024 = ~67 Sekunden 2 Mhz: 2000000 65536 1024 = ~33 Sekunden 8 Mhz: 8000000 65536 1024 = ~8 Sekunden einen Overflow produzieren. Dann programmierst du dir einen Overflow Interrupt in dem du abwechselnd die eine und die andere Led einschaltest. Ist nicht weiter schwer. Mit dem Tutorial und dem Datenblatt des Prozessors solltest du das hinkriegen. Wenn nicht, dann poste dein Programm und wir sagen dir wo du daneben liegst.
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.