- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 5 von 5

Thema: software pwm für atmega 32

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    37
    Beiträge
    220

    software pwm für atmega 32

    Anzeige

    Praxistest und DIY Projekte
    Hallo, bin noch relativer C Anfänger und möchte nun eine Hindernisserkennung mit einer Software PWM realisieren.

    Für die Sendediode benötige ich eine Frequenz von 36 khz.

    Leider habe ich sehr beschränkte Programmierfähigkeiten auf diesem Gebiet.
    Hat jemand von Euch vielleicht so etwas schon mal programmiert und hat den Code noch?
    wäre voll nett, wenn mir jemand hier ein Beispielprogramm mit Kommentaren posten könnte.

    danke schon mal im voraus

    gruß

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.11.2004
    Ort
    Hvalstad, Norwegen
    Beiträge
    140
    Guck dir mal das Datenblatt zu deinem AVR an, insbesonder bzgl. Timern.
    Die Funktion die dich interesiert ist zum einen "Clear OCxA/OCxB on Compare Match" und zum anderen CTC.

    Die erste Funktion wechselt den Pegel eines bestimmten Portpins bei erreichen eines sog. "Compare Match", die zweite Funktion setzte den Zähler beim gleichen Ereignis zurück. Um ein Rechteck zu erzeugen musst du jetzt nur mit der doppelten Frequenz des gewünschten Signals am Timer ein "Compare Match" auslösen, also das "Compare Match"-Register auf Taktfrequenz/(2*Signal-Frequenz) setzen, einen Vorteiler für den Timer fällt dann weg.

    Für weitere Information kannst du auch nach Infrarotfernbedienungen suchen, die brauchen auch ein Rechtecksignal mit 36-40kHz.

    Hoffe du kannst damit was anfangen.

    Gruss
    Lorcan

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.693
    Hi proevofreak,

    zu einer präzisen Software-PwM brauchst Du sowieso einen präzsien Timer - dazu wird einer der Hardware-Timer genommen. Möglicherweise ist ein 16-bittiger notwendig, um auf die sauberen 36 kHz zu kommen (kommt halt auf den Quarztakt an). Wenn Du nun so einen Hardwaretimer hast, könntest Du so "nebenher" auch ne PwM davon ableiten. Wie das geht hat lorcan ja schon skizziert.

    Andernfalls wartet Dein Controller die meiste Zeit - und tut sonst nix als blos die Softwarepwm mit einer Waitschleife erzeugen.

    Software zur Hinderniserkennung mit IR (das meinst Du vermutlich auch), aber für mega168 bzw. mega8, und ausführliche Erläuterungen gibts hier oder etwas (noch?) ausführlicher hier.

    Eine andere Möglichkeit zur Hinderniserkennung per IR ist genauer bzw. reproduzierbarer mit den Sharpsensoren der GP2Dx - Familie möglich. Dann brauchst Du keinen Timer, dann kannst Du den Sensor mit dem ADC auslesen.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.232
    Die Funktion die dich interesiert ist zum einen "Clear OCxA/OCxB on Compare Match" und zum anderen CTC.
    Es gibt auch eine Toggle OCx Funktion. Das mit dem CTC stimmt so.
    Die notwendigen Informationen findest Du im Datenblatt für den ATMEGA32A ( doc8155.pdf ) auf Seite 79.

    Welche Register dann dazu wie gesetzt werden müssen sollte sich dort klären lassen.
    Ich müsste mich jetzt da genauso durchkämpfen, das kannst DU ja aber auch selber machen, umso mehr lernst Du dabei.

    Wenn Du die Register richtig befüllst, läuft die komplette Frequenzerzeugung in Hardware und braucht somit keine Rechenzeit mehr vom Controller - toll oder ?

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.11.2004
    Ort
    Hvalstad, Norwegen
    Beiträge
    140
    @wkrug: Die Toggle-Funktion meinte ich eigentlich auch, macht ja auch mehr Sinn.

Berechtigungen

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

Labornetzteil AliExpress