logo elektroda
logo elektroda
X
logo elektroda
WERBUNG
  • #1 20742813
    Ryuu
    Niveau 2  
    Guten Tag liebes Forum,

    Ich habe vor kurzem mit AVR Studio 7 beziehungsweise Microchip Studio angefangen zu programmieren für einen guten Freund. An sich habe ich mit dem Entwickeln keine Probleme, doch aktuell finde ich keine Lösungsansätze für folgendes Problem:


    Ziel ist es Beleuchtung in einem Modell über einen Microcontroller bzw. einen Tiny anzusteuern. Im Modell befindet sich eine Empfänger-Einheit, welche das RC Signal der Fernbedienung empfängt und dann mittels PWM Signal auf einen Ausgang legt der dann den Chip ansteuern soll.

    Ursprünglich war die Idee von mir einen Timer dort zu setzen der auf den Ausgang die Ausschläge hochzählen soll in einem Intervall und im Anschluss dann das Signal mittels IF Abfrage abgleichen.

    Am Ende würde das System halt initialisieren: einen Durchlauf abwarten für einen Default Wert x den das Programm halt im ersten Durchlauf ziehen soll. Im Anschluss wird dann die While Schleife aktiviert um die eigentliche Funktionen des Chip zu steuern. Parallel soll der Timer dann die Ausschläge hochzählen und mit dem Default Wert aus dem ersten Durchlauf vergleichen.

    Wenn der Wert dann größer als dieser ist, soll Beleuchtung A geschaltet werden, oder B, oder C usw.

    Ich hatte erst überlegt, ob das mit einem Timer Interrupt funktionieren würde um den Count wieder auf 0 zu setzen.

    Ich habe auch alles mögliche über einen Input Timer Capture gelesen, allerdings nichts gefunden wo ich sagen kann: alles klar, das hilft mir jetzt weiter. Die Ideen sind da und dir daraus resultierende Lösungen auch greifbar, aber es scheitert aktuell tatsächlich daran, dass ich die Syntax nicht im so genau kenne bzw. nicht weiß wie ich den ITC konfigurieren kann. Wenn jemand ne Idee hat, wäre cool.
  • WERBUNG
  • #2 20743148
    gps79
    Niveau 36  
    Das Thema ist nicht einfach, deshalb:
    Suche zunächst im Internet nach, ob jemand bereits etwas Ähnliches gemacht hat, auf dem du aufbauen kannst.

    Wenn du nichts findest, entwerfe deine eigene Lösung. Ich schlage vor, das Programm in zwei Ebenen zu unterteilen. Keine dieser Ebenen sollte den Mikrocontroller blockieren.
    Ebene 1 (niedrig): Empfange das PWM-Signal vom RC-Empfänger und dekodiere es. Am Ausgang dieser Ebene solltest du Folgebefehle des Controllers erhalten, z. B. RECHTS, LINKS, RUNTER, HOCH, SCHNELLER, LANGSAMER usw.
    Ebene 2 (höher): empfängt Signale von Ebene 1 und analysiert (vorzugsweise mithilfe einer Zustandsmaschine), ob eine Sequenz aufgetreten ist, nach der Licht A, B oder C ein- oder ausgeschaltet werden soll.

    Erstelle zunächst Ebene 1. Zeige das Ergebnis auf dem Terminal an. Nachdem wir getestet und sichergestellt haben, dass es gut funktioniert, können wir mit Ebene 2 fortfahren.
    [F]
  • WERBUNG
  • #3 20743994
    Ryuu
    Niveau 2  
    Im Netz hatte ich bis dato nichts hilfreiches gefunden.
    Unten ein Screenshot von meinem Code, den ich gestern laufe des abends gebaut habe.

    Ziel ist es da im Rahmen vom Timer0 den Counter hoch zu zählen nach Ablauf des Timers wird über die ISR im ersten Durchlauf dann das Grundwert also der Default Wert ermittelt und gespeichert.

    Der Counter mit der Übergabe als Zwischenspeicher an das Programm gespeichert (ext)
    Erst dann setzt die ISR den Counter zurück.

    Im nächsten Schritt werden dann die Variablen der Funktion berechnet basierend auf dem Default Wert.
    Und so weiter.

    Screenshot eines Programmcodes in der Programmiersprache C für einen Mikrocontroller.
  • WERBUNG
  • #4 20745502
    JacekCz
    Niveau 42  
    Der Code mit Bild dargestellt sieht nicht gut aus.

    Weisst du natürlich, was das Teilen in ganzen Zahlen ergibt?
  • #5 20746253
    Ryuu
    Niveau 2  
    Ich werde, wenn ich Zuhaus am PC bin, nochmal den Code ziehen und posten, dass man das richtig lesen kann ;) kam noch nicht dazu.
WERBUNG