- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 14

Thema: Systemzeit in Gcc abfragen, ist das möglich ??

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.693
    Zitat Zitat von markusj Beitrag anzeigen
    Evtl. möchtest du dir Mal int16_t, uint16_t und ihre großen/kleinen Geschwister aus stdint.h ansehen...
    Netter Hinweis, aber danke, die kenne ich. Und plattformunabhängig bin ich auch, da gibts nämlich Möglichkeiten . . . mit denen man formgerecht auch mal etwas mit weniger als sechs, sieben Buchstaben hinkriegt *ggg*.
    Ciao sagt der JoeamBerg

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Und plattformunabhängig bin ich auch
    Mit dem oben gezeigten aber nicht.


    Zitat Zitat von oberallgeier Beitrag anzeigen
    auch mal etwas mit weniger als sechs, sieben Buchstaben
    Niemand sagt, dass du auf dein u16/s16 verzichten sollst. Aber wenn du es so schreibst
    Code:
    typedef uint16_t u16;
    typedef int16_t  s16;
    müssen deine Typ-Definitionen bei anderen Plattformen nicht erst hinterfragt und ggf. angepasst werden.
    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.693
    Zitat Zitat von sternst Beitrag anzeigen
    Mit dem oben gezeigten aber nicht ... Aber wenn du es so schreibst ...
    Stefan, danke! Da dachte ich, ich hätte die typedef int aus der Library Reference von der AVR Libc Home Page verstanden - und nu gehöre ich doch zu den 60% Pisa-Erwachsenen, die Leseprobleme haben (eher Verständnisprobleme).

    Hab gerade meine Zentralbibliothek geändert !
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Ganz habe ich das mit den Timern noch nicht geschnallt, die Art und Weise schon verstanden nur nicht wie ich da zum konkreten Ergebis einer bestimmten Zeit komme, also die Konfiguration der Timerwerte, Vorteiler bei bestimmter FQu. (3.686400Hz oder 16.000000Hz zBsp).

    Na ja habe zwar jetzt ein funzenden ASM Beispiel, aber da muss ich erst mich wieder durchdenken was genau die SourceCode da macht...
    Es wird aber...
    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.693
    Zitat Zitat von oderlachs Beitrag anzeigen
    ... das mit den Timern noch nicht geschnallt ... nicht wie ich da zum konkreten Ergebis ...
    Zitat Zitat von oderlachs Beitrag anzeigen
    ... Habe auf Microcontroller.net ein gutes Beispiel gefunden und hoffe das ich ...
    Hmmm, da kann ich jetzt nicht weiterhelfen, weil ich Dein microcontroller.net-Beispiel nicht kenne.
    Ciao sagt der JoeamBerg

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    219
    Hi,
    ...doch sollte aus einer Sekunde keine Minute werden ;=)
    pro Tag, Woche oder Jahr ??? Mit Standardquarz bist Du ganz schnell in dem Bereich von einigen 10 Sekunden / Tag
    mfg
    Achim

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von oderlachs Beitrag anzeigen
    Ganz habe ich das mit den Timern noch nicht geschnallt, die Art und Weise schon verstanden nur nicht wie ich da zum konkreten Ergebis einer bestimmten Zeit komme, also die Konfiguration der Timerwerte, Vorteiler bei bestimmter FQu. (3.686400Hz oder 16.000000Hz zBsp).
    Eigentlich ist das gar nicht so schwer:
    • Du hast deinen Systemtakt mit X Mhz (F_CPU).
    • Würdest du damit direkt deinen Zähler betreiben, würde der irrsinnig schnell laufen. Die messbare Zeit wäre also sehr kurz. Daher teilt man den Systemtakt bei Bedarf noch (Prescaler).
    • Dein Zähler zählt mit einer bestimmten Frequenz F_CPU/Prescaler. Je nach Timer kann der Zähler maximal 2^8 (256), 2^10 (1024) oder 2^16 (65536) verschiedene Zustände annehmen.
    • Relevant für dich ist das Auftreten des Interrupts. Der wird bei erreichen eines bestimmten Wertes (konfigurierbar über sogenannte Output Compare Units oder fest bei Zählerüberlauf)
    • Implizit stellt der Zähler nur ein weiterer Taktteiler dar, er teilt die Zählerfrequenz durch die Anzahl der Schritte bis zum Überlauf.
    • Damit ergibt sich die Überlauffrequenz F_Out = F_CPU / Prescaler / Zählschritte
    • Umgekehrt musst du also, wenn du eine bestimmte Frequenz (und damit Zeitintervalle, da f=1/T) generieren möchtest, die Parameter passend wählen. In der Regel sucht man sich dabei ausgehend von F_CPU den kleinsten Prescaler für den das Zählerregister für die Wunschfrequenz noch ausreichend ist.
    • Diese Bedingung lässt sich formulieren als Prescaler >= F_CPU/Max_Zählschritte/F_Out


    Beispiel: F_CPU = 1Mhz. Wunschfrequenz F_Out 2kHz (0,5ms Periodendauer). Timer: 8-Bit.
    Prescaler >= 1Mhz/2^8/2kHz = 1,95
    Zur Verfügung steht beim Mega8 damit zum Beispiel der Prescaler F_CPU/8

    Zählschritte = 1Mhz/8/2kHz = 62,5 (obere Formel umgestellt)
    Probe: F_Out = 1Mhz/8/62 = 2016Hz

    Achtung: Der TOP-Wert der im CTC-Modus gesetzt wird, ist Zählschritte-1, da von 0 bis TOP gezählt wird!

    mfG,
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Danke Markus, das ist sogar für mich Dummie nun besser verständlich, ja manchmal "klemmt der Groschen", wie man früher so sagte, heute sind's ja 10 Cent..
    Ich habe jetzt ein Listig gefunden und etwas verändert und hoffe das ich das richtig damit verstanden habe, die LED soll alle 2 sec hier Aufleuchten:
    /* uC: Attiny2313 */
    /* F_CPU = 2.000.000 Hz */
    #include <avr/io.h>
    #include <avr/interrupt.h>

    //Variablen für die Zeit
    volatile unsigned int millisekunden;
    volatile unsigned int sekunde;
    volatile unsigned int minute;
    volatile unsigned int stunde;

    int main(void)
    {
    DDRB |= (1<< PB0);
    // Timer 0 konfigurieren
    TCCR0A = (1<<WGM01); // CTC Modus
    TCCR0B |= (1<<CS11); // Prescaler 8
    // ((2000000//1000) = 125 bei Qu = 2,0 MHz
    OCR0A = 250-1;

    // Compare Interrupt erlauben
    TIMSK |= (1<<OCIE0A);

    // Global Interrupts aktivieren
    sei();

    while(1)
    {
    /*Hier kann die aktuelle Zeit
    ausgeben werden*/
    if (sekunde % 2 == 0) //alle 2 sec LED ON/OFF
    {
    PORTB &= ~(1<< PB0);//PB0... LOW = LED ON
    }else {
    PORTB |= (1<< PB0);//PB0...HIGH = LED OFF
    }
    }
    }

    /*
    Der Compare Interrupt Handler
    wird aufgerufen, wenn
    TCNT0 = OCR0A = 125-1
    ist (125 Schritte), d.h. genau alle 1 ms
    */
    ISR (TIMER0_COMPA_vect)
    {
    millisekunden++;
    if(millisekunden == 1000)
    {
    sekunde++;
    millisekunden = 0;
    if(sekunde == 60)
    {
    minute++;
    sekunde = 0;
    }
    if(minute == 60)
    {
    stunde++;
    minute = 0;
    }
    if(stunde == 24)
    {
    stunde = 0;
    }
    }
    }
    Gruss und Danke(!!)

    Gerhard
    Geändert von oderlachs (17.10.2013 um 11:26 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Video: Wie ist das möglich ?
    Von hunni im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 19.05.2012, 13:45
  2. Asuro mit Antenne. Ist das möglich???
    Von Sim Robot im Forum Asuro
    Antworten: 14
    Letzter Beitrag: 10.03.2008, 19:25
  3. Bilddaten von Kamera speichern, ist das möglich?
    Von Edi im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 13.10.2006, 19:38
  4. 16% wirkungsgrad?ist das möglich?
    Von geisti im Forum Motoren
    Antworten: 5
    Letzter Beitrag: 29.09.2005, 15:33
  5. [ERLEDIGT] Ist das zuprogrammieren möglich ???
    Von Skull im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 21.08.2004, 12:13

Berechtigungen

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

LiFePO4 Speicher Test