-
-
Erfahrener Benutzer
Roboter-Spezialist
Der Code geht zum Robosapien.
Ich möchte ein Ir-Signal senden, 8-Bit zum Roboter mit einem AVR16, 8mhz. Der Code soll an Bascom angelehnt sein.
Der gleiche Ir-Code wird von der Fernbedienung des Robby erzeugt.
Eigentlich ist der Code einfach gestrickt, aber ich kiege es nicht auf die Reihe den Code in die 39,2khz zu bringen.
Der Code soll kein Interrupt blockieren, er kann als normaler Ablauf geproggt sein, es kommt beim Ablauf des Ir-Codes nicht auf die Zeit an.
Ein Auszug :
The IR Carrier is 39.2kHz. Data is modulated using a space coded signal with 8 data bits (data clock is 1200Hz, but actual data rate varies depending on the data).
You can skip the IR and IR modulation by wiring directly into the main PCBoard. This can be encoded easily by almost any small microprocessor. For modulating the signals yourself, the signal looks something like this:
Timing based on 1/1200 second clock (~.833ms)
Signal is normally high (idle, no IR).
Start: signal goes low for 8/1200 sec.
Data bits: for each of 8 data bits, space encoded signal depending on bit value
Sends the most significant data bit first
If the data bit is 0: signal goes high for 1/1200 sec, and low for 1/1200 sec.
If the data bit is 1: signal goes high for 4/1200 sec, and low for 1/1200 sec.
BTW: The first bit (msb) is always 1 (valid codes are from $80 to $FF)
When completed, signal goes high again.
No explicit stop bit. Minimal between signals is not known.
Dieses Beispiel ist von WinAvr-C, es wird in der Frequenz vom RC5-Signal das high erzeugt:
void high(void)
{
uint8_t i,zaehler;
//890us Impuls mit 36kHz senden
//Bei 28us Periodendauer ergibt das 32 Impulse
for(i=0; i<32; i++)
{
IR_LED_ON;
for (zaehler=0; zaehler<18; zaehler++)
asm volatile("nop");
IR_LED_OFF;
for (zaehler=0; zaehler<18; zaehler++)
asm volatile("nop");
}
}
Castle
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen