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)
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
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)
Und siehe hier: https://www.roboternetz.de/phpBB2/ze...=215322#215322
PS:
geht ihr auf die gleiche Schule ?
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
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)
also irgendwie verstehe ich nicht, wie ihr die 36kHz eingestellt habt.
Wenn ich das Datenblatt richtig lesen kann wird hier doch der Timer2 auf Fast PWM gestellt und ein und ein prescaler von 1.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
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.
wird hier einfach zum aktuellen Timer wert 0x25 addiert?Code:SIGNAL (SIG_OVERFLOW2) { TCNT2 += 0x25; count36kHz ++; if (!count36kHz) timebase ++; }
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
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.
Lesezeichen