- Akku Tests und Balkonkraftwerk Speicher         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: Schreiben in SRAM

  1. #21
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Anzeige

    Powerstation Test
    Hallo,
    jetzt ohne deinen Code auswendig glernt zu haben, aber ein ADC wandelt immer egal was anliegt, irgend ein Wert kommt immer raus.
    Bei 0Volt wird der Wert auch gegen 0 gehen.

  2. #22
    Neuer Benutzer Öfters hier
    Registriert seit
    13.06.2005
    Beiträge
    26
    Achso,

    klingt logisch. Das heißt, wenn ich keine Spannung anlege, dann wird trotzdem die Spannung um 0V gewandelt. Aber dann macht das ja auch keinen Sinn, dass ich die Werte jeweils nur in dieselben EEPROM-Speicherzellen abspeichere. D.h. auch wenn ich eine Taste gedrückt hatte und ein Wert abgespeichert wurde, wird dieser jedoch sofort wieder durch einen Wert von 0V überschrieben. Oder?

  3. #23
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Genau, Du müsstest evtl. den Wert abfragen ob ein Mindestwert erreicht wurde, oder ob er innerhalb eines Bereiches liegt, falls nicht, wird nix gemacht.

  4. #24
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Zitat Zitat von Johnny_112
    Mein Problem besteht immer noch. Ich weiss nicht was ich falsch mache. Habe es schon mehrmals kontrolliert und geändert, jedoch macht der ADC noch immer eine Wandlung ohne Drücken einer Taste.

    Verstehe nicht ganz.

    Sooft du den Wanlder startest sooft bekommst du einen Wert.
    Gruß
    Ratber

  5. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    13.06.2005
    Beiträge
    26
    Habe das Prorgamm nun abgeändert. Jedoch erhalte ich trotzdem unlogische Werte.

    Code:
    .Include "m32def.inc"
    .DEF tmp = R16
    .DEF lowad = R17
    .DEF highad = R18
    .EQU wertadlow = 0x60
    .EQU wertadhigh = 0x61
    
    ldi tmp, (1<<ADEN)|(1<<ADPS1)|(1<<ADPS2)
    out ADCSRA, tmp
    ldi tmp,(1<<MUX2)|(1<<MUX1)|(1<<MUX0)
    out ADMUX, tmp
    sbi ADCSRA, ADSC	;Das Bit ADSC wird gesetzt und der ADC startet.
    
    wait:
    sbis ADCSRA,ADIF	;Das ADIF wird abgefragt, ob eine Spannung anliegt.
    rjmp wait	;Warteschleife bis Spannung anliegt.
    
    in lowad, ADCL	;Das Low-Byte des ADCs wird ausgelesen.
    in highad, ADCH	;Das High-Byte wird ausgelesen.
    
    ;Überprüfung ob Werte im sinnvollen Bereich sind.
    ldi R21,0x32	;Es wird erst ab Wert 50 in EEPROM geschrieben.
    sub R21,lowad
    brpl wait
    
    ldi R21,0x02	;Es wird erst ab Wert 768 nicht mehr in EEPROM geschrieben.
    sub R21,highad
    brmi wait
    
    write1:
    sbic EECR,EEWE	;Ist der Schreibzyklus beendet, PC = PC +2
    rjmp write1
    
    ldi R19, 0xF0	;Festlegen der Zieladresse.
    ldi R20, 0x00	
    
    out EEARH, R20	;Die Zieladresse des EEPROM wird übertragen.
    out EEARL, R19
    
    ;Als Nächstes wird das Low-Byte des ADCs abgespeichert.
    
    out EEDR, highad	;Byte in Zwischenspeicher laden.
    
    ;Folgende 2 Befehle sorgen dafür, dass der Wert im Zwischenspeicher nun endgültig in der Zieladresse des EEPROMs abgespeichert wird.
    
    sbi EECR,EEMWE
    sbi EECR,EEWE
    
    write2:
    sbic EECR,EEWE	;Ist der Schreibzyklus beendet, PC = PC +2
    rjmp write2
    
    ;Nun wird die nächste Zieladresse festgelegt und das High-Byte des ADCs abgespeichert.
    
    inc R19
    
    out EEARL, R19	;Es muss nur das Low-Byte geändert werden.
    out EEDR, lowad
    
    sbi EECR,EEMWE
    sbi EECR,EEWE
    ;Ende
    Ich erhalte Werte, welche nichts mit dem Drücken der Tasten zu tun haben. Z.B. erhalte ich 0x014E, wenn ich Taste 5 drücke, welche jedoch mit dem Multimeter einen ungefähren Wert von 0,32 V liefert. Logischerweise müsste dort doch etwa 0x0080 herauskommen. Auch bei anderen Tasten kommen ganz andere Werte heraus.
    Am besten man überträgt das Programm einmal in den 1.4 RN-Control und schaut sich das selbst an.

    Wie soll ich es denn dann bewerkstelligen, die verschiedenen Werte der Tasten richtig herauszulesen.

  6. #26
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Ja wie gesagt,ich hab keine RN-Control aber ich hab mal eben nachgesehen.

    Wenn ich richtig gesehen habe Von 5V runter 1x10K und 5x1K.
    Zwischen den Widerständen dann 5 Taster als Schließer die alle auf den ADC7 gehen.

    Ich sehe aber nirgens einen Pullup oder Pulldown für den offenen AD-Eingang.
    Dh. der Eingang kann Antenne spielen was er vermutlich auch tut.

    Häng mal an Port A8 nen 10K nach Masse dann sollte der Eingang ohne gedrückte Taste den Wert 0 (plus einige Digits) liefern.

    Die zu erwartenden ADC-Werte kannste dir ja schnell neu berechnen.
    Gruß
    Ratber

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    13.06.2005
    Beiträge
    26
    Habe es probiert mit dem Widerstand. Bringt jedoch keine Änderung. Ich denke, dass es nicht daran liegt, da es mit dem Demoprogramm in Bascom ja ohne Problem funktioniert.

    Stimmt mein Programm denn überhaupt von der Logik?

    Zuerst alle Einstellungen am ADC vornehmen.
    Dann den ADC starten.
    Dann Warten bis ADIF = 1
    Dann übertragen der Werte in EEPROM, wenn diese zwischen 50 und 768 sind.

    Oder habe ich am ADC was falsches eingestellt?

    Die Werte, welche ich erhalte liegen im Schnitt so zwischen 0x0155 und 0x0170 und ich komme so auf eine umgerechnete Spannung von ungefähr 0,9 V.

  8. #28
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Hmm,lass mal schauen.

    Angeschaltet ist
    Prescaler auf 64
    Mux auf 7
    Und Go

    Warten auf Adif (Fertig)
    Auslesen des Ergebnisses.



    Ja,alles soweit ok aber die Referenz solltest du noch definieren.
    Also Bit 6 und 7 (Refs0/1) vom Admux-Register
    Gruß
    Ratber

  9. #29
    Neuer Benutzer Öfters hier
    Registriert seit
    13.06.2005
    Beiträge
    26
    REFS0 und REFS1 muss ich doch nicht setzen, wenn ich die Referenzspannung an Pin UREF einstelle (Entweder Jumper drauf, dann 2,5V oder nicht, dann 5 V), oder?

  10. #30
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Nö,du mußt ihm schon sagen welche Quelle er nutzen soll.

    Wenn du ihn mit einer Spannung an Aref beaufshclagst und er auf Intern steht dann riskierst du die Interne Quelle zu killen da die bei dieser Einstellung auf den Pin gelegt wird (Der Kondensator Entstört dabei einwenig)


    Welche er per Default nutzt weiß ich nichtmal weil ich se immer mit angebe.

    Kannst ja mal aus Jux das Register auslesen und Anzeigen.
    Gruß
    Ratber

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad