- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Atmega2560 : PWM beeinflusst ADC

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.08.2009
    Beiträge
    10

    Atmega2560 : PWM beeinflusst ADC

    Hallo Zusammen,

    ich habe ein Atmega2560(modul).

    Wenn ich nur den ADC laufen lasse (so schnell er kann), erreicht er 14,9 kHz. (In dieser Zeit wandelt er im Single-Modus zwei verschiedene ADC-Inputs). Sobald ich aber eine PWM dazu schlalte, senkt sich die Geschwindigkeit des ADC auf 10,5kHz. Nehme ich noch eine zweite PWM hinzu, so sinkt die Geschwindigkeit des ADC erneut auf 8 kHz.

    PS: PWM dazuschalten bedeutet hier nur den Timer dafür initialisieren und einmalig mit einem Wert füllen. Danach wird die PWM nicht erneut gesetzt und der Timer erzeugt auch keine (software)Interrupts.

    Gemessen habe ich das mit einem Osziliskop und dem Toggeln von Pins.

    Ist ein solches Verhalten bereits so schon bekannt und erklärbar, oder sind nähere Informationen von mir nötig? (kann ja sein, dass das schon bekannt ist. Deshalb wollt ich erstmal nachfragen, bevor ich mit Details komme)

    Über Hilfe/Gedanken/Antworten würde ich mich sehr freuen.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Zeig mal den Code dafür. Ne Vermutung hab ich schon, aber ohne Code wärs wie Lottozahlen vorhersagen.
    #ifndef MfG
    #define MfG

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.08.2009
    Beiträge
    10
    erstmal : Merry xmas !!! ...

    ich habe den Quellcode mal auf das Problem zusammengeschrumpft und als compolierfähiges Projekt angehangen.

    Ich hoffe nicht auf Seiteneffekte zum weg-gekürtzen Code. Solltest du also das Problem im angehangenen Quellcode nicht entdecken, werd ich noch mehr von dem ganzen Code posten.

    Kurz zum Code (bzw dessen sinn):

    Es gibt zwei Motoren, die jeweils über eine PWM angesteuert werden. Gleichzeitig wird der Stromverbrauch an diesen Motoren gemessen. Da ich leider keinen Modus gefunden habe beide ADC-Pins gleichzeitig wandeln zu lassen, muss ich im ADC-fertig-Interrupt den ADC-Pin wechseln und die ADC-Wandlung neu starten.

    In der Main() lasse ich vorher einfach mal die PWM laufen. Also ich setze einfach nur einen Wert in die Timerregister... Aber sobald ich das mache, wird der ADC deutlich langsamer (siehe meinen vorherigen Post).

    Wäre SUPER wenn du/ihr mir helfen könntet.

    Beste Grüße
    Sebastian

    PS: kurz noch zu dem, was ich zum kürzen des Porjektes weggemacht hatte: (folgendes wurde vorher nur noch mit initialisiert, aber bei der Reproduktion des Problems nicht benutzt)
    * initialisierung der I2C-Schnittstelle
    * initialisieren des Timer5 (aber nicht starten -> prescaler = 0) um Encoder seriell auszulesen
    * Timer 1 initialisieren (dieser dient nur der globalen Zeitmessung im Projekt) -> prescaler = 0 -> nicht gestartet
    Angehängte Dateien Angehängte Dateien

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.08.2009
    Beiträge
    10
    Hey, lange nichts gehört. Leider habe ich selbst noch keine Lösung gefunden.

    Über Hilfe würde ich mich immernoch sehr freuen.

Berechtigungen

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

Labornetzteil AliExpress