- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: ATmega8 ADC übertakten?!

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    36
    Beiträge
    270

    ATmega8 ADC übertakten?!

    Anzeige

    E-Bike
    Hallöchen!

    ich hab gerade mal die geschwindigkeit des ADC von einem ATmega8 gemessen. hier der quellcode (BASCOM):

    Code:
    $crystal = 16000000
    $baud = 19200
    
          Config Timer1 = Timer , Prescale = 8
    
    
    
    
    Dim Wert As Word
    Dim Zeit As Word
    Dim I As Byte
    
    
    
    Config Adc = Single , Prescaler = AUTO
    Start Adc
    
    
    Do
    For I = 0 To 5
    
    Timer1 = 0
    Wert = Getadc(i)
    
    Zeit = Timer1
    Zeit = Zeit * 2
    
    
    Print "ADC" ; I ; " hat den Wert " ; Wert ; " und hat dazu " ; Zeit ; " Microsekunden gebraucht"
    
    
    Wait 2
    Next
    Loop
    erschreckender weise hat der AVR rund 890µS gebraucht um einen wert zu erfassen.
    jetzt hab ich mal den prescaler wert auf 8 gesetzt (damit habe ich 2Mhz ADC-clock, statt den im datenblatt angegebenen max. 200KHz). machte sich auch gleich in der zeit bemerkbar: ca. 64µS für ein sample.
    mangelnde genauigkeit habe ich noch nicht feststellen können (hab mal GND und VCC an die ADC-ports angelegt).
    bei einem prescaler von 4 (4Mhz) ergaben sich dann schon schwankungen von ca. +- 10 (was bei 10bit knap 0,1% sind). bei prescaler 2 (8Mhz) waren es dann so +- 200.
    hat jemand schon erfahrungen mit der genauigkeit bei steigender geschwindigkeit oder evtl. sogar ne schöne tabelle mit schaubild?
    letztendlich soll der AVR das maxi/minimum einer spannungskurve ermitteln, was allerdings schlecht möglich is, wenn er zu langsam oder zu ungenau ist.

    mfg

    schoko
    Warum bekommen Vegetarier immer eine Extrawurst?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Zwischen 250 und 500kHz verliert man ein bit, darüber mindestens ein weiteres Bit (AVcc/ARef mit Spule und Kondensator entkoppelt).

    Bei 1MHz ist laut Datenblatt Schluß, ich hab's beim ATMega 168 noch ein bisschen weiter getrieben. Bei 1,125 MHz (Prescaler 16 bei 18,432MHz Takt) sind drei Bit "futsch". Weiter habe ich nicht getestet.

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Bascom mißt zweimal, angeblich sicherer, kost aber Zeit.
    Vielleicht willst du mit ein bißchen inline-assembler dran drehen ?
    https://www.roboternetz.de/wissen/in...e#Getadc.28.29
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    hat jemand schon erfahrungen mit der genauigkeit bei steigender geschwindigkeit oder evtl. sogar ne schöne tabelle mit schaubild?
    Ein Schaubild habe ich leider auch nicht. Ich habe mir eine Art Oszi mit einem Atmega8 gebastelt, die maximale Abtastfrequenz liegt bei

    150 Khz

    Über die Genauigkeit kann ich wenig sagen, die Signalformen sehen noch einigermaßen vernünftig aus.
    Ich habe auch schon mal Signale im Mhz Bereich angelegt. Es scheint sogar eine Unterabtastung möglich, der angelegte Sinus erscheint aufgrund von Aliasing wieder sauber als Sinus ( Stichwort "subsampling" ).

    Gruss,
    stochri

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Ich muss den Thread doch nochmal rauskramen:

    Weiß jemand, ob man steuern kann, welche bits futsch sind? Denn wenn man mit 10bit ADC rangeht, und die unteren 2-3 Bit sind futsch, ist das ja quasi egal, da in allen tutorials steht, dass man die unteren 2 bit grad ignorieren soll, da sie für den eigentlichen Wert nichts mehr aussagen, durch Schwankungen und Ungenauigkeiten.

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Du kannst einstellen, ob der ADC-Wert linksbündig abgelegt wird. (Muttu gucken) Dann liest du eben nur das Hi-Byte und vergisst die unteren 2Bit.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Ja, die Anordnung kann man einstellen. So baute ich mir ja auf einfache Art und Weise einen 8bit-ADC, der die untersten 2 Bit immer "ignorierte".
    Aber wenn ich ihn jetzt übertakte, und er 2 Bit weniger Konvertieren kann, sind das dann die 2 untersten oder die 2 obersten? Darum gehts mir.

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Da sich der ADC an den Wert ja "anschleicht", sind die untersten Bits zu kübeln.
    Ich würde sie mit einem "SHift-Right" eleminieren. bei zwei bits:
    Bascom SHIFT value, right, 2
    C value >>= 2;
    ASM LDS reg, value
    LSR reg
    LSR reg
    STS value, reg
    (will dich da aber nicht belehren)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Danke für die Antwort. Du belehrst mich nicht, keine Angst. Ich lerne gern.

    Warum stellst Du nicht einfach eine linksseitige Bitanordnung ein, dann sind die 2 untersten Bits autom. in einem anderen Register, das Du dann eh nimmer abfragen wirst.

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ah so, vorbei geredet.
    Bei links-ausrichtung (s.o) ist es so, wie du sagst, wenn du 2 Bit schmeissen willst. Das würde dann reichen.
    Nur wenn du noch mehr übertaktest, und noch mehr Bits wegnimmst, gilt das obige. In meinem Beispiel wären das insges. 4 Bits
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test