No changes between revisions
//Designs/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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/Data_loggers/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; |
} |