-         
+ Antworten
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28

Thema: Welcher AVR besitzt wieviele Timer und wie geht PWM

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674

    Welcher AVR besitzt wieviele Timer und wie geht PWM

    MeinProblem ist, dass ich über 2 PWMs 2 Motoren steuern will. Gleichzeitig will ich aber noch die Geschwindigkeit messen, dazu benötige ich midestens 1 Timer/Counter, am besten 2. Der AT90S2313 hat amer nur die Timer 1 und 0, wenn ich das richtig sehe. Ansonsten würde ich vielleicht einen MAX, keine Ahnung irgendwas mit 5495 oder so benutzen, das ist ein PWM, den man über SPI ansteuern kann. Dass muss ja nicht umbedingt sein. Ich würde gern mal in eine Tabelle reinschauen, wo alles aufgelistet ist, Ports ADs Speicher etc. gibts sowas für die AVRs?
    Und seht ihr noch ne andere Möglichkeit der Problemlösung?

    MFg Moritz

  2. #2
    Gast
    Bei Atmel auf der HP. Jeder ATMega kann das geforderte.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Wozu dient genau der EEPROM und der SRAM?

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.08.2004
    Alter
    38
    Beiträge
    77
    der eeprom ist da um aufgaben die immer gleich sind zu machen
    der ist für die kleinigkeiten die gemacht werden
    im sram sind die aufwendigeren progs drin
    ---

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Naja, das stimmt für AVRs wohl nicht so ganz

    Das Programm welches der AVR ausführt wird im Flashspeicher gespeichert. Im SRAM werden die Variablen, der Stack usw. gespeichert ( kann beliebig oft wiederbeschrieben werden, allerdings sind die Daten nach dem abschalten weg ). Im EEprom können dann Werte gespeichert werden die man dauerhaft sichern möchte, allerdings kann das Eeprom nur 100.000 mal wiederbeschrieben werden, dann können Fehler auftreten. Daher sollte man die Werte nicht ständig ändern. Es eignet sich eigentlich eher um zum Beispiel Parameter zu speichern die von einem Benutzer vorgeben werden und dann immer wieder benutzt werden sollen...

    MfG Kjion

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Jetzt ncohmal Kurz zu dem PWM. ICh hab hier ein Code gefunden, der mir sehr kompliziert wirkt. Ich würde einfach gerne einen Wert z.B. aus einer Variablen namens Wert an einem beliebigen Pin ausgeben. Was kann ich dann alles weglassen?

    Code:
    Const True = 1
    Const False = 0
    
    Dim Hi As Byte
    Dim Lo As Byte
    Dim A As Byte
    Dim Phase As Bit
    Dim Pattern As Byte                       ' Bit pattern for display
    
    Pwm Alias Portb.0                         ' Modulated Pin
    
    Config Timer0 = Timer , Prescale = 64     ' Rate 244 Hz at 4 MHz Clock
    
    On Timer0 Timer0_isr                      ' Jump to Timer1 ISR
    
    Config Portb = Output
    
    Enable Timer0                             ' Enable the timer interrupt
    Enable Interrupts                         ' Enable Global Interrupt
    
    Lo = 128                                  ' Initial value for PWM
    Phase = True
    
    Do
        A = Pind                              ' Ask for Key
        Select Case A
            Case &B11111110 : Lo = 0          ' Lo Time short, Hi Time long
            Case &B11111101 : Lo = 32
            Case &B11111011 : Lo = 64
            Case &B11110111 : Lo = 96
            Case &B11101111 : Lo = 128
            Case &B11011111 : Lo = 160
            Case &B10111111 : Lo = 192
            Case &B01111111 : Lo = 255        ' Lo Time long. Hi Time short
         End Select
        Hi = 255 - Lo
        Incr Pattern                          ' Change Bit Pattern
        Waitms 100                            ' Wait 100 ms
    Loop
    
    End
    
    Timer0_isr:
        If Phase = True Then
            Portb = &HFF                      ' LED off
            Timer0 = Lo                       ' Reload Timer0
            Phase = False
        Else
    
            Portb = Not Pattern               ' LED on
            Timer0 = Hi                       ' Reload Timer0
            Phase = True
        End If
    Return
    Allerdings verstehe ich das alles nciht so ganz.
    Was gibt Prescale an?
    Warum 244 Hz?
    Warum gebe ich dann einen WErt von 0 bis 255 an?
    Ich vermute, dass der Timer0 nach der gesetzten Zeit Timer0 = ... einen Interrupt auslöst und dann den Wert wechselt.

    Richtig?/ Falsch?

    MFg Moritz

  8. #8
    Gast

    war zu faul mich einzuloggen ;)

    @RCO

    Wenn Du den Internen EEprom nicht so belasten willst und noch ein paar Resourcen übrig hast könntest Du auch I²C-EEproms nehmen. Die EE 24LCxx gibts meines Wissens nach mit Speichergrößen von 128 Byte bis zu 8kByte. (bei Reichelt ab rund 25C/St)
    Mir sind die sogar lieber, weil mir das abspeichern der Daten über diesen "Umweg" auf einen externen Baustein kurioserweise programmiermäßig leichter fällt, als die Internen Speicherzellen zu nutzen. (bin Autodidakt)
    Laut Datenblatt sollen diese EEproms !mindestens! 1Million Schreib/Lesezyklen mitmachen.

    mfG aus P
    der E-Fan

  9. #9
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Aber bevor man auf externes EEprom umsteigt sollte man schon versuchen das interne erst mal voll auszunutzen. Die Handhabung ist eigentlich recht einfach, zumindest in Hochsprachen wie Bascom.
    Dort kann man beispielsweise bei der Dimensionierung einfach "ERAM" mit im DIM Befehl angeben. Das war´s schon!
    Man sollte halt dieser Variable nicht unbedingt ständig neue Werte zuweisen, mehr ist ansonsten eigentlich nicht zu beachten. 100.000 Schreibzugriffe sind schon eine Menge, ich denke das es nur wenige Anwendungsprogramme gibt wo eine solche Zahl nicht über Jahre reicht.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Danke für die Antworten, dass ist ja eigentlich ziemlich nützlich, wenn man Daten dauerhaft erhalten kann, um z.B. Messdaten zu speichern, die auch nach einem Neustart noch vorhanden sind. ICh hab mich jetzt nochmal etwas eingelesen, der AT90S2313 hat ja eh nur einen Timer, von daher ist er für meine Zwecke eh nicht mehr geeignet. Zudem unterstützt er kein I2C. Also wäre das mit den Externen EEproms eh nix. ICh werd wohl umsteigen. Frank hat sicher noch nen par Boards auf Lager

    Nun trotzdem nochmal meine Frage. KÖnnte mir jemand Code schicken, indem ein beliebiger Pin als PWM initialisiert wird und dann der Wert einer Variablen ausgegeben, übernommen, oder wie man das auch immer nennt, wird. Außerdem würde ich gerne Wissen, wo die Verbindung, zwischen dem Prescaler, der Hz-Zahl (244 s.Code), und dem Wert 255..0 liegt.

    MFG Moritz

+ Antworten
Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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