- SF800 Solar Speicher Tutorial         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 35

Thema: RN-Mega2560 Muß man Aref noch mit 100nF beschalten? [gelößt]

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    Anzeige

    LiFePo4 Akku selber bauen - Video
    hab nen poti, das ich an der einen seite auf vcc andere seite auf gnd hab und den schleifer auf adc .. das ganze kann ich ueber stecker an verscidene adcs einstöpseln...

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    hallo

    so ich habe einen Fehler gefunden : Ich habe den PORTK angeschlossen den ich vorher noch nie getestet habe.

    Ich frage im Bascom alle 16 Analogports ab und ADC0 bis ADC7 funktionieren. ADC8 bis ADC15 funktioniert dagegen nicht.

    Kannst du bitte mal testen Goara ob du am PortK (ADC8 bis ADC15) analoge Messwerte einlesen kannst ?


    Schnipsel Beispiel:
    Code:
    Config Portk = Input                                        ' Port k als Anlogeingang konfigurieren 8 Analogports                                        '
    Config Portf = Input                                        ' Port f als Anlogeingang konfigurieren 8 Analogports
    
    start adc
    
    A = Getadc(0)
    Waitus = 11
    B = Getadc(1)
    Waitus = 11
    ... usw. bis 
    P = Getadc(15)
    Ich habe so das Gefühl das in der Bascom Version 1.11.8.7 irgendwie ein Bug in der Abfrage der Analogeingänge 8-15 ist.


    Gruß
    Steffen

    PS.: Die 10 Bit sollten an jedem ADC verfügbar sein. Für die ADC0-7 kann ich jedenfalls definitiv bestätigen das die 10Bit Auflösung funktioniert.


    PSS : So ich habe jetzt nocheinmal die Referenz AVCC eingestellt und der ADC 0-7 funktioniert damit. Soweit so gut nun müßte nur noch ADC 8-15 irgendwie funktionieren.

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    es könnte schon sein, das Bascom in dieser Version noch einen Bug hat, denn soviele ADC-Eingänge haben sonst nicht viele andere AVR.
    Beim M2560 ist der ADMUX auf zwei Register verteilt, deswegen funktionieren die unteren, aber nicht die oberen.

    Ich kann heut Nachmittag evtl. mal probieren, ob es in der neusten Bascom-Version anders ist (Wenn's derweil keine anderen neuen Erkenntnisse gibt). Ich hab zwar keinen M2560, kann das aber im ASM kontrollieren ob die richtigen Register gesetzt werden.

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    das wäre schön wenn du das mal prüfen kannst. ASM habe ich selber noch nie benutzt.

    Ich habe es jetzt noch mit Bascom 1.11.8.8 getestet. Das ist die neuste Version aber die 2560.def Datei wurde nicht verändert so das es immer noch bei dem Fehler bleibt.

    Langsam bin ich hier am verzweifeln ich habe jede Leiterbahn verfolgt und alle Spannungen gemessen die nur gehen ich habe jeden Pin am PortK (ADC8-15) probiert alles ohne Erfolg.

    Du wärst meine letzte Rettung um wenigstens den Fehler einzugrenzen.

    Gruß
    Steffen

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Jetzt probieren wir erst mal einen workaround,
    denn beim M2560 sind die ADC-Kanäle nicht direkt hintereinander von 0-15 ansprechbar, dH. 0-7 passt mit GetdADC(0-7), aber für 8-15 brauchts einen Tricks:
    Ich hab das jetzt noch nicht probiert, aber das darfst Du machen

    Wenn ADC8-15 gemessen werden soll, vorher mit
    Code:
    ADCSRB.MUX5 = 1      ' ADC8-15
    umschalten, dann wird mit GetAdc(0 -7) ADC8-15 gemessen !
    Wenn man ADC0-7 messen will, wieder mit
    Code:
    ADCSRB.MUX5 = 0      ' ADC0-7
    zurückschalten zum Normalzustand !

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    ok ich hab´s probiert und es geht leider nicht.

    Ist der Code einfach nur falsch ... ich verstehe es nicht :


    Ich habe jetzt mal den Code zusammengeschrumpft um nur den ADC10 auszulesen.
    Der Code ist so minimal und Übersichtlich das ich keine Fehler entdecken kann. Das einzigste wo ich mir unsicher bin ob ich den Analogeingang auch mit Config Portf = Input konfigurieren muß.

    Code:
    'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
    $prog , 255 , &B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus
    $regfile = "m2560def.dat"
    $hwstack = 82                                               '80
    $framesize = 68                                             ' 64
    $swstack = 68                                               '44
    $crystal = 16000000                                         'Quarzfrequenz
    
    
    
    'Definition USB
    Config Com4 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open "com4:" For Binary As #4                               'USB Port
    
    
    'Analogport Definition
    Config Portk = Input                                        ' Port k als Anlogeingang konfigurieren 8 Analogports                                        '
    Config Portf = Input
    
    Enable Interrupts
    
    Dim Getdata As Word
    
    
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Analog Digitalwander Zuweisungen
    
    
    Start Adc
    
    
    
    Do
    
    
    'hab ich noch zusätzlich eingetragen und auch ohne probiert aber ob das sinn ergibt ?
    Adcsrb.acme = 1
    Adcsrb.aden = 1
    'ergibt das sinn ende
    
    
    Adcsrb.mux5 = 1                                             ' ADC8-15
    
    
    Getdata = Getadc(10)
    Print #4 , Getdata
    Print #4 ,
    
    
    Waitms 500
    
    Loop
    End
    Der Code gibt mir auf meiner RS232 immer 1021 schwankend bis 1023 aus den wirklichen Messwert macht er nie.

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    so neue erkenntnisse:

    Adcsrb.mux5 = 1 verhindert das ich die ADC0-7 auslesen kann soweit stimmt das.

    Adcsrb.acme = 1 und Adcsrb.aden = 1 haben dem Programm erstmal nicht geschadet soweit so gut.

    Ich habe jetzt mal den ADC11 genommen und da erhalte ich einfach nur willkürlich schwankene 10 Bit Werte und das obwohl Adcsrb.mux5 = 1 gesetzt ist.

    Das alles hat eigentlich zur Folge das der gesamte Port K defekt ist was ich eigentlich nicht glaube da ich meine Eingänge über einen Spannungsteiler und zusätzlich mit einem Widerstand von 4,7 KOhm den Port gegen zu hohe Ströme geschützt habe. Selbst ein Z-Diode habe ich eingebaut gegen Überspannung.


    Kann es irgendwie sein das die Register falsch ausgelesen werden in Datenblatt steht irgendwas von Links und Rechtsbündig angeordnet was ich aber auch noch nicht ganz verstanden habe wie das funktioniert ?

    Naja ich glaube nur dein ASM verschafft noch Klarheit ^^

    Gruß
    Steffen

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo !
    Wenn du mit Adcsrb.mux5 = 1 umschaltetst, darfst du nicht wieder mit GetAdc(10) die Daten holen !
    sondern mit GetAdc(0) für ADC8, usw. !
    Der max. Wert für GetADC ist 7 !

    Also entweder MUX5 = 0 dann bekommt man mit GetADC(0) den ADC0-wert eingelesen, oder mit MUX5 = 1 dann bekommt man mit GetAdc(0) den ADC8-Wert eingelesen.

    Die andern Bitsetzereien, die Du gemacht hast, kannst mal weglassen, da es ja vorher ansonsten auch geklappt hat !

    Code:
    getadc(x) |  Mux5 = 0   |  Mux5 = 1
    ----------+-------------+-----------
      0       |       0     |      8
      1       |       1     |      9
      2       |       2     |     10
      3       |       3     |     11
      4       |       4     |     12
      5       |       5     |     13
      6       |       6     |     14
      7       |       7     |     15
    Aber trotzdem ohne Gewähr, hab mein ASM noch nicht angeworfen

    Edit:

    Adcsrb.acme ist für den Analog Comparator, das können wir hier nicht brauchen ! [-X
    Noch einer:
    Adcsrb.aden gibts garnicht, deswegen hats nicht geschadet

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    jetzt hab ich erstmal ein update von Bascom gemacht, nicht das wir hier einen alten Fehler finden

    Hab ein kleines Testprog gebaut, das nur ein Getadc enthält, einmal mit Getadc(1) und mal mit Getadc(10), und so wie es mal in der Hilfe stand, wird der Wert in der Klammer direkt an ADMUX übergeben, und nicht wie man meinen könnte, der entsprechende ADC-Eingang angesprochen !
    Es ist also nicht vorgesehen, dass man den ADMUX auf zwei Register verteilt (GetADC > 7).

    Die ADC-Eingänge von 7 - 15 haben beim MUX eigentlich die Werte 32 - 39, was man aber nicht so darstellen kann, da die Bits auf zwei Register aufgeteilt sind.

    Es müsste also so funktionieren wie ich oben beschrieben habe.

    Da Du im schriftlichen englisch besser bist als ich, darfst Du den Bug an MCS-Mark weiterleiten Im MCS-Forum hast Du es ja schon angefragt.

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    uii uii es funzt ***mega freu und an die decke spring***

    Du hast absolut recht getadc(0) beim Mux5 = 1 ist der ADC8. Das der andere Code quatsch ist hätte ich mir fast denken können mit den Datenblättern muß ich mich erstmal anfreunden.

    Falls du mal in meiner nähe bist erinnere mich drann das ich dir einen Kasten Bier oder was auch immer du drinken willst schulde.

    Ich glaube das hätte ich ohne dich nie hinbekommen.
    Ich Suche mal die aktuelle Bugliste und schreibe es noch mit unten drann.


    Tausend und einmal Danke
    Steffen


    PS.: Japp habe gerade im MCS Forum die Lösung gepostet ... man hätte ja meinen können das da mal ein Entwickler ab und zu vorbei schaut ^^.

    PSS. : MCS Mark ist informiert mal schauen was er antwortet.

    Hehe zwischendurch ist bei mir soviel passiert das ich wahrscheinlich heute nacht nicht mehr schlafen kann

    1.µController funzt endlich.
    2.Auto ist kaput gegangen da bin ich erstmal schnell zu Werkstatt und habe einen Schlauch wechseln lassen.
    3.Mein Mutter ist im RTL Mittagsmagazin zu sehen ^^ uihh voll die Prominenz hier ... da hole ich mir gleich nen Autogramm hohoho.

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests