background image

2. SOFTWARE

 

The badge comes pre-programmed with three basic firmware modules: 

 

Bootloader, which normally stays resident and ready for loading any other .HEX 
firmware via USB cable only 

 

Kernel, which is also resident, and which may be used as a BIOS for user's application 

 

Demo application, which is loaded by the Bootloader, and supported by Kernel. Demo 
application is easily removable, so if Bootloader is used to write the new firmware, 
demo application will automatically be cleared from the program memory. Of course, it 
can programmed again using DEMO 2.HEX file 

You can also use your PIC programmer if you wish to start programming the MCU from scratch. 
That way you won't need the bootloader, but if you want to use the Kernel source file to 
support your application, you’ll have to rearrange it at some critical points, predominantly its 
ISR vectors. The easiest way to do it is to change its OFFSET variable, which is defined in 
RAMDEF.INC file, and to comment out the line  

 

#include <BootLoader 2b.inc>

 

which is in the KERNEL 2.INC file. 

The whole project (hardware and all source files for all modules) is open, so you are free to use 
it, copy and modify and redistribute it. 

2.1. CONFIGURATION BITS 

 

Internal RC oscillator 16 MHz (primary oscillator disabled) 

 

PLL with 3× clock multiplier (3×16=48MHz) 

 

System clock at 48 MHz (which is 12 MIPS operation) 

 

Brown Out Reset disabled 

 

Watchdog Timer disabled 

 

MCLR pin enabled 

 

Extended instruction set disabled 

 

Single-Supply ICSP disabled 

 

Background debugger disabled, B6 and B7 are I/O pins 

It is possible to change configuration bits via Table Write process, but note that it may be 
critical, as some other oscillator settings may render the USB interface and bootloader 
unusable. In that case, the only way to unlock the unit is to reprogram it with an external 
programmer. 

Summary of Contents for SUPERCONFERENCE BADGE

Page 1: ...HACKADAY SUPERCONFERENCE BADGE Pasadena 2016 Nov 5 6 Ver 1 Rev 0 ...

Page 2: ...ouple of pre programmed applications mainly to demonstrate some of the possibilities of the hardware By default there is a Tetris game a moving message display and an accelerometer demo There will be a special computer with infrared interface at the venue which anyone can use to load a custom message to their own badge We encourage everyone to keep their badge in Display mode with their own messag...

Page 3: ...In Circuit Serial Programmer and the other one is 9 pole I O connector PCB dimensions are 46 139 mm 8 16 LED matrix is built of 128 discrete SMD LEDs and refreshed by SCT2024CSSG constant current driver permanently assisted by MCU CPU clock is 48 MHz which is 12 MIPS so display refresh takes about 1 of processor time Infrared transmitter is a single 940 nm LED and the receiver is TSOP6240TTCD whic...

Page 4: ...me critical points predominantly its ISR vectors The easiest way to do it is to change its OFFSET variable which is defined in RAMDEF INC file and to comment out the line include BootLoader 2b inc which is in the KERNEL 2 INC file The whole project hardware and all source files for all modules is open so you are free to use it copy and modify and redistribute it 2 1 CONFIGURATION BITS Internal RC ...

Page 5: ...ET and ON OFF Release the left button first an the release the right button At this moment the LED in the top left corner of the badge should blink and the new drive named HackABadge should appear on your computer s screen All you have to do is to drag and drop the HEX file on the HackABdge icon After the taskbar finishes its its job and disappears you have to start your application on the badge b...

Page 6: ... the Kernel job is located Low Priority ISR is not used in this version of Kernel so it also points to the High Priority ISR but this jump should never happen Another way is to redirect those interrupt vectors to the alternative user ISR routine located inside the User Code area In that case the new ISR code should be written or it may act as the expansion of the existing High Priority Interrupt T...

Page 7: ......

Page 8: ...y kernel Pause mode clr by kernel Run mode do not modify 1 Timer 0 interrupt 1200 Hz handshaking user must reset 2 Full display scan 150 Hz handshaking user must reset 3 set EEPROM RX buffer function disabled set clr by user 4 Timer 0 interrupt in 2nd phase LED OFF period do not modify 5 set Disable pause mode 6 Flag that display message was received user must reset 7 Not used 0x07 RXFlag 0 set En...

Page 9: ...x720 0x72F Pause display buffer displayed only during pause 0x730 0x733 RND seed don t modify 0x734 0x737 RND internal arithmetic registers may be used for another purpose 0x738 0x7FF User data RAM space 3 KERNEL Kernel supports LED matrix multiplex It also contains an initialization routine which is normally executed only once after RESET and Timer 2 Interrupt routine which should always be activ...

Page 10: ...put This interrupt will be used inside TIMER 0 interrupt routine for wake up after sleep WPUB Only PortB 6 pull up enabled that s key1 key4 input driven by A0 A3 output ports LATx and TRISx bits preset as hardware requires T0CON Timer 0 defined as 8 bit timer prescaler 128 software interrupt on overflow This interrupt is used for LED display refresh support with dynamically adjusted timing for dis...

Page 11: ...ft as dummy analogue input for the whole operating time if you define it as output it will disturb normal multiplex operation and if it is digital input the voltage on this pin will be outside the allowed range There is also an rnd subroutine which is not used by kernel but can be used by user software It is a 32 bit pseudorandom generator routine which executes function SEED SEED 0x41C64E6D 0x000...

Page 12: ... should test one of those bits and reset it after it detects that it was set it is not automatically reset If user routine has to test if some key is permanently pressed it has to test bit 0 in one of ROTOR0 ROTOR4 registers It is NOT recommended to test port pins directly except for the INT key as keys 1 4 have only one common input Special test is made for Left Right Up and for Left Right Down k...

Page 13: ... if RXFlag 0 is set valid header is detected and if the serial number matches the message will be received otherwise it will be ignored When the new message is received the old one is automatically cleared Message terminator is pause which is at least 200ms long At the end of the the message terminator 0x00 will be inserted automatically to the received string in data memory Thus the maximal messa...

Page 14: ......

Reviews: