forked from cnlohr/avr_vhf
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
675 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
|
||
all : test.hex burn test.lst | ||
PART=attiny85 | ||
PROGPART=t85 | ||
|
||
#21800000UL for Ch7, 3rd. | ||
#61.25/2 = 30.625 nom. | ||
CFLAGS=-g -Wall -Os -mmcu=$(PART) -DF_CPU=30625000UL | ||
ASFLAGS:=$(CFLAGS) | ||
CC=avr-gcc | ||
|
||
|
||
test.hex : test.elf | ||
avr-objcopy -j .text -j .data -O ihex test.elf test.hex | ||
|
||
test.elf : test.o | ||
avr-gcc -I -g -Wall -pedantic -Os -mmcu=$(PART) -Wl,-Map,test.map -o $@ $^ -L/usr/lib/binutils/avr/2.18 | ||
|
||
test.lst : test.c | ||
avr-gcc -c -g -Wa,-a,-ad $(CFLAGS) $^ > $@ | ||
|
||
burn : test.hex | ||
avrdude -c usbtiny -p $(PROGPART) -V -U flash:w:test.hex | ||
|
||
#For PLL | ||
burnfuses : | ||
avrdude -c usbtiny -p $(PROGPART) -U lfuse:w:0x41:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m | ||
|
||
burnfuses_legacy_timer_1 : | ||
avrdude -c usbtiny -p $(PROGPART) -U lfuse:w:0x53:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m | ||
|
||
burnfuses_default : | ||
avrdude -c usbtiny -p $(PROGPART) -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m | ||
|
||
readfuses : | ||
avrdude -c usbtiny -p $(PROGPART) -U hfuse:r:high.txt:b -U lfuse:r:low.txt:b | ||
|
||
clean : | ||
rm -f *~ high.txt low.txt test.hex test.map test.elf *.o sendpack.S makesendpack |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,18 @@ | ||
# avr_vhf | ||
Channel 3 VHF Broadcasting with an AVR | ||
|
||
Broadcast analog video, Channel 3 with your ATTiny85! | ||
|
||
I strongly recommend using an analog TV, as it will be much easier to debug your signal. | ||
|
||
This is set up for North America NTSC Channel 3 Only. | ||
|
||
Do not add an amplifier to this device. You will likely violate broadcast restrictions. | ||
|
||
# Setup | ||
|
||
*Plug two wires into PB3 and PB4 of your AVR, PB3 should be shorter than PB4. | ||
*Turn on an analog TV set to channel 3. If you don't see static, it's unlikely you'll be able to do this project. | ||
*Program your AVR, then change the OSCCAL value until you find the correct frequency for broadcast on your particular AVR. All AVRs have different clocks. | ||
|
||
You now have an AVR Multimeter, Pin PB2 contains the analog input. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
//From http://overcode.yak.net/12 | ||
//#include <avr/pgmspace.h> | ||
|
||
const unsigned char font_8x8_data[] PROGMEM = { | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 2 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 3 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 4 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 5 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 7 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 10 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 11 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 12 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 13 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 14 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 15 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 16 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 17 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 18 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 19 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 20 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 21 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 22 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 23 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 24 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 25 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 26 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 27 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 28 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 29 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 30 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 31 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ' ' | ||
0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, // '!' | ||
0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // '"' | ||
0x28, 0x28, 0xfe, 0x28, 0xfe, 0x28, 0x28, 0x00, // '#' | ||
0x10, 0x78, 0x14, 0x38, 0x50, 0x3c, 0x10, 0x00, // '$' | ||
0x00, 0x4c, 0x2c, 0x10, 0x68, 0x64, 0x00, 0x00, // '%' | ||
0x18, 0x14, 0x08, 0x14, 0x62, 0x22, 0x5c, 0x00, // '&' | ||
0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ''' | ||
0x20, 0x10, 0x08, 0x08, 0x08, 0x10, 0x20, 0x00, // '(' | ||
0x08, 0x10, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // ')' | ||
0x10, 0x92, 0x54, 0x38, 0x54, 0x92, 0x10, 0x00, // '*' | ||
0x10, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10, 0x00, // '+' | ||
0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x20, 0x10, // ',' | ||
0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, // '-' | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, // '.' | ||
0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, // '/' | ||
0x38, 0x44, 0x44, 0x54, 0x44, 0x44, 0x38, 0x00, // '0' | ||
0x10, 0x18, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, // '1' | ||
0x38, 0x44, 0x40, 0x20, 0x10, 0x08, 0x7c, 0x00, // '2' | ||
0x38, 0x44, 0x40, 0x30, 0x40, 0x44, 0x38, 0x00, // '3' | ||
0x30, 0x28, 0x24, 0x7c, 0x20, 0x20, 0x70, 0x00, // '4' | ||
0x7c, 0x04, 0x04, 0x3c, 0x40, 0x44, 0x38, 0x00, // '5' | ||
0x38, 0x44, 0x04, 0x3c, 0x44, 0x44, 0x38, 0x00, // '6' | ||
0x7c, 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x00, // '7' | ||
0x38, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38, 0x00, // '8' | ||
0x38, 0x44, 0x44, 0x78, 0x40, 0x44, 0x38, 0x00, // '9' | ||
0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, // ':' | ||
0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x20, 0x10, // ';' | ||
0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x00, // '<' | ||
0x00, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, // '=' | ||
0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x00, // '>' | ||
0x38, 0x44, 0x40, 0x20, 0x10, 0x00, 0x10, 0x00, // '?' | ||
0x38, 0x44, 0x74, 0x54, 0x74, 0x04, 0x38, 0x00, // '@' | ||
0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00, // 'A' | ||
0x3c, 0x44, 0x44, 0x3c, 0x44, 0x44, 0x3c, 0x00, // 'B' | ||
0x38, 0x44, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00, // 'C' | ||
0x3c, 0x44, 0x44, 0x44, 0x44, 0x44, 0x3c, 0x00, // 'D' | ||
0x7c, 0x04, 0x04, 0x3c, 0x04, 0x04, 0x7c, 0x00, // 'E' | ||
0x7c, 0x04, 0x04, 0x7c, 0x04, 0x04, 0x04, 0x00, // 'F' | ||
0x38, 0x44, 0x04, 0x74, 0x44, 0x44, 0x38, 0x00, // 'G' | ||
0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00, // 'H' | ||
0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, // 'I' | ||
0x70, 0x20, 0x20, 0x20, 0x24, 0x24, 0x18, 0x00, // 'J' | ||
0x44, 0x44, 0x24, 0x1c, 0x24, 0x44, 0x44, 0x00, // 'K' | ||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x78, 0x00, // 'L' | ||
0x82, 0xc6, 0xaa, 0x92, 0x82, 0x82, 0x82, 0x00, // 'M' | ||
0x44, 0x4c, 0x54, 0x54, 0x64, 0x44, 0x44, 0x00, // 'N' | ||
0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, // 'O' | ||
0x38, 0x48, 0x48, 0x38, 0x08, 0x08, 0x08, 0x00, // 'P' | ||
0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x60, // 'Q' | ||
0x3c, 0x44, 0x44, 0x3c, 0x14, 0x24, 0x44, 0x00, // 'R' | ||
0x38, 0x44, 0x04, 0x38, 0x40, 0x44, 0x38, 0x00, // 'S' | ||
0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, // 'T' | ||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, // 'U' | ||
0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x00, // 'V' | ||
0x82, 0x82, 0x82, 0x54, 0x54, 0x28, 0x28, 0x00, // 'W' | ||
0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0x00, // 'X' | ||
0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x00, // 'Y' | ||
0x7c, 0x40, 0x20, 0x10, 0x08, 0x04, 0x7c, 0x00, // 'Z' | ||
0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, // '[' | ||
0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, // '\' | ||
0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x00, // ']' | ||
0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, // '^' | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, // '_' | ||
0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // '`' | ||
0x00, 0x38, 0x40, 0x78, 0x44, 0x44, 0xb8, 0x00, // 'a' | ||
0x08, 0x08, 0x38, 0x48, 0x48, 0x48, 0x34, 0x00, // 'b' | ||
0x00, 0x00, 0x38, 0x04, 0x04, 0x04, 0x38, 0x00, // 'c' | ||
0x40, 0x40, 0x70, 0x48, 0x48, 0x48, 0xb0, 0x00, // 'd' | ||
0x00, 0x00, 0x38, 0x44, 0x7c, 0x04, 0x38, 0x00, // 'e' | ||
0x30, 0x48, 0x08, 0x1c, 0x08, 0x08, 0x08, 0x00, // 'f' | ||
0x00, 0x00, 0xb8, 0x44, 0x44, 0x78, 0x40, 0x38, // 'g' | ||
0x04, 0x04, 0x34, 0x4c, 0x44, 0x44, 0x44, 0x00, // 'h' | ||
0x00, 0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, // 'i' | ||
0x00, 0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x0c, // 'j' | ||
0x04, 0x04, 0x24, 0x14, 0x0c, 0x14, 0x24, 0x00, // 'k' | ||
0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, // 'l' | ||
0x00, 0x00, 0x6d, 0x92, 0x92, 0x82, 0x82, 0x00, // 'm' | ||
0x00, 0x00, 0x34, 0x48, 0x48, 0x48, 0x48, 0x00, // 'n' | ||
0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 'o' | ||
0x00, 0x00, 0x34, 0x48, 0x48, 0x38, 0x08, 0x08, // 'p' | ||
0x00, 0x00, 0x58, 0x24, 0x24, 0x38, 0x20, 0x20, // 'q' | ||
0x00, 0x00, 0x34, 0x0c, 0x04, 0x04, 0x04, 0x00, // 'r' | ||
0x00, 0x00, 0x38, 0x04, 0x18, 0x20, 0x1c, 0x00, // 's' | ||
0x00, 0x10, 0x38, 0x10, 0x10, 0x10, 0x10, 0x00, // 't' | ||
0x00, 0x00, 0x24, 0x24, 0x24, 0x24, 0x58, 0x00, // 'u' | ||
0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00, // 'v' | ||
0x00, 0x00, 0x82, 0x82, 0x92, 0xaa, 0x44, 0x00, // 'w' | ||
0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 'x' | ||
0x00, 0x00, 0x48, 0x48, 0x48, 0x70, 0x40, 0x38, // 'y' | ||
0x00, 0x00, 0x3c, 0x20, 0x10, 0x08, 0x3c, 0x00, // 'z' | ||
0x30, 0x08, 0x08, 0x04, 0x08, 0x08, 0x30, 0x00, // '{' | ||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, // '|' | ||
0x0c, 0x10, 0x10, 0x20, 0x10, 0x10, 0x0c, 0x00, // '}' | ||
0x00, 0x00, 0x0c, 0x92, 0x60, 0x00, 0x00, 0x00, // '~' | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // '' | ||
}; |
Oops, something went wrong.