- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 7 von 7

Thema: Die Init Funktion aus der asuro.c

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2006
    Beiträge
    6

    Die Init Funktion aus der asuro.c

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo

    ich muss für die Schule die Funktiom Init erklären also mit Kommentaren kurz und knapp.
    Ich poste mal die Funktion hier rein:

    void Init (void)
    {
    //-------- seriell interface programmed in boot routine and already running -------
    // prepare 36kHz for IR - Communication
    TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
    OCR2 = 0x91; // duty cycle for 36kHz
    TIMSK |= (1 << TOIE2); // 36kHz counter for sleep

    // prepare RS232
    UCSRA = 0x00;
    UCSRB = 0x00;
    UCSRC = 0x86; // No Parity | 1 Stop Bit | 8 Data Bit
    UBRRL = 0xCF; // 2400bps @ 8.00MHz

    // I/O Ports
    DDRB = IRTX | LEFT_DIR | PWM | GREEN_LED;
    DDRD = RIGHT_DIR | FRONT_LED | ODOMETRIE_LED | RED_LED;

    // for PWM (8-Bit PWM) on OC1A & OC1B
    TCCR1A = (1 << WGM10) | (1 << COM1A1) | (1 << COM1B1);
    // tmr1 running on MCU clock/8
    TCCR1B = (1 << CS11);

    // A/D Conversion
    ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); // clk/64
    ODOMETRIE_LED_OFF;

    FrontLED(OFF);
    BackLED(ON,ON);
    BackLED(OFF,OFF);
    StatusLED(GREEN);

    MotorDir(FWD,FWD);
    MotorSpeed(0,0);
    sei();
    }

    Also um diese Funktion geht es.
    Die Letzten Zeilen mit LED... und Motor... habe ich schon erklärt es ghet mir um die ersten Zeilen ob mir da jemand einen Denkanstoss geben könnte oder kurz die Funktionen erklären könnte. Das soll jetzt nicht heissen das man einen fertigen Kommentieten Quelltext reinposten soll einfach eine Erklärung.

    Ich bedanke mich
    MCClane

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.07.2006
    Ort
    Bielefeld
    Beiträge
    166
    Moin MC Clane,

    die erste Zeile ist eine Deklaration von Variablen. Hier werden Pins am µC mit Funktionen verknüpft um mittels IR kommunizieren zu können.

    Bleib senkrecht und viel Spaß bei deinem Vortrag,

    (Michael)

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Und siehe hier: https://www.roboternetz.de/phpBB2/ze...=215322#215322


    PS:
    geht ihr auf die gleiche Schule ?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2006
    Beiträge
    6

    HIlfe

    Hallo
    danke für die Antworten aber ich werde daraus noch nicht so richtig schlau hat einer hier noch eine Erklärung bezüglich für den Mittelteil?

    Danke
    MCClane

  5. #5
    HI

    Im Tutorial von mikrocontroller.net findest du was du suchst. Ansonsten auch das Datenblatt vom ATmega(Im Prinzip werden die Anschlüße des ATmega durch setzen der entspr. Bits in den Registern konfiguriert)

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    16.10.2005
    Ort
    Adendorf
    Alter
    42
    Beiträge
    46
    also irgendwie verstehe ich nicht, wie ihr die 36kHz eingestellt habt.

    Code:
     /*
        Timer2, zum Betrieb mit der seriellen Schnittstelle, fuer die
        IR-Kommunikation auf 36 kHz eingestellt.
      */
      TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
      OCR2  = 0x91;                         // duty cycle fuer 36kHz
      TIMSK |= (1 << TOIE2);                // 36kHz counter
    Wenn ich das Datenblatt richtig lesen kann wird hier doch der Timer2 auf Fast PWM gestellt und ein und ein prescaler von 1.
    Die Periodendauer kann doch bei Fast PWM nicht verändert werden, oder? also würde hier alle 256 Takte der Interrpt aufgerufen.


    Auch die Interruptroutine ist mir nicht so ganz klar.

    Code:
    SIGNAL (SIG_OVERFLOW2)
    {
      TCNT2 += 0x25;
      count36kHz ++;
      if (!count36kHz)
        timebase ++;
    }
    wird hier einfach zum aktuellen Timer wert 0x25 addiert?
    das ergibt dann aber nicht genau 36khz. genauer wäre es 0x22 zu addieren.
    http://wsgs.blogspot.com

    Wenn deine Freundin denkt,du bist bei deiner Frau,und deine Frau denkt,du bist bei deiner Freundin, dann hast du endlich Zeit ins Labor zu gehen

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo Xaver,
    ist zwar ein bisschen spät für meinen post, aber falls es dich noch interessiert, und du den Beitrag noch nicht gefunden hast, schau mal hier warum da 0x25 und nicht 0x22 steht.
    Lieber Asuro programieren als arbeiten gehen.

Berechtigungen

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

LiFePO4 Speicher Test