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

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: LED mit Timer

Aw: LED mit Timer 12 Jahre 1 Woche 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 12 Jahre 1 Tag 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: 12 Jahre 1 Tag her von Georg.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: LED mit Timer 12 Jahre 1 Tag 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 12 Jahre 15 Stunden 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 12 Jahre 15 Stunden 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 12 Jahre 11 Stunden 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: 12 Jahre 11 Stunden her von elektrolutz.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Ladezeit der Seite: 0.129 Sekunden

Werbung