- LiFePO4 Speicher Test         
Seite 6 von 6 ErsteErste ... 456
Ergebnis 51 bis 52 von 52

Thema: 40 Khz Frequenz erzeugen Ultraschallsender

  1. #51
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Anzeige

    Praxistest und DIY Projekte
    danke für den Code. Ich würde gerne die Berechnung dazu nachvollziehen können. Kannst du mir da noch ein paar Infos zu geben?
    Da du Bascom zumindest schon mal probiert hast, kannst du eigentlich auch da in der Online Hilfe nachsehen.

    Ein Timer zählt bei jedem Takt des Controllers eine Variable um eins hoch.
    Timer0 ist ein 8 Bit Timer, und läuft daher bei 255 über, sprich er fängt wieder bei 0 an zu zählen.
    Beim Überlauf wird ein Interrupt ausgelöst und für diesen Interrupt kannst du eine Routine schreiben die immer genau dann ausgeführt wird.
    D.h. die Routine wird b ei einem 8MHz Quarz 8Mio/256 mal ausgelöst.
    Wenn du dem Timer in der Interrupt Routine einen Wert > 0 zuweist, fängt er nicht bei 0, sondern bei diesem Wert an zu zählen, und läuft natürlich entsprechend schneller wieder bei 255 über.
    Dadurch kannst du dir eigene Frequenzen erzeugen.
    Z.B. 255 - 45 = 211 : 8MHz / 211 = 37.915 Hz

    Timer1 ist ein 16 Bit Timer, d.h. der zählt bis 2^16 und läuft da über. Ansonsten ist es dasselbe.
    Für niedrigere Frequenzen kannst du einem Timer noch einen Prescaler mitgeben.
    Bei einem Prescaler von z.B. 64 zählt der Timer dann nicht jeden Controllertakt, sondern nur jeden 64. Controllertakt um eins hoch.

    In obigem Beispiel kämst du dann auf die besagte 37,9kHz / 64.
    Steht aber eigentlich alles mit Codebeispielen in der Bascom Hilfe.

    Ich möchte jetzt nicht das mein Programm die ganze Zeit nur die 38kHz raushaut. Kann man das auch so machen das ich ihm eine bestimmte Zeit gebe in der er das machen soll?
    Das ist doch gerade der Sinn der Sache. Der Timer läuft in obigem Beispiel alle 211 Takte über und ruft die Interruptroutine auf. Sobald die abgearbeitet ist, wendet er sich dann bis zum nächsten Interrupt wieder deinem Hauptprogramm zu.
    Problem ist natürlich, dass er in 211 Schritten nicht besonders viel machen kann und deine Timerroutine auf jeden Fall weniger Schritte erfordern sollte.
    Das ist aber ein generelles Problem bei so hohen Frequenzen daher ist es manchmal sinnvoller die Frequenz extern zu erzeugen.
    Es gibt ja z.B. auch Ultraschallsender und Ultraschallsensoren, die die Frequenz selber erzeugen.
    Wenn du die Frequenz nicht mehr brauchst, kannst du sie auch jederzeit mit "Stop Timer0" anhalten und mit "Start Timer0" neu starten.

    Deswegen finde ich die Assembler Lösung schöner, da "schaltet" man das ja einfach nur an und nach ner bestimmten Zeit wieder aus. Oder sehe ich das falsche?
    Ich glaube das siehst du falsch. Wie ein Timer funktioniert hat eigentlich nichts mit der verwendeten Programmiersprache zu tun.

    In Assembler hast du mehr Kontrolle wie der Controller bestimmte Operationen durchführt und mehr Überblick wieviele Rechenschritte deine Routinen erfordern. Aber das erkaufst du dir ja auch recht teuer durch den viel höheren Programmieraufwand.

  2. #52
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    39
    Beiträge
    647
    Das ist doch gerade der Sinn der Sache.
    Ne eben nicht^^ Jedenfalls nicht für meine Anwendung. Ich brauche die 38kHz nur als burst für ein IR Signal. Vielleicht ist hier mein Ansatz ja auch nicht richtig.

    Für RC5 gibt es ja fertige befehle aber ich brauche REC-80.

    MFG Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

Seite 6 von 6 ErsteErste ... 456

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test