No changes between revisions
/Designs/DOGFINDER02A/PrjInfo.txt
0,0 → 1,17
//
// Toto je popisný soubor pro popis obsahu adresáře (příklad)
//
 
[InfoShortDescription.en]
Dog finder - Beacon tracker
 
[InfoShortDescription.cs]
Psí vyhledávač - majákový vysílač
[InfoLongDescription.en]
The coordinate of GPS receiver is transmitted by the RFM01S module to receiver station.
[InfoLongDescription.cs]
Zařízení vysílá pozici GPS přijímače na psím obojku.
 
[End]
/Designs/DOGFINDER02A/PrjInfo.txt~
0,0 → 1,18
//
// Toto je popisný soubor pro popis obsahu adresáře (příklad)
//
 
[InfoShortDescription.en]
Dog finder - Track Logger
 
[InfoShortDescription.cs]
Psí vyhledávač - záznamník trasy
[InfoLongDescription.en]
The track is logged in NMEA format on SD/MMC card.
[InfoLongDescription.cs]
Umožňuje zaznamanat trasu opakovaně utíkajícího psa. A tím nalézt zdroj problémů, například díru v plotě :)
Trasa je zaznamenávána na SD/MMC kartu ve formátu NMEA.
 
[End]
/Designs/DOGFINDER02A/SW/DOGFINDER_TX.c
0,0 → 1,192
/* mija 2008
demo for RFM02 - TX 868MHz
 
CPU ATMEGA16
fcpu = 1MHz
 
!! define PIN,PORT,DDR for IOpin !!
 
tested with module RFM12B RX 9600 BW 134kHz
*/
 
#define F_CPU 1000000UL
 
#include <avr/io.h>
#include <util/delay.h>
#include "RFM02.h"
 
//************************************************************************
 
#define SDI PB3
#define SDI_PORT PORTB
#define SDI_DDR DDRB
 
#define FSK PC1
#define FSK_PORT PORTC
#define FSK_DDR DDRC
+#define SCK PB5
+ #define SCK_PORT PORTB
+ #define SCK_DDR DDRB
+
+#define nIRQ PD2 // input for mega
+ #define nIRQ_PORT PORTD
+ #define nIRQ_DDR DDRD
+ #define nIRQ_PIN PIND
+
+#define nSEL PB2
+ #define nSEL_PORT PORTB
+ #define nSEL_DDR DDRB
+
+#define LED PC3
+ #define LED_PORT PORTC
+ #define LED_DDR DDRC
+
+// interni
+#define SDI_H SDI_PORT |= _BV(SDI)
+#define SDI_L SDI_PORT &= (~(_BV(SDI)))
+#define SDI_INIT SDI_DDR |= _BV(SDI)
+
+#define FSK_H FSK_PORT |= _BV(FSK)
+#define FSK_L FSK_PORT &= (~(_BV(FSK)))
+#define FSK_INIT FSK_DDR |= _BV(FSK)
+
+#define SDO_INPUT (SDO_PIN & _BV(SDO))
+#define SDO_INIT SDO_DDR &= (~(_BV(SDO)))
+
+#define SCK_H SCK_PORT |= _BV(SCK)
+#define SCK_L SCK_PORT &= (~(_BV(SCK)))
+#define SCK_INIT SCK_DDR |= _BV(SCK)
+
+#define nIRQ_INPUT (nIRQ_PIN & _BV(nIRQ))
+#define nIRQ_INIT nIRQ_DDR &= (~(_BV(nIRQ)))
+
+#define nSEL_H nSEL_PORT |= _BV(nSEL)
+#define nSEL_L nSEL_PORT &= (~(_BV(nSEL)))
+#define nSEL_INIT nSEL_DDR |= _BV(nSEL)
+
+#define LED_H LED_PORT |= _BV(LED)
+#define LED_L LED_PORT &= (~(_BV(LED)))
+#define LED_INIT LED_DDR |= _BV(LED)
+
+#define START_TX RF_WRITE_CMD(CMD_POWER|POWER_EX|POWER_ES|POWER_EA|POWER_DC)
+#define STOP_TX RF_WRITE_CMD(CMD_POWER|POWER_DC)
+
+//************************************************************************
+
+//uint8_t test[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x03b,0x3c,0x3d,0x3e,0x3f};
+uint8_t test[17]="\n\rATmega16\n\r ---";
+//uint8_t test[16]="0123456789abcdef";
+
+
+//************************************************************************
+
+void delay_ms(uint16_t time)
+{
+ while(time--) _delay_ms(1);
+}
+
+void IO_INIT(void)
+{
+ SDI_INIT;
+ SCK_INIT;
+ nIRQ_INIT;
+ nSEL_INIT;
+ FSK_INIT;
+ LED_INIT;
+}
+
+void RF_INIT(void)
+{
+ nSEL_H;
+ SDI_H;
+ SCK_L;
+ nIRQ_INPUT;
+ FSK_H;
+}
+
+void RF_WRITE_CMD(uint16_t cmd)
+{
+ uint8_t i;
+
+ SCK_L;
+ nSEL_L;
+ for (i=0;i<16;i++)
+ {
+ SCK_L;
+ SCK_L;
+ if (cmd & 0x8000) SDI_H;
+ else SDI_L;
+ SCK_H;
+ SCK_H;
+ cmd <<= 1;
+ }
+ SCK_L;
+ nSEL_H;
+}
+
+void RF_WRITE_DATA(uint8_t data)
+{
+ uint8_t i;
+
+ for (i=0;i<8;i++)
+ {
+ while (nIRQ_INPUT);
+ while (!nIRQ_INPUT);
+ if (data & 0x80)FSK_H;
+ else FSK_L;
+ data <<= 1;
+ }
+}
+
+int main()
+{
+ uint8_t i,j,ChkSum;
+
+ IO_INIT();
+ RF_INIT();
+ LED_H;
+ delay_ms(100);
+
+ RF_WRITE_CMD(CMD_STATUS);
+ RF_WRITE_CMD(CMD_SETTING |BAND_868 |C_12pF |TX_DEV_90);
+ RF_WRITE_CMD(CMD_FREQUENCY |FREQUENCY_868);
+ RF_WRITE_CMD(0xD040);
+ RF_WRITE_CMD(CMD_RATE |RATE_4800);
+ RF_WRITE_CMD(CMD_BATTERY |TX_EBS);
+ RF_WRITE_CMD(CMD_POWER |POWER_DC);
+ RF_WRITE_CMD(POWER_OUT_0);
+
+ j= 0;
+ while (1)
+ {
+ LED_H;
+
+ START_TX;
+ ChkSum = 0;
+ for (i=0;i<3;i++) RF_WRITE_DATA(0xAA);
+ RF_WRITE_DATA(0x2D);
+ RF_WRITE_DATA(0xD4);
+
+ for (i=0;i<16;i++)
+ {
+ RF_WRITE_DATA(test[i]);
+ ChkSum += test[i];
+ }
+ RF_WRITE_DATA(ChkSum);
+ RF_WRITE_DATA(0xAA);
+ RF_WRITE_DATA(0xAA);
+ STOP_TX;
+
+ LED_L;
+ delay_ms(500);
+ j++;
+ test[13]=(j/100)+0x30;
+ test[14]=((j%100)/10)+0x30;
+ test[15]=((j%100)%10)+0x30;
+ }
+ return 0;
+}
+
+
+
/Designs/DOGFINDER02A/SW/DOGFINDER_TX.c~
0,0 → 1,192
/* mija 2008
demo for RFM02 - TX 868MHz
 
CPU ATMEGA16
fcpu = 1MHz
 
!! define PIN,PORT,DDR for IOpin !!
 
tested with module RFM12B RX 9600 BW 134kHz
*/
 
#define F_CPU 1000000UL
 
#include <avr/io.h>
#include <util/delay.h>
#include "RFM02.h"
 
//************************************************************************
 
#define SDI PB3
#define SDI_PORT PORTB
#define SDI_DDR DDRB
 
#define FSK PC1
#define FSK_PORT PORTC
#define FSK_DDR DDRC
+#define SCK PB5
+ #define SCK_PORT PORTB
+ #define SCK_DDR DDRB
+
+#define nIRQ PD2 // input for mega
+ #define nIRQ_PORT PORTD
+ #define nIRQ_DDR DDRD
+ #define nIRQ_PIN PIND
+
+#define nSEL PB2
+ #define nSEL_PORT PORTB
+ #define nSEL_DDR DDRB
+
+#define LED PC3
+ #define LED_PORT PORTC
+ #define LED_DDR DDRC
+
+// interni
+#define SDI_H SDI_PORT |= _BV(SDI)
+#define SDI_L SDI_PORT &= (~(_BV(SDI)))
+#define SDI_INIT SDI_DDR |= _BV(SDI)
+
+#define FSK_H FSK_PORT |= _BV(FSK)
+#define FSK_L FSK_PORT &= (~(_BV(FSK)))
+#define FSK_INIT FSK_DDR |= _BV(FSK)
+
+#define SDO_INPUT (SDO_PIN & _BV(SDO))
+#define SDO_INIT SDO_DDR &= (~(_BV(SDO)))
+
+#define SCK_H SCK_PORT |= _BV(SCK)
+#define SCK_L SCK_PORT &= (~(_BV(SCK)))
+#define SCK_INIT SCK_DDR |= _BV(SCK)
+
+#define nIRQ_INPUT (nIRQ_PIN & _BV(nIRQ))
+#define nIRQ_INIT nIRQ_DDR &= (~(_BV(nIRQ)))
+
+#define nSEL_H nSEL_PORT |= _BV(nSEL)
+#define nSEL_L nSEL_PORT &= (~(_BV(nSEL)))
+#define nSEL_INIT nSEL_DDR |= _BV(nSEL)
+
+#define LED_H LED_PORT |= _BV(LED)
+#define LED_L LED_PORT &= (~(_BV(LED)))
+#define LED_INIT LED_DDR |= _BV(LED)
+
+#define START_TX RF_WRITE_CMD(CMD_POWER|POWER_EX|POWER_ES|POWER_EA|POWER_DC)
+#define STOP_TX RF_WRITE_CMD(CMD_POWER|POWER_DC)
+
+//************************************************************************
+
+//uint8_t test[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x03b,0x3c,0x3d,0x3e,0x3f};
+uint8_t test[17]="\n\rATmega16\n\r ---";
+//uint8_t test[16]="0123456789abcdef";
+
+
+//************************************************************************
+
+void delay_ms(uint16_t time)
+{
+ while(time--) _delay_ms(1);
+}
+
+void IO_INIT(void)
+{
+ SDI_INIT;
+ SCK_INIT;
+ nIRQ_INIT;
+ nSEL_INIT;
+ FSK_INIT;
+ LED_INIT;
+}
+
+void RF_INIT(void)
+{
+ nSEL_H;
+ SDI_H;
+ SCK_L;
+ nIRQ_INPUT;
+ FSK_H;
+}
+
+void RF_WRITE_CMD(uint16_t cmd)
+{
+ uint8_t i;
+
+ SCK_L;
+ nSEL_L;
+ for (i=0;i<16;i++)
+ {
+ SCK_L;
+ SCK_L;
+ if (cmd & 0x8000) SDI_H;
+ else SDI_L;
+ SCK_H;
+ SCK_H;
+ cmd <<= 1;
+ }
+ SCK_L;
+ nSEL_H;
+}
+
+void RF_WRITE_DATA(uint8_t data)
+{
+ uint8_t i;
+
+ for (i=0;i<8;i++)
+ {
+ while (nIRQ_INPUT);
+ while (!nIRQ_INPUT);
+ if (data & 0x80)FSK_H;
+ else FSK_L;
+ data <<= 1;
+ }
+}
+
+int main()
+{
+ uint8_t i,j,ChkSum;
+
+ IO_INIT();
+ RF_INIT();
+ LED_H;
+ delay_ms(100);
+
+ RF_WRITE_CMD(CMD_STATUS);
+ RF_WRITE_CMD(CMD_SETTING |BAND_868 |C_12pF |TX_DEV_90);
+ RF_WRITE_CMD(CMD_FREQUENCY |FREQUENCY_868);
+ RF_WRITE_CMD(0xD040);
+ RF_WRITE_CMD(CMD_RATE |RATE_9600);
+ RF_WRITE_CMD(CMD_BATTERY |TX_EBS);
+ RF_WRITE_CMD(CMD_POWER |POWER_DC);
+ RF_WRITE_CMD(POWER_OUT_0);
+
+ j= 0;
+ while (1)
+ {
+ LED_H;
+
+ START_TX;
+ ChkSum = 0;
+ for (i=0;i<3;i++) RF_WRITE_DATA(0xAA);
+ RF_WRITE_DATA(0x2D);
+ RF_WRITE_DATA(0xD4);
+
+ for (i=0;i<16;i++)
+ {
+ RF_WRITE_DATA(test[i]);
+ ChkSum += test[i];
+ }
+ RF_WRITE_DATA(ChkSum);
+ RF_WRITE_DATA(0xAA);
+ RF_WRITE_DATA(0xAA);
+ STOP_TX;
+
+ LED_L;
+ delay_ms(500);
+ j++;
+ test[13]=(j/100)+0x30;
+ test[14]=((j%100)/10)+0x30;
+ test[15]=((j%100)%10)+0x30;
+ }
+ return 0;
+}
+
+
+
/Designs/DOGFINDER02A/SW/DOGFINDER_TX.hex
0,0 → 1,35
:1000000012C02CC02BC02AC029C028C027C026C0BF
:1000100025C024C023C022C021C020C01FC01EC0D4
:100020001DC01CC01BC011241FBECFE5D4E0DEBF25
:10003000CDBF10E0A0E6B0E0E2EFF1E002C0059035
:100040000D92A237B107D9F710E0A2E7B0E001C0E6
:100050001D92A237B107E1F73ED0C9C0D1CF2AEF38
:1000600030E004C0F9013197F1F701970097D1F71B
:100070000895BB9ABD9A8A98BA9AA19AA39A0895AC
:10008000C29AC39AC59880B3A99A0895C598C29890
:1000900020E0C598C59897FF02C0C39A01C0C398D5
:1000A000C59AC59A2F5F203119F0880F991FF1CF9B
:1000B000C598C29A089590E08299FECF829BFECFA8
:1000C00087FF02C0A99A01C0A9989F5F983011F0DC
:1000D000880FF2CF0895EF92FF920F931F93CF9363
:1000E000DF93BB9ABD9A8A98BA9AA19AA39AC29AA8
:1000F000C39AC59880B3A99AAB9A24E630E04AEF38
:1001000050E003C0CA010197F1F7215030408FEF52
:100110002F3F3807B9F780E09CECB8DF82E790E921
:10012000B5DF80E496EAB2DF80E490EDAFDF87E4EC
:1001300098ECACDF80E292ECA9DF81E090ECA6DFE6
:1001400080E090EBA3DF00E04AEFE42EF12CAB9AC5
:1001500089E390EC9BDF8AEAAEDF8AEAACDF8AEAC9
:10016000AADF8DE2A8DF84EDA6DFC0E6D0E010E0D4
:100170008881A1DF8991180F20E0C037D207C1F72D
:10018000812F99DF8AEA97DF8AEA95DF81E090EC98
:100190007DDFAB9884EF91E003C0F7013197F1F771
:1001A00001972FEF8F3F9207C1F70F5F802F64E613
:1001B00012D0805D80936D00802F0DD0292F892F64
:1001C0006AE009D0805D80936E00822F04D0905D3C
:1001D00090936F00BCCF991B79E004C0991F9617CC
:1001E00008F0961B881F7A95C9F780950895F894B2
:0201F000FFCF3F
:1001F2000A0D41546D65676131360A0D202D2D2D92
:020202000000FA
:00000001FF
/Designs/DOGFINDER02A/SW/DOGFINDER_TX.map
0,0 → 1,363
Archive member included because of file (symbol)
 
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodqi4.o)
DOGFINDER_TX.o (__udivmodqi4)
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o)
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o (exit)
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o)
DOGFINDER_TX.o (__do_copy_data)
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o)
DOGFINDER_TX.o (__do_clear_bss)
 
Memory Configuration
 
Name Origin Length Attributes
text 0x00000000 0x00002000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
fuse 0x00820000 0x00000400 rw !x
lock 0x00830000 0x00000400 rw !x
signature 0x00840000 0x00000400 rw !x
*default* 0x00000000 0xffffffff
 
Linker script and memory map
 
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
LOAD DOGFINDER_TX.o
LOAD /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a
LOAD /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a
 
.hash
*(.hash)
 
.dynsym
*(.dynsym)
 
.dynstr
*(.dynstr)
 
.gnu.version
*(.gnu.version)
 
.gnu.version_d
*(.gnu.version_d)
 
.gnu.version_r
*(.gnu.version_r)
 
.rel.init
*(.rel.init)
 
.rela.init
*(.rela.init)
 
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
 
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
 
.rel.fini
*(.rel.fini)
 
.rela.fini
*(.rela.fini)
 
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
 
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
 
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
 
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
 
.rel.ctors
*(.rel.ctors)
 
.rela.ctors
*(.rela.ctors)
 
.rel.dtors
*(.rel.dtors)
 
.rela.dtors
*(.rela.dtors)
 
.rel.got
*(.rel.got)
 
.rela.got
*(.rela.got)
 
.rel.bss
*(.rel.bss)
 
.rela.bss
*(.rela.bss)
 
.rel.plt
*(.rel.plt)
 
.rela.plt
*(.rela.plt)
 
.text 0x00000000 0x1f2
*(.vectors)
.vectors 0x00000000 0x26 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
0x00000000 __vectors
0x00000000 __vector_default
*(.vectors)
*(.progmem.gcc*)
*(.progmem*)
0x00000026 . = ALIGN (0x2)
0x00000026 __trampolines_start = .
*(.trampolines)
.trampolines 0x00000026 0x0 linker stubs
*(.trampolines*)
0x00000026 __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x00000026 __ctors_start = .
*(.ctors)
0x00000026 __ctors_end = .
0x00000026 __dtors_start = .
*(.dtors)
0x00000026 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x00000026 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
0x00000026 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x00000026 0xc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x00000032 0x16 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o)
0x00000032 __do_copy_data
.init4 0x00000048 0x10 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o)
0x00000048 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x00000058 0x4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
*(.init9)
*(.text)
.text 0x0000005c 0x2 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
0x0000005c __vector_1
0x0000005c __vector_12
0x0000005c __bad_interrupt
0x0000005c __vector_6
0x0000005c __vector_3
0x0000005c __vector_11
0x0000005c __vector_13
0x0000005c __vector_17
0x0000005c __vector_7
0x0000005c __vector_5
0x0000005c __vector_4
0x0000005c __vector_9
0x0000005c __vector_2
0x0000005c __vector_15
0x0000005c __vector_8
0x0000005c __vector_14
0x0000005c __vector_10
0x0000005c __vector_16
0x0000005c __vector_18
.text 0x0000005e 0x178 DOGFINDER_TX.o
0x0000008c RF_WRITE_CMD
0x000000d6 main
0x0000005e delay_ms
0x00000080 RF_INIT
0x00000072 IO_INIT
0x000000b6 RF_WRITE_DATA
.text 0x000001d6 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodqi4.o)
.text 0x000001d6 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o)
.text 0x000001d6 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o)
.text 0x000001d6 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o)
0x000001d6 . = ALIGN (0x2)
*(.text.*)
.text.libgcc 0x000001d6 0x18 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodqi4.o)
0x000001d6 __udivmodqi4
.text.libgcc 0x000001ee 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o)
.text.libgcc 0x000001ee 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o)
.text.libgcc 0x000001ee 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o)
0x000001ee . = ALIGN (0x2)
*(.fini9)
.fini9 0x000001ee 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o)
0x000001ee exit
0x000001ee _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000001ee 0x4 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o)
*(.fini0)
0x000001f2 _etext = .
 
.data 0x00800060 0x12 load address 0x000001f2
0x00800060 PROVIDE (__data_start, .)
*(.data)
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
.data 0x00800060 0x11 DOGFINDER_TX.o
0x00800060 test
.data 0x00800071 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodqi4.o)
.data 0x00800071 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o)
.data 0x00800071 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o)
.data 0x00800071 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o)
*(.data*)
*(.rodata)
*(.rodata*)
*(.gnu.linkonce.d*)
0x00800072 . = ALIGN (0x2)
*fill* 0x00800071 0x1 00
0x00800072 _edata = .
0x00800072 PROVIDE (__data_end, .)
 
.bss 0x00800072 0x0 load address 0x00000204
0x00800072 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x00800072 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
.bss 0x00800072 0x0 DOGFINDER_TX.o
.bss 0x00800072 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodqi4.o)
.bss 0x00800072 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o)
.bss 0x00800072 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o)
.bss 0x00800072 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o)
*(.bss*)
*(COMMON)
0x00800072 PROVIDE (__bss_end, .)
0x000001f2 __data_load_start = LOADADDR (.data)
0x00000204 __data_load_end = (__data_load_start + SIZEOF (.data))
 
.noinit 0x00800072 0x0
0x00800072 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00800072 PROVIDE (__noinit_end, .)
0x00800072 _end = .
0x00800072 PROVIDE (__heap_start, .)
 
.eeprom 0x00810000 0x0
*(.eeprom*)
0x00810000 __eeprom_end = .
 
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
 
.lock
*(.lock*)
 
.signature
*(.signature*)
 
.stab 0x00000000 0x1008
*(.stab)
.stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
.stab 0x000006b4 0x954 DOGFINDER_TX.o
0x960 (size before relaxing)
 
.stabstr 0x00000000 0x88f
*(.stabstr)
.stabstr 0x00000000 0x88f /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
 
.stab.excl
*(.stab.excl)
 
.stab.exclstr
*(.stab.exclstr)
 
.stab.index
*(.stab.index)
 
.stab.indexstr
*(.stab.indexstr)
 
.comment
*(.comment)
 
.debug
*(.debug)
 
.line
*(.line)
 
.debug_srcinfo
*(.debug_srcinfo)
 
.debug_sfnames
*(.debug_sfnames)
 
.debug_aranges
*(.debug_aranges)
 
.debug_pubnames
*(.debug_pubnames)
 
.debug_info
*(.debug_info)
*(.gnu.linkonce.wi.*)
 
.debug_abbrev
*(.debug_abbrev)
 
.debug_line
*(.debug_line)
 
.debug_frame
*(.debug_frame)
 
.debug_str
*(.debug_str)
 
.debug_loc
*(.debug_loc)
 
.debug_macinfo
*(.debug_macinfo)
OUTPUT(DOGFINDER_TX.out elf32-avr)
LOAD linker stubs
/Designs/DOGFINDER02A/SW/DOGFINDER_TX.o
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Designs/DOGFINDER02A/SW/DOGFINDER_TX.out
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Designs/DOGFINDER02A/SW/Makefile
0,0 → 1,25
# makefile, written by kaklik
MCU=atmega8
CC=avr-gcc
OBJCOPY=avr-objcopy
# optimize for size:
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues
#-------------------
all: DOGFINDER_TX.hex
#-------------------
help:
@echo "Usage: make all|load|load_pre|rdfuses|wrfuse1mhz|wrfuse4mhz|wrfusecrystal"
@echo "Warning: you will not be able to undo wrfusecrystal unless you connect an"
@echo " external crystal! uC is dead after wrfusecrystal if you do not"
@echo " have an external crystal."
#-------------------
DOGFINDER_TX.hex : DOGFINDER_TX.out
$(OBJCOPY) -R .eeprom -O ihex DOGFINDER_TX.out DOGFINDER_TX.hex
DOGFINDER_TX.out : DOGFINDER_TX.o
$(CC) $(CFLAGS) -o DOGFINDER_TX.out -Wl,-Map,DOGFINDER_TX.map DOGFINDER_TX.o
DOGFINDER_TX.o : DOGFINDER_TX.c
$(CC) $(CFLAGS) -Os -c DOGFINDER_TX.c
#-------------------
clean:
rm -f *.o *.map *.out *.hex
#-------------------
/Designs/DOGFINDER02A/SW/Makefile~
0,0 → 1,25
# makefile, written by kaklik
MCU=atmega8
CC=avr-gcc
OBJCOPY=avr-objcopy
# optimize for size:
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues
#-------------------
all: DOGFINDER_TX.hex
#-------------------
help:
@echo "Usage: make all|load|load_pre|rdfuses|wrfuse1mhz|wrfuse4mhz|wrfusecrystal"
@echo "Warning: you will not be able to undo wrfusecrystal unless you connect an"
@echo " external crystal! uC is dead after wrfusecrystal if you do not"
@echo " have an external crystal."
#-------------------
DOGFINDER_TX.hex : DOGFINDER_TX.out
$(OBJCOPY) -R .eeprom -O ihex DOGFINDER_TX.out DOGFINDER_TX.hex
DOGFINDER_TX.out : DOGFINDER_TX.o
$(CC) $(CFLAGS) -o DOGFINDER_TX.out -Wl,-Map,DOGFINDER_TX.map DOGFINDER_TX.o
DOGFINDER_TX.o : DOGFINDER_TX.c
$(CC) $(CFLAGS) -Os -c DOGFINDER_TX.c
#-------------------
clean:
rm -f *.o *.map *.out *t.hex
#-------------------
/Designs/DOGFINDER02A/SW/RFM02.h
0,0 → 1,82
/* mija 2008
defines for module RFM02 - TX 868MHz
*/
 
#define CMD_SETTING 0x8000 // b1, b0, d2..d0, x3..x0, ms, m2..m0
#define CMD_POWER 0xC000 // a1, a0, ex, es, ea, eb, et, dc
#define CMD_POWER_OUT 0xB000 // p2..p0 -3*Pmax dBm
#define CMD_FREQUENCY 0xA000 // f11..f0 860+F*0.005 MHz 36..3903
#define CMD_RATE 0xC800 // r7..r0 BR=10M/29/(R+1)
#define CMD_WAKE_UP 0xE000 // r4..r0, m7..m0 T=M*2^R [ms]
#define CMD_SLEEP 0xC400 // s7..s0 S stop CLK
#define CMD_BATTERY 0xC200 // dwc, ebs , t4..t0
#define CMD_STATUS 0xCC00 // for read status
 
// CMD_SETTING
#define BAND_315 0x0000
#define BAND_433 0x800
#define BAND_868 0x1000
#define BADN_915 0x1800
 
#define C_8_5pF 0x00
#define C_9pF 0x10
#define C_9_5pF 0x20
#define C_10pF 0x30
#define C_10_5pF 0x40
#define C_11pF 0x50
#define C_11_5pF 0x60
#define C_12pF 0x70
#define C_12_5pF 0x80
#define C_13pF 0x90
#define C_13_5pF 0xA0
#define C_14pF 0xB0
#define C_14_5pF 0xC0
#define C_15pF 0xD0
#define C_15_5pF 0xE0
#define C_16pF 0xF0
#define SETTING_MS 0x08 // modulation polarity
#define TX_DEV_30 0x00 // select frequency deviation
#define TX_DEV_60 0x01
#define TX_DEV_90 0x02
#define TX_DEV_120 0x03
#define TX_DEV_150 0x04
#define TX_DEV_180 0x05
#define TX_DEV_210 0x06
 
// CMD_POWER
#define POWER_A1 0x80 // enable crystal and syntheesizer by sleep
#define POWER_A0 0x40 // enable PA by sleep
#define POWER_EX 0x20 // enable transmitter
#define POWER_ES 0x10 // enable synthesizer
#define POWER_EA 0x08 // enable PA (power amplifier)
#define POWER_EB 0x04 // enable low battery detector
#define POWER_ET 0x02 // enable wake up timer
#define POWER_DC 0x01 // disable clock output of CLK pin
 
// CMD_POWER_OUT
#define POWER_OUT_0 0xB000 // -0dBm
#define POWER_OUT_3 0xB100 // -3dBm
#define POWER_OUT_6 0xB200 // -6dBm
#define POWER_OUT_9 0xB300 // -9dBm
#define POWER_OUT_12 0xB400 // -12dBm
#define POWER_OUT_15 0xB500 // -15dBm
#define POWER_OUT_18 0xB600 // -18dBm
#define POWER_OUT_21 0xB700 // -21dBm
 
// CMD_FREQUENCY
#define FREQUENCY_867 0x578
#define FREQUENCY_868 0x640
#define FREQUENCY_869 0x708
 
// CMD_RATE
#define RATE_2400 0x8F
#define RATE_4800 0x47
#define RATE_9600 0x23
#define RATE_19200 0x11
#define RATE_38400 0x8
#define RATE_57600 0x5
#define RATE_115200 0x2
// CMD_BATTERY
#define WAKE_UP_DWC 0x80 // disable wake-up timer periodical calibration
#define TX_EBS 0x20 // enable TX bit synchronization function
/Designs/DOGFINDER02A/SW/TX_RFM02.c~
0,0 → 1,199
/* mija 2008
demo for RFM02 - TX 868MHz
 
CPU ATMEGA16
fcpu = 1MHz
 
!! define PIN,PORT,DDR for IOpin !!
 
tested with module RFM12B RX 9600 BW 134kHz
*/
 
#include <avr/io.h>
#include <util/delay.h>
#include "RFM02.h"
 
#define F_CPU 1000000UL
 
//************************************************************************
 
#define SDI PB3
#define SDI_PORT PORTB
#define SDI_DDR DDRB
 
#define FSK PC1
#define FSK_PORT PORTC
#define FSK_DDR DDRC
 
#define SDO PB4 // input for mega
#define SDO_PORT PORTB
#define SDO_DDR DDRB
#define SDO_PIN PINB
 
#define SCK PB5
#define SCK_PORT PORTB
#define SCK_DDR DDRB
 
#define nIRQ PD2 // input for mega
#define nIRQ_PORT PORTD
#define nIRQ_DDR DDRD
#define nIRQ_PIN PIND
 
#define nSEL PB2
#define nSEL_PORT PORTB
#define nSEL_DDR DDRB
 
#define LED PC3
#define LED_PORT PORTC
#define LED_DDR DDRC
 
// interni
#define SDI_H SDI_PORT |= _BV(SDI)
#define SDI_L SDI_PORT &= (~(_BV(SDI)))
#define SDI_INIT SDI_DDR |= _BV(SDI)
 
#define FSK_H FSK_PORT |= _BV(FSK)
#define FSK_L FSK_PORT &= (~(_BV(FSK)))
#define FSK_INIT FSK_DDR |= _BV(FSK)
 
#define SDO_INPUT (SDO_PIN & _BV(SDO))
#define SDO_INIT SDO_DDR &= (~(_BV(SDO)))
 
#define SCK_H SCK_PORT |= _BV(SCK)
#define SCK_L SCK_PORT &= (~(_BV(SCK)))
#define SCK_INIT SCK_DDR |= _BV(SCK)
 
#define nIRQ_INPUT (nIRQ_PIN & _BV(nIRQ))
#define nIRQ_INIT nIRQ_DDR &= (~(_BV(nIRQ)))
 
#define nSEL_H nSEL_PORT |= _BV(nSEL)
#define nSEL_L nSEL_PORT &= (~(_BV(nSEL)))
#define nSEL_INIT nSEL_DDR |= _BV(nSEL)
 
#define LED_H LED_PORT |= _BV(LED)
#define LED_L LED_PORT &= (~(_BV(LED)))
#define LED_INIT LED_DDR |= _BV(LED)
 
#define START_TX RF_WRITE_CMD(CMD_POWER|POWER_EX|POWER_ES|POWER_EA|POWER_DC)
#define STOP_TX RF_WRITE_CMD(CMD_POWER|POWER_DC)
 
//************************************************************************
 
//uint8_t test[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x03b,0x3c,0x3d,0x3e,0x3f};
uint8_t test[17]="\n\rATmega16\n\r ---";
//uint8_t test[16]="0123456789abcdef";
 
 
//************************************************************************
 
void delay_ms(uint16_t time)
{
while(time--) _delay_ms(1);
}
 
void IO_INIT(void)
{
SDI_INIT;
SDO_INIT;
SCK_INIT;
nIRQ_INIT;
nSEL_INIT;
FSK_INIT;
LED_INIT;
}
 
void RF_INIT(void)
{
nSEL_H;
SDI_H;
SCK_L;
nIRQ_INPUT;
SDO_INPUT;
FSK_H;
}
 
void RF_WRITE_CMD(uint16_t cmd)
{
uint8_t i;
 
SCK_L;
nSEL_L;
for (i=0;i<16;i++)
{
SCK_L;
SCK_L;
if (cmd & 0x8000) SDI_H;
else SDI_L;
SCK_H;
SCK_H;
cmd <<= 1;
}
SCK_L;
nSEL_H;
}
 
void RF_WRITE_DATA(uint8_t data)
{
uint8_t i;
for (i=0;i<8;i++)
{
while (nIRQ_INPUT);
while (!nIRQ_INPUT);
if (data & 0x80)FSK_H;
else FSK_L;
data <<= 1;
}
}
 
int main()
{
uint8_t i,j,ChkSum;
 
IO_INIT();
RF_INIT();
LED_H;
delay_ms(100);
 
RF_WRITE_CMD(CMD_STATUS);
RF_WRITE_CMD(CMD_SETTING |BAND_868 |C_12pF |TX_DEV_90);
RF_WRITE_CMD(CMD_FREQUENCY |FREQUENCY_868);
RF_WRITE_CMD(0xD040);
RF_WRITE_CMD(CMD_RATE |RATE_19200);
RF_WRITE_CMD(CMD_BATTERY |TX_EBS);
RF_WRITE_CMD(CMD_POWER |POWER_DC);
RF_WRITE_CMD(POWER_OUT_0);
 
j= 0;
while (1)
{
LED_H;
 
START_TX;
ChkSum = 0;
for (i=0;i<3;i++) RF_WRITE_DATA(0xAA);
RF_WRITE_DATA(0x2D);
RF_WRITE_DATA(0xD4);
for (i=0;i<16;i++)
{
RF_WRITE_DATA(test[i]);
ChkSum += test[i];
}
RF_WRITE_DATA(ChkSum);
RF_WRITE_DATA(0xAA);
RF_WRITE_DATA(0xAA);
STOP_TX;
 
LED_L;
delay_ms(500);
j++;
test[13]=(j/100)+0x30;
test[14]=((j%100)/10)+0x30;
test[15]=((j%100)%10)+0x30;
}
return 0;
}