Lab-irkit2: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
K (kommt noch mehr... :))
 
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
}
}