RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO 2 NIBO 2 Projekte LED mit Timer

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

  • •Keine Beiträge vorhanden•

Site-Statistic

  • 7507 private projects
  • 385 public projects
  • 16433719 lines compiled
  • 58483 builds
NIBO @ facebook YouTube Twitter
•Willkommen•, •Gast•
•Benutzername:• •Passwort:• •Angemeldet bleiben:•

•THEMA:• LED mit Timer

Aw: LED mit Timer •13 •Jahre• 2 •Monate• her• #969

  • Egon
  • •Egons Avatar•
  • •OFFLINE•
  • Gold Boarder
  • •Beiträge:• 316
Hallo elektrolutz

Hatte schon vermutet, daß Dein Beitrag darauf abzielte, daß achim S. sein Programm nochmal überprüft, testet und eine verbesserte Version hier reinstellt.

Naja, vielleicht hat meine Erklärung doch einen gewissen "Lerneffekt" ;)

Egon
lokalisieren, eliminieren, Vollzug melden
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: LED mit Timer •13 •Jahre• 2 •Monate• her• #1005

  • Georg
  • •Georgs Avatar•
  • •OFFLINE•
  • Gold Boarder
  • •Beiträge:• 290
Egon •schrieb•:
Hallo elektrolutz

Hatte schon vermutet, daß Dein Beitrag darauf abzielte, daß achim S. sein Programm nochmal überprüft, testet und eine verbesserte Version hier reinstellt.

Naja, vielleicht hat meine Erklärung doch einen gewissen "Lerneffekt" ;)

Egon

Hallo Egon, Hallo Elektrolutz,

Achim S. hat inzwischen eine verbesserte Version reingestellt.

Try again!
•Letzte Änderung•: •13 •Jahre• 2 •Monate• her• • von • Georg.
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: LED mit Timer •13 •Jahre• 2 •Monate• her• #1012

  • Egon
  • •Egons Avatar•
  • •OFFLINE•
  • Gold Boarder
  • •Beiträge:• 316
Hallo Georg

Why should I?

Hast Du's schon probiert? Dann sind Dir bestimmt die anderen, zusätzlichen "Unschärfen" aufgefallen, die ich bei meiner Erklärung NICHT erwähnt habe...

Egon
lokalisieren, eliminieren, Vollzug melden
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: LED mit Timer •13 •Jahre• 2 •Monate• her• #1013

  • Georg
  • •Georgs Avatar•
  • •OFFLINE•
  • Gold Boarder
  • •Beiträge:• 290
Hallo Egon,

das Programm habe ich probiert und es funktioniert einwandfrei.
Zu der Programmierung des Timers kann ich nichts sagen, da ich mir die Grundlagen erst selber erarbeite. Ich persönlich hätte alles in die ISR reingepackt und die Zähler als unit16_t vereinbart:

uint16_t led5 = 0; // Variable für LED 5
uint16_t led6 = 0; // Variable für LED 6

ISR (TIMER2_COMP_vect)
{
led5++;
led6++;
if ( led5 == 500 ) {
led5 = 0;
PORTE ^= (1<<PE5); }
if ( led6 == 1000 ) {
led6 = 0;
PORTC ^= (1<<PC7); }
}

Georg
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: LED mit Timer •13 •Jahre• 2 •Monate• her• #1015

  • achim S.
  • •achim S.s Avatar•
  • •OFFLINE•
  • Gold Boarder
  • •Beiträge:• 441
Hallo Georg
Habe extra nichts oder so wenig wie möglich in die ISR gelegt. Die ISR soll so kurz wie möglich sein. Da der Timer über die ISR arbeitet, verwende ich diesen auch für andere Aufgaben. Habe als Beispiel nur die beiden LED genommen. Wenn ich aber z.B. 6 nehme und dazu noch einen Taster und noch eine Verzögerung für ... wird es knapp. Es geht eigentlich bei diesem Prg nur um die Möglichkeit, ein Prg zu schreiben, was ohne delay läuft. Da ich kein Programmierer bin, gibt es noch einiges an Unschärfen. Der Sinn dieses Forums besteht darin, etwas zu machen und anderen zu zeigen. Es steht jedem frei etwas daraus zu machen. Falls ein Fehler drin steckt oder man etwas besser machen kann, ändere ich es gern. Bitte nicht auf die Fehlern von andern Hinweisen. Bin leider nur ein Mensch und habe Fehler (Das weiss ich).
achim
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: LED mit Timer •13 •Jahre• 2 •Monate• her• #1016

  • elektrolutz
  • •elektrolutzs Avatar•
  • •OFFLINE•
  • Gold Boarder
  • NiboBee+BGX1+Tunig-Kit, Nibo2+GFX+NDS3+UCOM-IR2
  • •Beiträge:• 401
Hallo Achim, Hallo Georg,

(aus Achims LED-Programm:)
ISR (TIMER2_COMP_vect)      // wait1=1ms,
    {
        if(  wait<9)         // Takt 0,5s, bei 9 sind es 10ms
          {  wait++;      } // erhöht
        else                // wenn dann ...
          {  wait=0;        // setzt wait1 auf 0
             wait10=0xFF;   // Signal alle 10ms
          }         
    }
"wait<9" und "bei 9 sind es 10ms"
Frage: Wann ist/wird wait = 9)???

Für "wait" gilt:
Start der Zeit bei 0ms.
Mit erreiche des Zählwertes 1 ist die 1. ms verstrichen.
Mit erreiche des Zählwertes 2 ist die 2. ms verstrichen.
Mit erreiche des Zählwertes 3 ist die 3. ms verstrichen.
Mit erreiche des Zählwertes 4 ist die 4. ms verstrichen.
Mit erreiche des Zählwertes 5 ist die 5. ms verstrichen.
Mit erreiche des Zählwertes 6 ist die 6. ms verstrichen.
Mit erreiche des Zählwertes 7 ist die 7. ms verstrichen.
Mit erreiche des Zählwertes 8 ist die 8. ms verstrichen.
Mit erreiche des Zählwertes 9 ist die 9. ms verstrichen.
Mit Erreichen des Zählwertes 10 ist die 10. ms verstrichen.
Erst jetzt darf "wait" wieder auf "0" gesetzt werden!
(Oder habe ich da einen Denkfehler?)


Ich würde das Programm so schreiben, das ist deutlich kürzer und übersichtlicher und das Inkrementieren in der Interruptfunktion benötigt weniger Zeit wie eine "if"-Abfrage:
ISR (TIMER2_COMP_vect)    // Zeittakt=1ms,
    {   timer01++;       // timer01 um 1ms erhöhen
        timer02++;      // timer02 um 1ms erhöhen
    // je nach Bedarf um weiter "timerxx"- Variablen erweitern
    }
Im Programm startet man eine Zeit, in dem man an entsprechender Stelle die jeweilige "timerxx"-Variable auf "0" setzt.
Z.B. Abfrage "timer01" auf 0,5sec erfogt durch die Abfrage "if ( timer01 >= 500 )"


@Achim:
Nicht DU hast Fehler, DEIN PRORGAMM hat Fehler!
Gruß aus Werl elektrolutz
Theorie ist, wenn man weiß, wie alles funktioniert. -- Praxis ist, wenn alles klappt und keiner weiß warum!
•Letzte Änderung•: •13 •Jahre• 2 •Monate• her• • von • elektrolutz.
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•
•Ladezeit der Seite: 0.259 Sekunden•

Werbung

Protected by R Antispam