-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Timer mit einem ATTiny2313 - ERLEDIGT, danke euch allen

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    31
    Beiträge
    388

    Timer mit einem ATTiny2313 - ERLEDIGT, danke euch allen

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Guten Abend,
    Ich habe schon das halbe Forum durchsucht auf der Suche nach einem Codeschnipsel wie man ein Software PWM Signal ausgibt.
    Ich habe auch diverses gefunden.

    Nur mein Problem besteht darin das ich mit dem PWMsignal dimmen möchte (Led's).
    Sprich die Led im Low zustand langsam hochdimmen (in 2sec... oä).
    Anschliessend eine gewisse Zeit auf High halten und anschliessend wieder runterdimmen.
    Und dies auf drei Kanälen.
    Hat dazu jemand einen Beispielcode oder einen Tipp.
    Bin dankbar für alles.
    dankeschön

    EDIT:
    Hab mir nun vorgenommen einfach mal meine drei Pins in bestimmten abständen auf High zu schalten.... siehe meinen Post unten.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.05.2005
    Ort
    Rott am Inn
    Alter
    29
    Beiträge
    373
    Hi,
    du könntest einen Timer laufen lassen der gibt dir dann bsw. alle ms einen Interrupt. Dann zählst du bei jedem interrupt eine Variable hoch, vergleichst die Variable mit einer Konstanden größe und kannst somit die Zeit für Ein bzw. Ausschaltimpuls variieren. Ich hoffe ich konnt dir helfen.
    mfg franz

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    31
    Beiträge
    388
    Danke für deine Antwort.
    Das ist eine gute Idee, also eine Schleife in der ich den Wert vergleiche und dann hochdimme. Wen der Wert der "Zählervariable" meiner Konstanten entspricht gehe ich aus der Schleife und lasse eine weitere laufen um eine Zeit auf High zu bleiben. Und beim runterdimmen das selbe. Nur muss ich ja min. 2 Kanäle gleichzeitig dimmen lassen was ja mit dieser lösung nicht machbar wäre. oder?

    Ich sehe gerade im Datasheet das der Tiny 4 PWM ausgänge hat.. stimmt das?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Ich habe schon das halbe Forum durchsucht auf der Suche nach einem Codeschnipsel wie man ein Software PWM Signal ausgibt.
    Der Tiny2313 unterstützt PWM auch hardewareseitig. Muss es Software PWM sein?

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    31
    Beiträge
    388
    Das habe ich gerade auch gelesen, so wie ich das datasheet verstehe hat er 4 PWM kanäle. Ist das richtig?

    Es steht Four PWM Channels..... also 4Pins die mit unterschiedlichen PWM signalen ansteuerbar sind?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von hosti
    Das habe ich gerade auch gelesen, so wie ich das datasheet verstehe hat er 4 PWM kanäle. Ist das richtig?

    Es steht Four PWM Channels..... also 4Pins die mit unterschiedlichen PWM signalen ansteuerbar sind?
    ja
    OC0A Timer0 PB2
    OC0B Timer0 PD5
    OC1A Timer1 PB3
    OC1B Timer1 PB4

    aber er hat nur 2 Timer, damit wären dann alle belegt ?

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    31
    Beiträge
    388
    Timmer brauche ich ja nur einen oder?
    Dieser gibt ja nur den Takt an, das ausgangssignal wird ja durch den "PWM-Modus" generiert?

    Wie würd ich den den PWM hochdimmen?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Wie würd ich den den PWM hochdimmen?

    z.B. ungefähr so:

    for I = 0 to 1023
    pwm1a = I
    waitms 10
    next I

    Die korrekte Syntax hängt natürlich von der verwendeten Programmiersprache ab.
    Wenn du 3 LEDs gleichzeitig und unabhängig voneinander dimmen willst, musst du dir allerdings was schlaueres einfallen lassen.

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    31
    Beiträge
    388
    Richtig, und genau da liegt das grosse Problem. Hat vieleicht jemand einen vorschlag?

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    31
    Beiträge
    388
    TIMER MIT DEM ATTINY 2313

    Ich probiere mit dem ATTINY einen Timer zu benutzen um meine Pins in gewissen abständen zu schalten.

    Im mom. benutzte ich noch einen ATMega 8, sollte beim Tiny aber ähnlich sein nehme ich an.


    Code:
    void initTimer0()
    {TCCR0=0x05;			// 0b00000011, Vorteiler 1024 ca. 4khz
    Damit stelle ich den verteiler auf 1024 des CPU Taktes.

    Mit folgendem:
    Code:
    TIMSK=0x01;
    wird ja ein TimerOverflow 1 Interupt ausgelöst.

    Jetzt war die Idee immer wen dieser Interupt ausgelöst wird eine Variable hochzählen zu lassen und ab einem bestimmten Wert meinen Pin auf High zu schalten. Leider find ich nicht heraus wie ich diesen Interupt überhaupt registriere.
    Das wollte ich mit allen 3 Pins machen und wen alle auf High oder low sind die Variable wieder auf 0 zu setzten (z.B. bei 20000) und das spiel von vorne zu beginnen.

    Bin ich auf dem Richtigen weg?
    Und wo wird dieser Interrupt "gespeichert"?

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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