Lab-irkit2: Unterschied zwischen den Versionen
Aus LaborWiki
Siro (Diskussion | Beiträge) K (kommt noch mehr... :)) |
Siro (Diskussion | Beiträge) K (added more documentation... still not done everything) |
||
Zeile 20: | Zeile 20: | ||
* mehr als 32bit lange Codes | * mehr als 32bit lange Codes | ||
* unterschiedliche Ports verwenden, für die Kanäle | * unterschiedliche Ports verwenden, für die Kanäle | ||
== Funktionen == | |||
'''uint8_t ir_freqInit(uint16_t freq, uint16_t pulselength)''' | |||
<br> | |||
Initialisiert die Timer, einstellbar sind Trägerfrequenz und bit-Pulslänge. | |||
<br> | |||
Parameter: | |||
* uint16_t freq | |||
* uint16_t pulselength | |||
return: | |||
* 0 : Fehler | |||
* 1 : Kein Fehler | |||
freq:<br> | |||
F_CPU/Trägerfrequenz<br> | |||
IR_FREQ30K = F_CPU/(30000)<br> | |||
<br> | |||
Vordefiniert:<br> | |||
* IR_FREQ30K | |||
* IR_FREQ33K | |||
* IR_FREQ36K | |||
* IR_FREQ38K | |||
* IR_FREQ40K | |||
* IR_FREQ56K | |||
pulselength:<br> | |||
bit-Pulslänge in Mikrosekunden, abhängig vom verwendeten Code, siehe [https://www.das-labor.org/trac/browser/microcontroller/src-atmel/scannergame/lab-irkit2.h lab-irkit2.h]!<br> | |||
Vordefiniert u.A.:<br> | |||
* IR_PhilipsRC5_pulselength | |||
* IR_SIRC_pulselength | |||
* ... | |||
== Beispielquelltext == | |||
Code example: | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include "lab-irkit2.h" | |||
int main(void) | |||
{ | |||
//initialize ir subsystem | |||
ir_init(IR_NEC_Carrier, IR_NEC_pulselength); //initialize the IR subsystem | |||
uint8_t codelength=0; //store the generated code length | |||
ir_genHeader(0, IR_NEC_header, IR_NEC_headerlength); //generate header | |||
codelength=ir_genCode(IR_NEC_headerlength,0,IR_NEC_oneCode,IR_NEC_oneCodelength,IR_NEC_zeroCode,IR_NEC_zeroCodelength,0b00010000110010001110000100011110, 32); //generate code | |||
while (1) | |||
{ | |||
ir_sendCode(codelength); //transmit code | |||
} | |||
} |
Version vom 13. November 2010, 18:34 Uhr
Diese Seite beschäftigt sich mit CanIR Version 2
Quellcode Dateien:
lab-irkit2.c lab-irkit2.h
Was kann diese lib?
Was geht:
- beliebige Taktquelle (Quarz > 10 Mhz empfohlen)
- alle standart IR Trägerfrequenzen (30khHz, 33kHz ,36kHz ,38kHz ,40kHz ,50kHz)
- beliebige selbstdefinierbare Trägerfrequenzen
- bis zu 8 Kanäle gleichzeitig (selbe Trägerfrequenz, vielfaches der Bit-pulslänge)
- vordefinierte Standartcodes NEC, Sharp, Philips, ....
- einstellbare Pulsbreite (für LEDs, die mit Pulsstrom versorgt werden, std. 10% Pulsbreite)
- nicht benutzte Känale sind freie Pins (werden nicht angesteuert)
Was geht nicht:
- Timer0 & Timer1 benutzen (wenn ein Code gesendet wird)
- Auf verschiedenen Kanälen gleichzeitig unterschiedliche Trägerfrequenzen
- mehr als 32bit lange Codes
- unterschiedliche Ports verwenden, für die Kanäle
Funktionen
uint8_t ir_freqInit(uint16_t freq, uint16_t pulselength)
Initialisiert die Timer, einstellbar sind Trägerfrequenz und bit-Pulslänge.
Parameter:
- uint16_t freq
- uint16_t pulselength
return:
- 0 : Fehler
- 1 : Kein Fehler
freq:
F_CPU/Trägerfrequenz
IR_FREQ30K = F_CPU/(30000)
Vordefiniert:
- IR_FREQ30K
- IR_FREQ33K
- IR_FREQ36K
- IR_FREQ38K
- IR_FREQ40K
- IR_FREQ56K
pulselength:
bit-Pulslänge in Mikrosekunden, abhängig vom verwendeten Code, siehe lab-irkit2.h!
Vordefiniert u.A.:
- IR_PhilipsRC5_pulselength
- IR_SIRC_pulselength
- ...
Beispielquelltext
Code example:
#include <stdio.h> #include <stdlib.h> #include "lab-irkit2.h" int main(void) { //initialize ir subsystem ir_init(IR_NEC_Carrier, IR_NEC_pulselength); //initialize the IR subsystem uint8_t codelength=0; //store the generated code length ir_genHeader(0, IR_NEC_header, IR_NEC_headerlength); //generate header codelength=ir_genCode(IR_NEC_headerlength,0,IR_NEC_oneCode,IR_NEC_oneCodelength,IR_NEC_zeroCode,IR_NEC_zeroCodelength,0b00010000110010001110000100011110, 32); //generate code while (1) { ir_sendCode(codelength); //transmit code } }