- 3D-Druck Einstieg und Tipps         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Abspeichern von Messdaten ist bestimmten Zeitabständen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15

    Abspeichern von Messdaten ist bestimmten Zeitabständen

    Anzeige

    Powerstation Test
    Guten Morgen,
    vielleicht könnt ihr mir bei diesem kleinem Problem helfen! Ich muss Messdaten, welche in der Hauptschleife erstellt werden, in definierten Zeitabständen auf eine Sd Karte speichern. Dazu benutze ich einen Timer der mit 25hz läuft.
    Eigentlich sollten dann nach 2 min 3000 Einträge auf der Karte gespeichert sein. Dies stimmt aber leider nicht...
    Wisst ihr wo das Problem sein könnte?

    Danke schonmal für eure Hilfe.

    Gruß,
    Patrick

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.09.2004
    Ort
    Heilbronn
    Alter
    41
    Beiträge
    153
    Sorry aber mit so wenigen Infos und ohne Code zu posten wird dir hier wohl kaum jemand helfen können.
    It is a job that is never started that takes the longest to finish - J.R.R. Tolkien

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.684

    Re: Abspeichern von Messdaten ist bestimmten Zeitabständen

    Zitat Zitat von helipaddi
    ... Messdaten ... auf eine Sd Karte speichern ... Timer der mit 25hz ... wo das Problem sein könnte ...
    KÖNNTE: Vermutlich speicherst Du in der ISR *baaa* oder 25 x Abspeichern dauert länger als 1 sec, oder Speichertiming stört Karte, oder oder oder. Aber natürlich hat maw_hn recht: warum sollen wir viel schreiben, wenn Du zu faul bist, eine ausführliche Fehlerbeschreibung zu geben? Siehe Forumregel Nr 5 - weißt Du was in den Forumregeln steht?
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Da meine Glaskugel in Reparatur ist, schließe ich mich maw_hn an:
    Mehr Infos bitte!

    - bitte Quellcode der main und der Timer-ISR posten.
    - Hast Du schon mal nachgemessen, ob der Timer wirklich mit 25Hz läuft?
    - Wieviele Werte werden denn auf der SD-Karte gespeichert?
    - Werden vielleicht schon gespeicherte Werte durch nachfolgende wieder überschrieben?

    Gruß,
    askazo

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15
    Hab den Quellcode leider gerade nicht hier. Werde ihn heute Abend aber hochladen. Im Prinzip passiert aber auch nicht viel. In der Hauptschleife werden 4 16bit Integer eingelesen welche als PWM in den MC kommen. Im Interrupt werden diese dann mit Hilfe von itoa auf die Karte geschrieben. Zusätzlich wird auf dem Display noch angezeigt wie viele Zeilen schon geschrieben wurde. Daher weis ich auch, dass der Timer viel zu langsam läuft. Den Timervorlade Wert setze ich am Anfang der ISR Routine.

    Zitat Zitat von askazo
    - Hast Du schon mal nachgemessen, ob der Timer wirklich mit 25Hz läuft?
    Werde ich heute Abend mal machen! Kann mir aber nicht vorstellen, dass er falsch läuft, da ich schon den internen RC und einen externen Quarz benutzt habe.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Zitat Zitat von helipaddi
    [...]Daher weis ich auch, dass der Timer viel zu langsam läuft. [...]
    [...] Kann mir aber nicht vorstellen, dass er falsch läuft, [...]

    Irgendwie widersprichst Du Dir gerade selber....

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15

    Anders ausgedrückt:
    Der AVR hat auf jeden Fall den richtigen Takt. Vorteiler und Vorlade Wert sind mit Hilfe von rnAvr hier aus der Wiki generiert.
    Trotzdem werden die Einträge nicht mit der richtigen Frequenz erstellt...

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15
    Hier jetzt mal die relevanten Codeauschnitte:
    Code:
    ISR(TIMER1_OVF_vect)
    {
    	TCNT1 = 25536;
    
    	rcFunktion1 = (rcChannel1-Stick_min-Stick_diff);
    	rcFunktion2 = (rcChannel2-Stick_min-Stick_diff);
    	rcFunktion3 = (rcChannel3-Stick_min-Stick_diff);
    	rcFunktion4 = (rcChannel4-Stick_min-Stick_diff);
    
    	
    	//Kanäle auf SD schreiben
    	ffwrites(itoa(rcChannel1, buffer1, 10));
    	ffwrite(':');
    	ffwrites(itoa(rcChannel2, buffer2, 10));
    	ffwrite(':');
    	ffwrites(itoa(rcChannel3, buffer3, 10));
    	ffwrite(':');
    	ffwrites(itoa(rcChannel4, buffer4, 10));
    
    	ffwrite(0x0D);
    	ffwrite(0x0A);
    Code:
    	
    while (1)
    	{
    
    		rcChannel1 = pwmIn(&PIND, PD6);
    		rcChannel2 = pwmIn(&PIND, PD5);
    		rcChannel3 = pwmIn(&PIND, PD4);
    		rcChannel4 = pwmIn(&PIND, PD3);
    	}
    Code:
    TCCR1B = (1<<CS11);
    Der AVR läuft mit 16mHz.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Wenn ich richtig gerechnet habe, wird Deine ISR alle 20ms aufgerufen, was einer Frequenz von 50Hz entspricht. ( (65536 - 25536) * 62,5ns * 8 = 20ms)

    Du machst übrigens ziemlich viele Funktionsaufrufe in der ISR. Ich weiß nicht, wieviel Takte so ein itoa oder ffwrites benötigt, aber da könnte schon einiges zusammenkommen. Du solltest auf jeden Fall mal prüfen, ob Du die ISR überhaupt schnell genug abarbeiten kannst.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15
    Ups, hatte den Timer bewusst auf 50hz eingestellt, um zu testen wie hoch die Abweichung ist.
    Habe mal ungefähr gezählt wie viele Takte ich benötige. Sollte eigentlich in der Zeit kein Problem sein... Ausserdem ist die Ungenauigkeit auch bei z.B. 10hz vorhanden.

    Habe den Timer jetzt wieder auf 50hz eingestellt. Eigentlich sollte dann nach einer Minute der Counter bei 3000 sein, er kommt aber nur bis 1350. Bei 10hz oder 25hz das gleiche.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen