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

Thema: AtMega32 PWM 1x 16Bit

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Danke für eure Hilfe, leider funktioniert es immer noch nicht.
    Könnt ihr mir vieleicht sagen was ich falsch mache, oder den code korrigieren? Ein Fehler wird bei "ICR1=65535
    " angezeigt. Wenn ich es in ICR1H und ICR1L aufteile hab ich den fehler nicht, aber ich hab keine Ahnung wie ich die einzeln Zuweise. Ich kan so ja max. 255 zuweisen, da es 2 8-Bit Werte sind, aber ich brauch ja 65535.

    Ich glaube generell das der Code eh ziemlich falsch ist, vieleicht könntet ihr ja mal drüberschauen. Ich verzweifel nämlich langsam!


    Code:
    $regfile = "m32def.dat" 
    $framesize = 32 
    $swstack = 32 
    $hwstack = 32 
    $crystal = 16000000                           
    $baud = 9600 
    Const WGM13 = 4                  '4 ist hier wieder die Bitnummer im Register TCCR1B
    Const WGM12 = 3
    Const WGM11 = 1
    Const WGM10 = 0
    Config Pind.4 = Output
    Config Pind.5 = Output
    Config Timer1 = Pwm
    TCCR1B.WGM13=1
    TCCR1B.WGM12=0
    TCCR1A.WGM11=1
    TCCR1A.WGM10=0 
    ICR1= 65535 
    
    Do
    Pwm1a = 10000 
    wait 1
    Pwm1a = 20000 
    wait 1
    Pwm1a = 30000
    wait 1
    Pwm1a = 40000 
    wait 1
    Pwm1a = 50000 
    wait 1
    Pwm1a = 60000
    wait 1
    
    loop
    
    End
    Ich hoffe ihr könnt mir weiterhelfen

    Viele Grüße
    Dominik

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Dominik,
    das Setzen von ICR 1 sollte eigentlich funktionieren, evtl. steht die Adresse des Registers nicht im Dat-File des M32.
    Wenn du es mit separaten H und L machst und auf 65535 kommen willst, dann so wie Sauerbruch es oben geschrieben hat.

    Dein Timer läuft noch nicht, weil du keinen Prescale angegeben hast.
    Wenn du Ausgänge schalten willst, musst du dies auch konfigurieren, etwa so:
    Config Timer1 = PWM, Prescale = 1, Compare_A_PWM = Clear_Up

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Morgen Fo_Ro,

    danke für die Hilfe, werde gleich noch "Config Timer1 = PWM, Prescale = 1, Compare_A_PWM = Clear_Up" in den COnde mit reinmachen. Dann sollte alles soweit stimmen, oder?

    Wie komme ich den von ICR1H = 255 und ICR1L = 255 auf meine 65535? Werden einfach beide 8 Bit Werte multipliziert?

    Also wenn ich die Zeile mit Config Timer 1.... noch einsetze und anstellte von ICR1 einfach ICR1H und ICR1L sollte es funktionieren, oder gibt es sonst noch fehler?

    Gruß Dominik

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Hey,

    um aus zwei 8 Bit Werten einen 16-Bit Wert zu machen, reicht es die aneinander zu hängen:

    1111 1111 1111 1111

    So kommst du auf deinen Wert.
    Ebenso geht es mit dem Teilen....einfach nach 8 Bit einen Cut machen und die Werte unter High und Low speichern
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Dominik009 Beitrag anzeigen
    Also wenn ich die Zeile mit Config Timer 1.... noch einsetze und anstellte von ICR1 einfach ICR1H und ICR1L sollte es funktionieren, oder gibt es sonst noch fehler?
    Sonst scheint es mir ok zu sein.
    Du hast im Code den Pin D.4 (OC1B) als Ausgang definiert, so als wolltest du dort auch ein Signal bekommen. Wenn dem so ist, musst du auch noch die Option Compare_B_PWM angeben und entsprechende Werte für PWM1B setzen.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Vielen Dank an euch alle für eure hilfe. Es läuft momentan alles 1a! Danke sehr!

    Gruß Dominik

Ähnliche Themen

  1. 16Bit Software PWM XMEGA
    Von Thalhammer im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 07.02.2013, 22:17
  2. AVR mit 4 16Bit-Pwm
    Von Che Guevara im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 15.07.2011, 14:51
  3. 2x 16bit PWM ATMega32 @16MHz
    Von deko im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 24.05.2011, 19:11
  4. ATMEGA64 PWM Mode 16bit
    Von Franz_vm im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 16.05.2007, 13:26
  5. ATmega 16Bit PWM?
    Von cshansolo im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 13.09.2005, 13:11

Berechtigungen

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

Labornetzteil AliExpress