-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: 16 Bit

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2006
    Alter
    37
    Beiträge
    16

    16 Bit

    Anzeige

    Hat jemand ein Beispiel wie ich in Bascom eine 16it PWM Signal an einem ATMega 32 erzeuge. Ich hatte schon gesucht aber nur in C++ gefunden. Ich aknn dain programmieren, aber irgendwie funktioniert die Konvertierung nicht in Hexa.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    äh, was hat die Erzeugung einer PWM von 16 Bit Teilung mit Hex zu tun?
    versteh die Frage nicht.
    Für PWM--Konfiguration des Timers nimmste einfach config timer1=pwm etc. etc.
    aber mit Hex hat das nix zu tun.
    Wenn du daten im Hexforat per UART verschicken willst geht das
    über print hex(Variable);
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.12.2006
    Beiträge
    12
    Hier ein kleines Beispiel für den ATMega32 in BascomAVR für 2 x PWM durch Timer1 gesteuert und an Den Pin's 19 (OC1A) und Pin 18 (OC1B) ( bei
    einem ATMega im DIP Gehäuse.
    Alles weitere hast du nicht mitgeteilt, Puls/-Pausenverhälnis, Frequenz etc.

    Durch veränderen der Variablen A,B änderst du das Puls/-Pausenverhältnis.
    Die Frequenz änderst du mitunter dadurch, dass du den Prescale-Wert änderst,
    siehe Datenblatt ,( durch die Vorgaben durch Bascom bei der Eingabe )
    Habe im Beispiel beide Kanäle unterschiedlich vorgeladen damit ein unterschied ersichtlich ist. ( Oszi/ LED etc. )
    --------------------------------------------------------------------------------------
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000
    $baud = 9600

    Config Pind.4 = Output
    Config Pind.5 = Output
    Dim A As Byte
    Dim B As Byte
    A = 0
    B = 122
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up ,
    Compare B Pwm = Clear Up , Prescale = 256

    Do
    Compare1a = A
    Compare1b = B
    Loop
    --------------------------------------------------------------------------------------


    MfG Martin

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2006
    Alter
    37
    Beiträge
    16
    Das mit Hex umwandel meine ich bei C. Die Datei um es später ans AVR zu schicken. Aber das ist nicht so wichtig.

    ich hatte bis her nur die Beispiele mit 8 Bit nach gemacht. aber wenn ich las 16bit scheint mir das nicht zu gelingen, bzw. ich weis nicht wie das geht.

    Wäre über ein Beispiel Code mit Kommentaren sehr Dankbar. [-o<

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2006
    Alter
    37
    Beiträge
    16
    Das ging aber schnell.

    So habs ausprobiert. Da ist noch folgendes. Die Konfiguration ist für 8 MegaHerz. Da ich noch keinen Quarz gekauft habe kann ich den AVR nicht darauf Takten, geht das auch mit 1MegaHerz.
    Mein Servo Zappelt nähmlich nur und hält keine Feste Position?

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    Hi,
    wenn du damit einen Servo ansteuern willst, wäre es nicht einfacher den Servo Befehl von Bascom zu benutzen? Also ich meine sowas:
    Code:
    Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
    
    Config Portb = Output
    
    Enable Interrupts
    
    Servo(1) = 100
    Servo(2) = 100
    MfG

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    02.12.2006
    Beiträge
    12
    @ R-H, upps da haste mich aber auf dem falschen Fuß erwischt
    Bin selber gerade dabei mich in die AVR's ( ATM32 etc. ) einzuarbeiten.
    Soweit ich aber weiß, kannst du auch mit dem internen RC generierten Takt arbeiten. ( Wie genau der auf Dauer ist, Temperatur etc. ist eine andere Sache )
    Da müßte ich parallel zu meinem eigenem Problem schon wieder tief Schmökern im Datenblatt zum ATM32 und BascomAVR.
    ( Ich gehe ja mal davon aus das du beides hast ? Ohne dem wirst du ziemlich hilflos da stehen. Eigene Erfahrung und trotzdem
    komme ich mit dem dritten PWM Signal via Timer2 nicht weiter )

    Ich meine, (betone meine unerfahren Meinung) so aus dem Bauch raus, dass der ATM32 ohne weitere Angabe mit ca 7-8Mhz intern taktet. ( per int. RC-Takt-Generator )
    Ist aber Fuse-Bit abhänging ( gib also Obacht! ).
    An alle anderen und erfahrenen, kasteit mich aber ist so aus dem Bauch raus.

    MfG Martin

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2006
    Alter
    37
    Beiträge
    16
    Danke für die Schnelle antwort coCo. Aber mein Servo Zittert auch bei dem Befehl nur vor sich hin.

    Ich hab selbst noch nicht viel Erfahrung, hab selbst im Herbst damit angefangen von der Windows Programmierung, auf andere bereiche auzustrecken.

    Die Versuche mit einem Servo an einem ATM32 hatte ich bisher nur zappelnde Zustände. Ich bekam eine Position hin, aber die Signale waren so schwach, das dies nicht gehalten werden können wie dort, wenn ich die Servo an meinem Empfänger und mit meiner Fernsteuerung steuere.

    Aus den angaben von dem ATM32 hatte ich 1MgeaHerz gelesen, aber vielleicht habe ich mich mal wieder verkuckt.

    MFG
    JPL

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    02.12.2006
    Beiträge
    12
    @ R-H
    Lese ich es richtig, dass deine Servo's auch am Emfänger angeschlossen unsteht sind / zittern?
    Wenn das aufeinander abgestimmte / kompatible Teile sind und die Einstellungen ( wenn möglich oder vorhanden ) richtig sind
    würde ich zuerst auf einen Fehler oder defekt schließen bei den Servo's.
    Hast du die möglichkeit deine Servo's bei einem befreundeten FMA Hobbiesten zu testen?

    Ich kann dir nur sagen das du einen Ausgang des ATM32 bis max. ca. 20mA gegen Masse oder ca. 40mA gegen Ub
    ( Versorgungsspannung = im Regelfall 5V= ) belasten kannst / darfst ( dabei beachten das du die Gesammtleistung des ATM32 nicht überschreitest )
    Zudem stehen dir im Regelfall ( bei ca. 5 V= Gleischspannung als Versorgungsspannung des µC ) max. 4,9-5V= zur Verfügung.

    Du solltest einmal in Erfahrung bringen welchen Strom die Servomotoren aufnehmen / ziehen und welche Spannung sie hierbei benötigen.


    MfG Martin

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2006
    Alter
    37
    Beiträge
    16
    Ich hab mich falsch ausgedrückt. Beim Empfänger und mit der Fernsterung zappeln die Servos nicht.

    Ich hab mal bei Gelegenheit das Signal vom Empfänger gemessen.
    Das Signal ist genau so wie ich es bei RN-Wissen gelesen habe, dass das PWM in einem 20ms Takt abgegeben wird. Naja, am AtMega32 messe ich aber einen Taktlänge von 56us (mücro sekunden).

    Es sieht so aus das es von der Taktlänge abhängt. Daher wollte ich das mit den 16bit PWM ausprobieren. Besser wenn ich die Taktlänge in der Programmierung festlegen kann, da die Schaltung im Servo, wahrscheinlich davon abhängig ist.

    MFG
    JPL

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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