/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
* irmp-main-pic-12F1840.c - example main module for PIC 12f1840\r
- * \r
+ *\r
* IR decoder using IRMP\r
*\r
* (c) 2014 Wolfgang Strobl (news4 at mystrobl.de) 2014-03-12:2014-07-20\r
*\r
- * $Id: irmp-main-pic-12F1840.c,v 1.4 2016/09/09 08:01:11 fm Exp $\r
+ * $Id: irmp-main-pic-12F1840.c,v 1.6 2017/02/17 09:13:06 fm Exp $\r
*\r
* This demo module is runnable on a Microchip PIC 12F1840\r
*\r
* (at your option) any later version.\r
*---------------------------------------------------------------------------------------------------------------------------------------------------\r
*/\r
- \r
- \r
-/* \r
\r
-Hauptprogramm fuer den nachfolgenden Testaufbau, bestehend aus zwei mal \r
+\r
+/*\r
+\r
+Hauptprogramm fuer den nachfolgenden Testaufbau, bestehend aus zwei mal\r
\r
\r
TSOP1736+ PIC12F1840\r
RS232 out -|___|-------GP4--o| |o--GP1 / ICSPCLK ___ LED\r
RS232 in -|___|---Vpp/GP3--o|__|o--GP2-----------|___|- ->|---Vss\r
10k\r
- \r
+\r
auf einem Steckbrett. (Genauer gesagt, dies ist die aktuelle Beschaltung\r
fuer V1.8, V1.0 ist aber bzgl. IRMP-Empfang funktional identisch. Nicht eingezeichnet\r
ist ein Abblockkondensator von 100nF ueber Vss und Vdd.\r
\r
-Uebersetzt mit Microchip MPLAB XC8 C Compiler (Free Mode) V1.31 \r
+Uebersetzt mit Microchip MPLAB XC8 C Compiler (Free Mode) V1.31\r
im stark gecrippelten "Free Mode".\r
\r
Memory Summary: (V 1.8)\r
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)\r
\r
\r
-Testaufbau: \r
+Testaufbau:\r
\r
Zwei Steckbretter,\r
-urspruengliche Version des Programms als Empfaenger, \r
+urspruengliche Version des Programms als Empfaenger,\r
aktuelle Version als Sender, Aufzeichnung mit putty,\r
angeschlossen jeweils per USB2RS232-Kabel von Conrad\r
-(972543, basierend auf Prolific PL2303). Soft-UART \r
+(972543, basierend auf Prolific PL2303). Soft-UART\r
fuer Input, da 12F1820 keine Kontrolle ueber Input-\r
Polaritaet erlaubt und ich fuer Testaufbauten eine\r
Minimalbeschaltung bevorzuge.\r
(~30 cm) zwischen Sender und Empfaenger), keine genaue Ausrichtung.\r
Stromversorgung wahlwweise mit 5V via PICkit 2 oder 3x1.2V NiMH-AA.\r
\r
-Zunaechst \r
-CD TAPE TUNER AUX OFF mit Philips FB, \r
+Zunaechst\r
+CD TAPE TUNER AUX OFF mit Philips FB,\r
OFF mit VAOVA TV-2900HDD FB\r
dann Eingabe . und n beim Sender.\r
\r
IRCF1=1;\r
IRCF2=1;\r
IRCF3=1;\r
- SPLLEN=1; // p 46 and 54 \r
+ SPLLEN=1; // p 46 and 54\r
}\r
\r
/******************************************************************************/\r
// UART\r
/******************************************************************************/\r
\r
-#define GPIO3 RA3 \r
-#define GPIO4 RA4 \r
+#define GPIO3 RA3\r
+#define GPIO4 RA4\r
\r
#define SOFTUART_RXPIN GPIO3\r
#define SOFTUART_STDIO 1\r
#define kbhit softuartkbhit\r
\r
\r
-void \r
+void\r
RS232init(void)\r
{\r
// Transmit\r
TXCKSEL = 1; // put TX on pin 4 - not 0 -, p 102\r
- SPBRGL = (_XTAL_FREQ/BAUD/64-1); \r
+ SPBRGL = (_XTAL_FREQ/BAUD/64-1);\r
SPBRGH = 0;\r
BRGH = 0;\r
BRG16 = 0;\r
}\r
\r
// EUSART transmit\r
- void \r
+ void\r
putch(char c)\r
{\r
while (!TRMT) _delay(1);\r
TXREG=c;\r
}\r
- \r
+\r
/******************************************************************************/\r
// Timer and ISR\r
/******************************************************************************/\r
- \r
-void \r
+\r
+void\r
timer1_init(void)\r
{\r
// p 154\r
TMR1=0xFC00; // p. 155 wait 1024 cycles for stabilization.\r
TMR1CS1=0; // Clock source == System Clock\r
- TMR1CS0=1; \r
+ TMR1CS0=1;\r
TMR1IE=1; // enable TMR1 interrupts\r
PEIE=1; // enable Pheripheral Interrupts\r
TMR1IF=0;\r
\r
void interrupt isr(void)\r
{\r
- TMR1=0xffff-_XTAL_FREQ/F_INTERRUPTS; \r
+ TMR1=0xffff-_XTAL_FREQ/F_INTERRUPTS;\r
TMR1IF=0; // clear timer 1 interrupt\r
- \r
+\r
if (!irsnd_ISR())\r
{\r
irmp_ISR();\r
\r
void RC5(uint16_t addr,uint16_t cmd, uint8_t repetitions)\r
{\r
- irmp_data.protocol = IRMP_RC5_PROTOCOL; \r
+ irmp_data.protocol = IRMP_RC5_PROTOCOL;\r
irmp_data.address = addr;\r
irmp_data.command = cmd;\r
irmp_data.flags = repetitions;\r
- irsnd_send_data (&irmp_data, FALSE); \r
+ irsnd_send_data (&irmp_data, FALSE);\r
}\r
\r
void NEC(int addr,int cmd)\r
{\r
- irmp_data.protocol = IRMP_NEC_PROTOCOL; \r
+ irmp_data.protocol = IRMP_NEC_PROTOCOL;\r
irmp_data.address = addr;\r
irmp_data.command = cmd;\r
irmp_data.flags = 0;\r
- irsnd_send_data (&irmp_data, FALSE); \r
+ irsnd_send_data (&irmp_data, FALSE);\r
}\r
\r
\r
{\r
IRMP_DATA irmp_data;\r
char c;\r
- InitApp(); \r
+ InitApp();\r
\r
PWMoff();\r
RS232init();\r
- \r
+\r
__delay_ms(200);\r
printf("IRMP PIC 12F1840 1.8 ws\r\n");\r
irmp_init(); // initialize irmp\r
timer1_init(); // initialize timer1\r
ei(); // enable interrupts\r
TMR1ON=1; // start timer\r
- \r
+\r
for (;;)\r
{\r
if (kbhit())\r
else if (c=='n')\r
{\r
printf("NEC ");\r
- NEC(0x55,0xaa); \r
+ NEC(0x55,0xaa);\r
}\r
else\r
{\r
if (irmp_get_data (&irmp_data))\r
{\r
printf("P ");\r
- printf("%d a=0x%04x c=0x%04x f=0x%02x (",irmp_data.protocol, irmp_data.address,irmp_data.command,irmp_data.flags); \r
- \r
+ printf("%d a=0x%04x c=0x%04x f=0x%02x (",irmp_data.protocol, irmp_data.address,irmp_data.command,irmp_data.flags);\r
+\r
#if IRMP_PROTOCOL_NAMES\r
printf(irmp_protocol_names[irmp_data.protocol]);\r
-#else \r
+#else\r
switch(irmp_data.protocol)\r
{\r
case 1:\r