From 05c8b0af602b222d00c227560682158333b726a2 Mon Sep 17 00:00:00 2001 From: sicarius Date: Sun, 11 Feb 2007 19:03:00 +0000 Subject: Added lot's of code-files used during work --- source/AVR_Studio/Soccer/Soccer.aps | 1 + source/AVR_Studio/Soccer/Soccer.c | 78 +++ source/AVR_Studio/Soccer/default/Makefile | 97 ++++ source/AVR_Studio/Soccer/default/Soccer.elf | Bin 0 -> 47659 bytes source/AVR_Studio/Soccer/default/Soccer.hex | 476 +++++++++++++++++ source/AVR_Studio/Soccer/default/dep/Soccer.o.d | 66 +++ .../AVR_Studio/Soccer/default/dep/ballsensor.o.d | 38 ++ source/AVR_Studio/Soccer/default/dep/board.o.d | 35 ++ source/AVR_Studio/Soccer/default/dep/global.o.d | 36 ++ source/AVR_Studio/Soccer/default/dep/i2c.o.d | 45 ++ source/AVR_Studio/Soccer/default/dep/keylcd.o.d | 50 ++ .../AVR_Studio/Soccer/default/dep/navigation.o.d | 52 ++ source/AVR_Studio/Soccer/default/dep/sensor.o.d | 45 ++ source/AVR_Studio/Soccer/default/dep/uart.o.d | 32 ++ source/AVR_Studio/Soccer/global.c | 10 + source/AVR_Studio/Soccer/global.h | 35 ++ source/AVR_Studio/Soccer/hal/board.c | 210 ++++++++ source/AVR_Studio/Soccer/hal/board.h | 38 ++ source/AVR_Studio/Soccer/hal/i2c.c | 217 ++++++++ source/AVR_Studio/Soccer/hal/i2c.h | 69 +++ source/AVR_Studio/Soccer/hal/keylcd.c | 28 + source/AVR_Studio/Soccer/hal/keylcd.h | 25 + source/AVR_Studio/Soccer/hal/uart.c | 585 +++++++++++++++++++++ source/AVR_Studio/Soccer/hal/uart.h | 179 +++++++ source/AVR_Studio/Soccer/navigation.c | 54 ++ source/AVR_Studio/Soccer/navigation.h | 31 ++ source/AVR_Studio/Soccer/sensor/ballsensor.c | 11 + source/AVR_Studio/Soccer/sensor/ballsensor.h | 18 + source/AVR_Studio/Soccer/sensor/sensor.c | 15 + source/AVR_Studio/Soccer/sensor/sensor.h | 23 + 30 files changed, 2599 insertions(+) create mode 100755 source/AVR_Studio/Soccer/Soccer.aps create mode 100755 source/AVR_Studio/Soccer/Soccer.c create mode 100755 source/AVR_Studio/Soccer/default/Makefile create mode 100755 source/AVR_Studio/Soccer/default/Soccer.elf create mode 100755 source/AVR_Studio/Soccer/default/Soccer.hex create mode 100755 source/AVR_Studio/Soccer/default/dep/Soccer.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/ballsensor.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/board.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/global.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/i2c.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/keylcd.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/navigation.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/sensor.o.d create mode 100755 source/AVR_Studio/Soccer/default/dep/uart.o.d create mode 100755 source/AVR_Studio/Soccer/global.c create mode 100755 source/AVR_Studio/Soccer/global.h create mode 100755 source/AVR_Studio/Soccer/hal/board.c create mode 100755 source/AVR_Studio/Soccer/hal/board.h create mode 100755 source/AVR_Studio/Soccer/hal/i2c.c create mode 100755 source/AVR_Studio/Soccer/hal/i2c.h create mode 100755 source/AVR_Studio/Soccer/hal/keylcd.c create mode 100755 source/AVR_Studio/Soccer/hal/keylcd.h create mode 100755 source/AVR_Studio/Soccer/hal/uart.c create mode 100755 source/AVR_Studio/Soccer/hal/uart.h create mode 100755 source/AVR_Studio/Soccer/navigation.c create mode 100755 source/AVR_Studio/Soccer/navigation.h create mode 100755 source/AVR_Studio/Soccer/sensor/ballsensor.c create mode 100755 source/AVR_Studio/Soccer/sensor/ballsensor.h create mode 100755 source/AVR_Studio/Soccer/sensor/sensor.c create mode 100755 source/AVR_Studio/Soccer/sensor/sensor.h (limited to 'source/AVR_Studio') diff --git a/source/AVR_Studio/Soccer/Soccer.aps b/source/AVR_Studio/Soccer/Soccer.aps new file mode 100755 index 0000000..f694dd6 --- /dev/null +++ b/source/AVR_Studio/Soccer/Soccer.aps @@ -0,0 +1 @@ +Soccer07-Feb-2007 15:43:1211-Feb-2007 16:35:10241007-Feb-2007 15:43:1244, 12, 0, 462AVR GCCdefault\Soccer.elfY:\Soccer\AVR SimulatorATmega128falseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000Soccer.chal\board.chal\keylcd.chal\i2c.cglobal.chal\uart.cnavigation.csensor\sensor.csensor\ballsensor.chal\board.hhal\keylcd.hhal\i2c.hglobal.hhal\uart.hnavigation.hsensor\sensor.hsensor\ballsensor.hdefaultNOatmega128100Soccer.elfdefault\1-Wall -gdwarf-2 -DF_CPU=16000000ULUL -O3 -fsigned-chardefault0C:\WinAVR\bin\avr-g++.exeC:\WinAVR\utils\bin\make.exeY:\Soccer\hal\board.hY:\Soccer\hal\keylcd.hY:\Soccer\hal\i2c.hY:\Soccer\global.hY:\Soccer\hal\uart.hY:\Soccer\navigation.hY:\Soccer\sensor\sensor.hY:\Soccer\sensor\ballsensor.hY:\Soccer\Soccer.cY:\Soccer\hal\board.cY:\Soccer\hal\keylcd.cY:\Soccer\hal\i2c.cY:\Soccer\global.cY:\Soccer\hal\uart.cY:\Soccer\navigation.cY:\Soccer\sensor\sensor.cY:\Soccer\sensor\ballsensor.c00000Soccer.c100001hal\board.c100002hal\keylcd.h100003hal\keylcd.c100004hal\i2c.h100005hal\i2c.c100006global.h100007global.c100008c:\WinAVR\avr\include\avr\iom128.h100009hal\board.h100010hal\uart.c100011navigation.h100012hal\uart.h100013navigation.c100014sensor\sensor.h100015sensor\sensor.c100016sensor\ballsensor.h100017sensor\ballsensor.c100018c:\WinAVR\avr\include\stdlib.h100019c:\WinAVR\avr\include\avr\signal.h1187 109 819 37929 17299 72 1025 527190 32Maximized254 204 1000 44617 14166 88 912 33026 0281 60 783 34744 0287 64 1013 51913 0162 58 974 45017 0293 68 1019 5238 0379 210 1009 515769 0316 125 946 4305 0297 98 927 403277 9319 127 949 4320 0341 156 971 4610 0363 185 993 49042 43385 214 1015 51912 0296 70 1022 5252 0319 127 949 43212 0341 156 971 4619 0363 185 993 490115 0388 216 1018 52135 0 diff --git a/source/AVR_Studio/Soccer/Soccer.c b/source/AVR_Studio/Soccer/Soccer.c new file mode 100755 index 0000000..90b9bd7 --- /dev/null +++ b/source/AVR_Studio/Soccer/Soccer.c @@ -0,0 +1,78 @@ +#include "global.h" +#include "hal/keylcd.h" +#include "navigation.h" +#include "sensor/sensor.h" + +Board board; +KeyLCD keylcd; +Navigation navigation; +Sensor sensor; + +int main() { + //board.ledOn(); + sleep(1); + int speed = 255; + /*for(int i=-255;i<=255;i+=30) { + board.motor(0,i); + board.motor(1,i); + board.motor(2,i); + board.motor(3,i); + sleep(1); + }*/ + board.motor(0, speed); + board.motor(1, speed); + board.motor(2, speed); + board.motor(3, speed); + PORTB |= (1 << PB5) | (1 << PB7); // Setze PWM-Ports auf high + PORTE |= (1 << PE3) | (1 << PE4); + /*sleep(10); + board.motor(0, 0); + board.motor(1, 0); + board.motor(2, 0); + board.motor(3, 0);*/ + //while(true) { sleep(1); } + //board.beep(450); + //board.ledOn(); + //keylcd.print("test"); + //sleep(1); + //board.ledOff(); + //sleep(1); + /*for(int i=0;i $@ + +size: ${TARGET} + @echo + @avr-size -C --mcu=${MCU} ${TARGET} + +## Clean target +.PHONY: clean +clean: + -rm -rf $(OBJECTS) Soccer.elf dep/* Soccer.hex Soccer.eep + +## Other dependencies +-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*) + diff --git a/source/AVR_Studio/Soccer/default/Soccer.elf b/source/AVR_Studio/Soccer/default/Soccer.elf new file mode 100755 index 0000000..2e03b5b Binary files /dev/null and b/source/AVR_Studio/Soccer/default/Soccer.elf differ diff --git a/source/AVR_Studio/Soccer/default/Soccer.hex b/source/AVR_Studio/Soccer/default/Soccer.hex new file mode 100755 index 0000000..c7808a4 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/Soccer.hex @@ -0,0 +1,476 @@ +:100000000C945B000C9483000C9483000C9483008C +:100010000C9483000C9483000C9483000C94830054 +:100020000C9483000C9483000C9483000C94830044 +:100030000C9483000C9483000C9483000C94830034 +:100040000C9499010C9483000C9444040C94750452 +:100050000C9483000C9483000C9483000C94830014 +:100060000C9483000C9483000C9483000C94830004 +:100070000C9483000C9483000C94E2040C941505FA +:100080000C9483000C9483000C9483000829573F40 +:100090009F2D49CBA5310F76C73493F27E37D00D13 +:1000A000013AB60B613D2AAAAB3F0000003F800039 +:1000B0000000BA00B30011241FBECFEFD0E1DEBFB5 +:1000C000CDBF11E0A0E0B1E0E0EAFDE100E00BBF50 +:1000D00002C007900D92A031B107D9F711E0A0E15D +:1000E000B1E001C01D92AA3AB107E1F710E0C4EBFC +:1000F000D0E004C02297FE010E94770DC23BD107D9 +:10010000C9F70C94C1000C9400008130910531F0C6 +:10011000892B19F46F5F7F4FA9F008956F5F7F4FB0 +:10012000E1F780E191E00E94E00181E191E00E942D +:100130009E0283E191E00E94D90689E191E00E944C +:100140000107089589E191E00E94FB0683E191E0B7 +:100150000E940B0681E191E00E944F0280E191E054 +:100160000E94090108956FEF7FEF80E090E00E9408 +:10017000850008956FEF7FEF81E090E00E94850099 +:10018000089580E090E0A0E0B0E000000196A11D9D +:10019000B11D8E3E22E7920725E1A20720E0B207BB +:1001A000A1F74FEF50E060E070E080E191E00E9445 +:1001B00031014FEF50E061E070E080E191E00E949A +:1001C00031014FEF50E062E070E080E191E00E9489 +:1001D00031014FEF50E063E070E080E191E00E9478 +:1001E000310188B3806A88BB83B1886183B980E0BC +:1001F00090E0A0E0B0E000000196A11DB11D8E3E90 +:1002000022E7920725E1A20720E0B207A1F7EFCF8E +:100210000895089586E886B967B987B1806C87B973 +:10022000369A3699FECF40E020E030E0369A369993 +:10023000FECF84B195B1280F391F4F5F4330B1F71E +:100240003798C90163E070E00E942A0DCB01089540 +:1002500070931B0160931A010895C19A0895C19883 +:1002600008956430710500F5CA0157FD36C08896BF +:100270008F3F910509F01CF561157105B1F06130F2 +:10028000710581F16230710501F16330710561F42E +:10029000909379008093780014161506D4F5C29ACD +:1002A000C3980895C29AC39A089590938700809343 +:1002B00086001416150604F5959A949808958FEF04 +:1002C00090E061157105D9F6F0CF9BBD8ABD14167B +:1002D000150624F5C09AC198089588279927841B8C +:1002E000950BC5CF90938500809384001416150656 +:1002F0005CF4969A97980895452B19F4949A959AD8 +:100300000895949A95980895452B69F0979A969830 +:100310000895452B39F2C39AC2980895452B31F0C0 +:10032000C19AC0980895969A979A0895C19AC09ACA +:1003300008951F920F920FB60F9211242F933F939F +:100340008F939F93209100013091010180911A01B8 +:1003500090911B0197FD23C0959587958217930770 +:100360007CF48091650084608093650021153105DF +:1003700079F48FEF90E0909301018093000111C018 +:10038000809165008B7F809365002115310589F38D +:1003900021503040309301012093000102C00196AA +:1003A000DBCF9F918F913F912F910F900FBE0F90B8 +:1003B0001F901895662311F0C1980895C19A089569 +:1003C0008EE78ABB1BBA9FEF97BB82E088BB94BBCA +:1003D00015BA8CEF81BB23E022BB8FED82B913B835 +:1003E00010926100909362008FE1809364002093EB +:1003F000650088E290E09093870080938600949A4D +:10040000959A9093850080938400969A979A9BBDC5 +:100410008ABDC19AC09A9093790080937800C29A5D +:10042000C39A8AE090E00E943F05789408958EE791 +:100430008ABB1BBA9FEF97BB82E088BB94BB15BAFF +:100440008CEF81BB23E022BB8FED82B913B81092F1 +:100450006100909362008FE18093640020936500B7 +:1004600088E290E09093870080938600949A959A12 +:100470009093850080938400969A979A9BBD8ABD3D +:10048000C19AC09A9093790080937800C29AC39AD7 +:100490008AE090E00E943F057894089508950895B9 +:1004A00008950E94BA0299270895CF92DF92EF92A1 +:1004B000FF920F931F93CF93DF93CDB7DEB78C01DD +:1004C000FB01EDB6FEB6DB010D900020E9F76D01F2 +:1004D0000894C108D108C61AD70AC60101962DB7DB +:1004E0003EB7281B390B0FB6F8943EBF0FBE2DBF89 +:1004F0004DB75EB74F5F5F4F1C141D0464F420E0DE +:1005000030E0BA018191DB018D93BD012F5F3F4F38 +:10051000C216D306B9F7960162E0C8010E94E7034C +:100520000FB6F894FEBE0FBEEDBEDF91CF911F91C6 +:100530000F91FF90EF90DF90CF9008950E94AF024F +:1005400008950E94AF020895FC0180E4809370003A +:1005500084E4809374001092710010820895FC016D +:1005600080E48093700084E48093740010927100A2 +:1005700010820895FC01808199270895660F609389 +:100580007200089580917400992787FD90958827BF +:10059000990F881F99270895FC0190E020E030E032 +:1005A000660F44EC80917400806A8093740080919F +:1005B000740087FFFCCF80917100887F883001F53F +:1005C00060937300409374008091740087FFFCCFA8 +:1005D00080917100887F883189F080917100887FD7 +:1005E000803221F09923F1F2108208952F5F3F4F5E +:1005F0002A303105B9F781E08083089591E0EDCF8D +:1006000082E080830895660F616024EC809174001D +:10061000806A809374008091740087FFFCCF809182 +:10062000710060937300209374008091740087FFC1 +:10063000FCCF809171009091710080917100809148 +:100640007400806880937400987F9034F9F6089560 +:100650006093730084EC809374008091740087FF32 +:10066000FCCF8091710080917100089584ED80939A +:100670007400089584EC809374008091740087FF67 +:10068000FCCF20E030E094ECFB0180917100887F8A +:10069000803889F4809173008083909374008091F6 +:1006A000740087FFFCCF2F5F3F4F31968091710020 +:1006B000887F803879F38091710084EC8093740096 +:1006C000C9010895FB018091740087FFFCCF8091E0 +:1006D00071008091710080917300808384EC80931D +:1006E000740008951F93141615060CF5DA0111977E +:1006F00020E030E014E894ECFB01808180937300EB +:10070000A217B30789F0909374008091740087FF5B +:10071000FCCF80917100809171002F5F3F4F319627 +:100720004217530751F703C010937400EECF84ECC7 +:10073000809374001F910895FC01660F616074EC52 +:1007400080917400806A809374008091740087FFA8 +:10075000FCCF80917100609373007093740080915E +:10076000740087FFFCCF809171009091710080919F +:10077000710080917400806880937400987F903439 +:10078000F9F680818823E9F412161306B4F460E0C8 +:1007900070E094ECFA018091740087FFFCCF8091A7 +:1007A0007100809171008091730081939093740027 +:1007B0006F5F7F4F2617370771F784ED80937400C2 +:1007C000089584ED8093740083E080830895DC01B4 +:1007D00090E0E0E0F0E0660F74EC80917400806AD5 +:1007E000809374008091740087FFFCCF809171002A +:1007F000887F8830E9F5609373007093740080916E +:10080000740087FFFCCF80917100887F883171F17F +:1008100080917100887F803211F19923F1F21C924E +:1008200012161306BCF460E070E094ECFA018081CB +:1008300080937300909374008091740087FFFCCFC5 +:1008400080917100809171006F5F7F4F3196261704 +:10085000370769F784ED809374001C9208953196F0 +:10086000EA30F105D1F681E08C9304C091E0D0CF5D +:1008700082E08C9384ED8093740008950E94D40CE0 +:1008800008950E94310C08951F920F920FB60F9297 +:1008900011242F933F934F938F939F93EF93FF9345 +:1008A0003BB14CB1209183012F5F2F718091840166 +:1008B000E22FFF279927E817F90741F0832F887166 +:1008C00020938301EB57FE4F408301C082E0809369 +:1008D000A501FF91EF919F918F914F913F912F91A2 +:1008E0000F900FBE0F901F9018951F920F920FB68A +:1008F0000F9211248F939F93EF93FF939091610137 +:1009000080916201981761F0E0916201EF5FEF71F1 +:10091000E0936201FF27ED59FE4F80818CB901C041 +:100920005598FF91EF919F918F910F900FBE0F906F +:100930001F9018959C011092610110926201109213 +:1009400083011092840197FF03C082E08BB93F7747 +:10095000832F99278093900029B988E98AB986E086 +:100960008093950008959091830180918401981758 +:1009700091F0E0918401EF5FEF71E0938401FF2734 +:10098000EB57FE4F20818091A5019927982F88274A +:10099000820F911D089580E091E00895382F2091F5 +:1009A00061012F5F2F71E22FFF278091620199274C +:1009B0008E179F07D1F3ED59FE4F308320936101CD +:1009C000559A08951F920F920FB60F9211242F93EC +:1009D0003F934F938F939F93EF93FF9330919B009F +:1009E00040919C0020913E012F5F2F7180913F012B +:1009F000E22FFF279927E817F90741F0832F887125 +:100A000020933E01E05CFE4F408301C082E0809372 +:100A10006001FF91EF919F918F914F913F912F91A5 +:100A20000F900FBE0F901F9018951F920F920FB648 +:100A30000F9211248F939F93EF93FF9390911C013A +:100A400080911D01981769F0E0911D01EF5FEF7132 +:100A5000E0931D01FF27E25EFE4F808180939C00A2 +:100A600005C080919A008F7D80939A00FF91EF914D +:100A70009F918F910F900FBE0F901F9018959C0122 +:100A800010921C0110921D0110923E0110923F0124 +:100A900097FF04C082E080939B003F77832F9927C4 +:100AA000809398002093990088E980939A0086E0CB +:100AB00080939D00089590913E0180913F01981789 +:100AC00091F0E0913F01EF5FEF71E0933F01FF276D +:100AD000E05CFE4F2081809160019927982F882744 +:100AE000820F911D089580E091E00895382F2091A4 +:100AF0001C012F5F2F71E22FFF2780911D01992785 +:100B00008E179F07D1F3E25EFE4F308320931C01C6 +:100B100080919A00806280939A000895DC013C9154 +:100B20003323D1F0119620911C012F5F2F71E22FFA +:100B3000FF2780911D019927E817F907D1F3E25E9D +:100B4000FE4F308320931C0180919A008062809335 +:100B50009A003C91332331F70895FC018491882356 +:100B6000D1F0AF014F5F5F4F382F209161012F5FB0 +:100B70002F71E22FFF27809162019927E817F9076B +:100B8000D1F3ED59FE4F308320936101559AFA015C +:100B90008491882339F70895DC013C913323B1F027 +:100BA0001196209161012F5F2F71E22FFF27809115 +:100BB00062019927E817F907D1F3ED59FE4F308309 +:100BC00020936101559A3C91332351F70895FC011C +:100BD00084918823F1F0AF014F5F5F4F382F209150 +:100BE0001C012F5F2F71E22FFF2780911D01992794 +:100BF000E817F907D1F3E25EFE4F308320931C0122 +:100C000080919A00806280939A00FA0184918823EF +:100C100019F7089508950895FC017183608308957C +:100C2000FC01738362830895FC01758364830895D6 +:100C30002F923F924F925F926F927F928F929F92EC +:100C4000AF92BF92CF92DF92EF92FF920F931F93DA +:100C50004C01FC0160817181882777FD8095982F78 +:100C60000E94B7095B016C010E94180E0E94200AC5 +:100C70007B018C0189E191E00E94F806F401228158 +:100C800033813C01621A730A662777276E197F0940 +:100C9000882777FD8095982F0E94B7091B012C01AA +:100CA000C601B5010E947B0D0E94200A882777FDAE +:100CB0008095982F0E94B7095B016C01B7018827C6 +:100CC00077FD8095982F0E94B7090E94200AF401B1 +:100CD00024813581629FA001639F500D729F500D4A +:100CE0001124460D571D00E111E060E070E0C801DD +:100CF0000E94310127ED33EB4DED5FE3C601B501F5 +:100D00000E9499089B01AC01C201B1010E946C08CC +:100D100020E030E040E05FE30E9499080E94200A52 +:100D2000F40124813581629FA001639F500D729F61 +:100D3000500D1124460D571D61E070E0C8010E945E +:100D4000310127ED33EB4DED5FEBC601B5010E949C +:100D500099089B01AC01C201B1010E946C0820E01E +:100D600030E040E05FE30E9499080E94200AF4010D +:100D700024813581629FA001639F500D729F500DA9 +:100D80001124460D571D62E070E0C8010E94310138 +:100D90001F910F91FF90EF90DF90CF90BF90AF9099 +:100DA0009F908F907F906F905F904F903F902F908B +:100DB0000895FC011182108213821282158214821E +:100DC0000E9418060895FC0111821082138212827B +:100DD000158214820E9418060895FC0171836083B5 +:100DE00053834283358324830E941806089508950F +:100DF00080E090E008950E940A0708950E940A0783 +:100E000008950E94080708950E940807089508950C +:100E100008950895089580E090E00895A0E0B0E07E +:100E2000E4E1F7E00C94420DFC016A0190819230FC +:100E300008F41BC1DB018C91823080F0943061F4A6 +:100E4000843009F012C19181EB018981981709F46E +:100E50000CC1E2E0F1E009C1843011F4FB0105C1ED +:100E6000823091F4923009F000C1EA01DF0188E09C +:100E70000D9009928150E1F78181FB0191818923D5 +:100E8000E6018983F601F1C0923041F362807380FC +:100E9000EB018A809B80E480F580068117812C819C +:100EA0003D814E815F815301A818B908C501B7FC87 +:100EB000ABC080970CF457C0861497040CF4BEC0E6 +:100EC0003401EE24FF2487019181FB018181981771 +:100ED00009F4A6C0992309F49CC02E193F09400BC0 +:100EE000510B57FDB0C0E60119827B826A82F60180 +:100EF0002483358346835783E6012C813D814E81CF +:100F00005F8179018A01DA01C9010197A109B1095B +:100F10008F5F9F4FAF4FBF43F8F4E6016A817B813B +:100F2000A8019701220F331F441F551F61507040C5 +:100F300079018A01DA01C9010197A109B1098F5F1D +:100F40009F4FAF4FBF4360F3E6017B836A83F60197 +:100F5000248335834683578383E0D6018C9357FDE2 +:100F600039C0F60182C086149704B4F4C0E0D0E022 +:100F7000DA01C90181709070A070B07056954795E4 +:100F800037952795282B392B4A2B5B2B2196AC16AE +:100F9000BD0671F78A0C9B1C681479040CF094CF81 +:100FA000C0E0D0E05401A618B708D801C70181708D +:100FB0009070A070B07016950795F794E794E82AA2 +:100FC000F92A0A2B1B2B2196AC16BD0671F76A0C69 +:100FD0007B1C7ACFDA01C901B695A79597958795BD +:100FE0002170307040705070282B392B4A2B5B2BAE +:100FF000E6012C833D834E835F838A819B8101962A +:101000009B838A83F60131C0882799278A199B0917 +:1010100050CFE21AF30A040B150BA801970161CF18 +:10102000E60199837B826A822E0D3F1D401F511F6E +:10103000F60124833583468357838ECF20E030E04A +:1010400040E050E041CF81E0E60189837B826A8203 +:1010500050954095309521953F4F4F4F5F4FF6018A +:10106000248335834683578347CFCF01EEE0CDB746 +:10107000DEB70C945E0DA0E2B0E0E1E4F8E00C9481 +:101080004A0D69837A838B839C832D833E834F83B0 +:10109000588789E1E82EF12CEC0EFD1EB701CE0138 +:1010A00001960E94920B8E010F5E1F4FB801CE0178 +:1010B00005960E94920B8A8991E089278A8BAE015E +:1010C000475F5F4FB801C7010E940E070E94700A78 +:1010D000E6E0A0960C94660DA0E2B0E0E2E7F8E04E +:1010E0000C944A0D69837A838B839C832D833E8382 +:1010F0004F83588799E1E92EF12CEC0EFD1EB701C4 +:10110000CE0101960E94920B8E010F5E1F4FB80117 +:10111000CE0105960E94920BAE01475F5F4FB8016A +:10112000C7010E940E070E94700AE6E0A0960C9488 +:10113000660DA0E2B0E0EFE9F8E00C943E0D6983A3 +:101140007A838B839C832D833E834F8358878E01C4 +:10115000075E1F4FB801CE0101960E94920BF1E18C +:10116000EF2EF12CEC0EFD1EB701CE0105960E946C +:10117000920B898D823078F09989923040F420E08A +:101180009A8D8A89981321E02A8BB701E9C08430AF +:1011900051F4923061F020E09A8D8A89981321E011 +:1011A0002A8FB801DDC0943029F4823041F762E023 +:1011B00071E0D6C0823079F3923009F32D8D3E8DE7 +:1011C0004F8D58A18D899E89AF89B88D22243324F3 +:1011D0002101AA24BB246501EE24FF24870160E0DD +:1011E00070E00DC06F5F7F4F6032710599F1880F1D +:1011F000991FAA1FBB1F569547953795279520FF26 +:1012000019C0280E391E4A1E5B1E6624772443012E +:10121000281639064A065B0628F4E1E06E2E712C8A +:10122000812C912CAE0CBF1CC01ED11EA60CB71C6D +:10123000C81CD91CEE0CFF1C001F111FB7FFD2CF1A +:10124000E1E06E2E712C812C912CE628F7280829DC +:101250001929C8CF8B8D9C8D2B893C89820F931FB8 +:1012600002969C878B871A869A8D8A89981711F027 +:1012700081E08A87D7FE17C08B859C85A0FE0CC0B5 +:10128000569447943794279420E030E040E050E8AB +:10129000222A332A442A552AD694C794B794A7946D +:1012A00001969C878B8730E0A31630E0B30630E0D0 +:1012B000C30630E4D30618F58B859C850EC0220C3E +:1012C000331C441C551C019720E0A21620E0B206F6 +:1012D00020E0C20620E4D20680F4AA0CBB1CCC1C81 +:1012E000DD1C57FEECCF31E0632E712C812C912C4C +:1012F000A628B728C828D928E2CF9C878B87D60193 +:10130000C5018F779070A070B07080349105A105F1 +:10131000B10551F0AD86BE86CF86D88A83E0898735 +:10132000BE01675F7F4F1CC0A7FCF4CF21143104BE +:101330004104510479F380E490E0A0E0B0E0A80E0D +:10134000B91ECA1EDB1E80E8682E8FEF782E8FEF45 +:10135000882E8FEF982EA620B720C820D920DACF6C +:10136000CB010E94700AE2E1A0960C945A0DA8E00D +:10137000B0E0EDEBF9E00C944D0D9B01AC0183E086 +:1013800089831A8257FD51C0211531054105510548 +:1013900039F482E08983CE0101960E94700A4CC024 +:1013A000EEE1F0E0FC83EB838A818823C9F12030F1 +:1013B00010E0310710E0410710E85107C9F1882714 +:1013C0009927DC01821B930BA40BB50B8D839E83A5 +:1013D000AF83B8872D813E814F815885203080E0D2 +:1013E000380780E0480780E45807A8F6EB81FC81C5 +:1013F000DA01C901880F991FAA1FBB1F31979C01F1 +:10140000AD01803010E0910710E0A10710E4B107B2 +:1014100078F3FC83EB838D839E83AF83B887BBCF48 +:101420002D833E834F835887D5CF81E08A83ACCF0D +:1014300060E070E080E09FECE3E028960C94690D9A +:10144000ACE0B0E0E6E2FAE00C944E0D69837A83FA +:101450008B839C83BE016B5F7F4FCE0101960E9400 +:10146000920B8D81823061F0823050F0843069F4CB +:101470008E81882359F52FEF3FEF4FEF5FE72AC0AA +:1014800020E030E040E050E025C02F81388537FD76 +:10149000F7CF2F31310564F78EE190E0821B930B7B +:1014A00029853A854B855C8504C0569547953795C7 +:1014B00027958A95D2F78E81882361F050954095C3 +:1014C000309521953F4F4F4F5F4F04C020E030E0F3 +:1014D00040E050E8CA01B901E2E02C960C946A0D94 +:1014E0004F925F926F927F928F929F92AF92BF9234 +:1014F000DF92EF92FF920F931F9320E030E040E0E5 +:1015000050E0FC01E480F58006811781D180808164 +:10151000823038F4D801C701A061AF77B0706FEFA7 +:10152000D9C0843009F46EC0823009F471C0E1146E +:10153000F1040105110509F46BC0828193816FEFFD +:10154000823896070CF06AC062E87FEF681B790B5F +:101550006A3171050CF080C047015801062E04C0A5 +:10156000B694A794979487940A94D2F74424552468 +:10157000320181E090E0A0E0B0E004C0880F991F44 +:10158000AA1FBB1F6A95D2F70197A109B109E822EA +:10159000F9220A231B23E114F1040105110529F0A6 +:1015A00061E0462E512C612C712C85017401E428D8 +:1015B000F52806291729D801C7018F779070A070E8 +:1015C000B07080349105A105B10509F457C0D80168 +:1015D000C701CF96A11DB11D60E070E08030E0E052 +:1015E0009E07E0E0AE07E0E4BE0710F061E070E0C7 +:1015F00027E0B695A795979587952A95D1F7AF7768 +:10160000B07068C080E090E0A0E0B0E06FEF62C032 +:1016100080E090E0A0E0B0E060E05CC08038910540 +:101620008CF7BC0161587F4FD801C7018F7790704C +:10163000A070B07080349105A105B105A1F08FE3D1 +:1016400090E0A0E0B0E0E80EF91E0A1F1B1F17FD96 +:1016500028C0D801C701CCCF60E070E080E090E006 +:10166000A0E0B0E0CCCFE7FEF2CF80E490E0A0E0D5 +:10167000B0E0E80EF91E0A1F1B1FE9CFE7FC18C0F7 +:1016800080E090E060E0E61660E0F60660E00607C5 +:1016900060E4160710F081E090E0BC01D801C701BA +:1016A000A7CF16950795F794E7946F5F7F4FD1CF3B +:1016B000D801C701805C9F4FAF4FBF4F60E070E023 +:1016C0008030E0E09E07E0E0AE07E0E4BE0708F40B +:1016D0008FCF8CCF282F392F9A2F9F77842F807808 +:1016E000892B962F9795992797958F77482F492B78 +:1016F0006695852F8078862BD794DD24D7948F77B5 +:10170000582F5D29CA01B9011F910F91FF90EF90E9 +:10171000DF90BF90AF909F908F907F906F905F9081 +:101720004F900895FC01DB01208131819281492F86 +:101730004F7750E0991F9927991F8381682F660F73 +:10174000692B881F8827881FFD018183662309F084 +:1017500049C0211531054105510509F470C082E8E1 +:101760009FEFFD0193838283220F331F441F551F78 +:10177000220F331F441F551F220F331F441F551FB5 +:10178000220F331F441F551F220F331F441F551FA5 +:10179000220F331F441F551F220F331F441F551F95 +:1017A00083E08C932030F0E03F07F0E04F07F0E457 +:1017B0005F0790F482E89FEF220F331F441F551FED +:1017C0000197203060E0360760E0460760E4560786 +:1017D00098F3FD0193838283FD012483358346833F +:1017E000578308956F3F71F1862F99278F57904047 +:1017F000FD019383828383E08C93220F331F441F68 +:10180000551F220F331F441F551F220F331F441F24 +:10181000551F220F331F441F551F220F331F441F14 +:10182000551F220F331F441F551F220F331F441F04 +:10183000551F50642483358346835783089582E07F +:101840008C930895211531054105510519F484E063 +:101850008C93089544FD02C01C92BECF81E08C930E +:10186000BBCFCF93DF93AC01029710F442E050E07E +:10187000A091A801B091A901FD01C0E0D0E020E055 +:1018800030E020C0808191818417950769F48281BE +:101890009381209719F09B838A8304C09093A901B8 +:1018A0008093A801CF0132C04817590738F4211599 +:1018B000310519F08217930708F49C01EF010280AB +:1018C000F381E02D3097F1F62115310589F1C90139 +:1018D000841B950B049708F4A901E0E0F0E026C012 +:1018E0008D919C91119782179307E9F44817590736 +:1018F00079F4ED018A819B81309719F0938382837B +:1019000004C09093A9018093A801CD01029649C01B +:10191000841B950BFD01E80FF91F4193519302972A +:101920008D939C933AC0FD01A281B3811097C1F6BB +:101930008091A6019091A701892B41F480910C011F +:1019400090910D019093A7018093A60120910E0123 +:1019500030910F012115310541F42DB73EB780912B +:101960000A0190910B01281B390BE091A601F0911F +:10197000A7012E1B3F0B2417350788F0CA010296DA +:101980002817390760F0CF01840F951F02969093B6 +:10199000A7018093A60141935193CF0102C080E03B +:1019A00090E0DF91CF910895CF93DF93009709F4F2 +:1019B0004EC0EC0122971B821A82A091A801B0911F +:1019C000A901109711F140E050E001C0DC01AC1713 +:1019D000BD0700F1BB83AA83FE0121913191E20F83 +:1019E000F31FEA17FB0771F42E5F3F4F8D919C9117 +:1019F0001197820F931F99838883FD0182819381C0 +:101A00009B838A834115510559F4D093A901C09352 +:101A1000A8011DC0FD0182819381AD010097B1F63F +:101A2000FA01D383C28321913191E20FF31FEC17A6 +:101A3000FD0769F42E5F3F4F88819981820F931FC4 +:101A4000FA01918380838A819B8193838283DF91D2 +:101A5000CF910895AA1BBB1B51E107C0AA1FBB1F52 +:101A6000A617B70710F0A61BB70B881F991F5A952A +:101A7000A9F780959095BC01CD0108952F923F92D2 +:101A80004F925F926F927F928F929F92AF92BF928E +:101A9000CF92DF92EF92FF920F931F93CF93DF933A +:101AA000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE97 +:101AB000CDBF09942A88398848885F846E847D84E4 +:101AC0008C849B84AA84B984C884DF80EE80FD80E6 +:101AD0000C811B81AA81B981CE0FD11D0FB6F8945C +:101AE000DEBF0FBECDBFED010895EE0FFF1F0590C5 +:101AF000F491E02D099450E449EC3FE02BED01D046 +:101B000013C05F77552319F444230AF02BC02F9399 +:101B10003F934F935F93A3D05527442759D05F91AC +:101B20004F913F912F9105CB1F939F7750EC49E444 +:101B30003FE02BEDD1DA10E89F775FE349EC3FE01F +:101B40002BED621773078407950720F050EC49E4EA +:101B5000C3DA112780D09068ECE8F0E006D0912736 +:101B60001F9108959FEF80EC0895FF92EF92DF920E +:101B7000CF92BF926B017C01B59016D0B590BB207F +:101B800069F09F938F937F936F93B601C7010CD039 +:101B90002F913F914F915F910E942F0EBF90CF9058 +:101BA000DF90EF90FF900895A0D002C09601A701AA +:101BB000EF93FF930E949908FF91EF9196D0EF93D6 +:101BC000FF930E946C08FF91EF91BA9479F7089502 +:101BD000C8D0CF93DF93D52FC42F55274427332761 +:101BE00022279923D9F09F37C8F0F92F88D0592F91 +:101BF000482F372F262FF63968F422DCB8DBC030A7 +:101C0000CD0721F069937993899399939058DF9147 +:101C1000CF9162CA9927882777276627C030CD07DA +:101C200021F02993399349935993DF91CF9167C05C +:101C30009F939F77993358F050E449EC3FE02BEDA8 +:101C400060DF5FEB49EC3FE02BED46DA6DDF5F9143 +:101C50005078952708959B01AC010C94990867D0A2 +:101C600001D04DC0552359F0992369F09F575F5714 +:101C7000951B33F442F4903811F4915805C072CF9B +:101C800091589F3F09F47FC0BB2711246217730747 +:101C9000840730F4660F771F881FBB1F915098F39D +:101CA00011D00F920FD00F920DD0A0E82617370752 +:101CB00048071B0609F0A048BA2F602D7F918F912D +:101CC00000240895A0E80024621773078407B10573 +:101CD00028F0621B730B840BB1090A2A660F771F69 +:101CE000881FBB1FA69581F70895559145913591A1 +:101CF000259108959A95BB0F661F771F881F1124A1 +:101D00009923A1F08823B2F79F3F59F0BB0F48F405 +:101D100021F4002011F460FF04C06F5F7F4F8F4FEC +:101D20009F4F881F9795879597F9089529C0052E8D +:101D3000092607FA440F551F5F3F79F0AA27A51718 +:101D400008F051E04795880F991F9F3F31F0BB275E +:101D5000B91708F091E0879508959F919F911124FC +:101D600001CF97FB880F991F9F3F31F0BB27B91711 +:101D700008F091E0879508959F919F911124F2CEEC +:101D80006627772788279927089510E0C4EBD0E0CD +:101D900004C0FE010E94770D2296C63BD107C9F709 +:101DA000FF0000000000000000002000AA01000069 +:00000001FF diff --git a/source/AVR_Studio/Soccer/default/dep/Soccer.o.d b/source/AVR_Studio/Soccer/default/dep/Soccer.o.d new file mode 100755 index 0000000..aaf1496 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/Soccer.o.d @@ -0,0 +1,66 @@ +Soccer.o: ../Soccer.c ../global.h c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/board.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/uart.h \ + ../hal/keylcd.h ../hal/i2c.h ../hal/../global.h \ + c:/winavr/bin/../avr/include/compat/twi.h \ + c:/winavr/bin/../avr/include/util/twi.h \ + c:/winavr/bin/../avr/include/string.h ../navigation.h \ + c:/winavr/bin/../avr/include/math.h ../sensor/sensor.h \ + ../sensor/../hal/board.h ../sensor/ballsensor.h ../sensor/../global.h + +../global.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +../hal/uart.h: + +../hal/keylcd.h: + +../hal/i2c.h: + +../hal/../global.h: + +c:/winavr/bin/../avr/include/compat/twi.h: + +c:/winavr/bin/../avr/include/util/twi.h: + +c:/winavr/bin/../avr/include/string.h: + +../navigation.h: + +c:/winavr/bin/../avr/include/math.h: + +../sensor/sensor.h: + +../sensor/../hal/board.h: + +../sensor/ballsensor.h: + +../sensor/../global.h: diff --git a/source/AVR_Studio/Soccer/default/dep/ballsensor.o.d b/source/AVR_Studio/Soccer/default/dep/ballsensor.o.d new file mode 100755 index 0000000..5f42752 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/ballsensor.o.d @@ -0,0 +1,38 @@ +ballsensor.o: ../sensor/ballsensor.c ../sensor/ballsensor.h \ + ../sensor/../hal/board.h c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h \ + c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h \ + ../sensor/../hal/uart.h + +../sensor/ballsensor.h: + +../sensor/../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../sensor/../hal/uart.h: diff --git a/source/AVR_Studio/Soccer/default/dep/board.o.d b/source/AVR_Studio/Soccer/default/dep/board.o.d new file mode 100755 index 0000000..25fb966 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/board.o.d @@ -0,0 +1,35 @@ +board.o: ../hal/board.c ../hal/board.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h \ + c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/uart.h + +../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../hal/uart.h: diff --git a/source/AVR_Studio/Soccer/default/dep/global.o.d b/source/AVR_Studio/Soccer/default/dep/global.o.d new file mode 100755 index 0000000..cd99039 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/global.o.d @@ -0,0 +1,36 @@ +global.o: ../global.c ../global.h c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/board.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/uart.h + +../global.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +../hal/uart.h: diff --git a/source/AVR_Studio/Soccer/default/dep/i2c.o.d b/source/AVR_Studio/Soccer/default/dep/i2c.o.d new file mode 100755 index 0000000..3facd0f --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/i2c.o.d @@ -0,0 +1,45 @@ +i2c.o: ../hal/i2c.c ../hal/i2c.h ../hal/../global.h \ + c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h \ + ../hal/../hal/board.h c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/../hal/uart.h \ + c:/winavr/bin/../avr/include/compat/twi.h \ + c:/winavr/bin/../avr/include/util/twi.h + +../hal/i2c.h: + +../hal/../global.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../hal/../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +../hal/../hal/uart.h: + +c:/winavr/bin/../avr/include/compat/twi.h: + +c:/winavr/bin/../avr/include/util/twi.h: diff --git a/source/AVR_Studio/Soccer/default/dep/keylcd.o.d b/source/AVR_Studio/Soccer/default/dep/keylcd.o.d new file mode 100755 index 0000000..c779700 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/keylcd.o.d @@ -0,0 +1,50 @@ +keylcd.o: ../hal/keylcd.c ../hal/keylcd.h ../hal/i2c.h ../hal/../global.h \ + c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h \ + ../hal/../hal/board.h c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/../hal/uart.h \ + c:/winavr/bin/../avr/include/compat/twi.h \ + c:/winavr/bin/../avr/include/util/twi.h \ + c:/winavr/bin/../avr/include/string.h + +../hal/keylcd.h: + +../hal/i2c.h: + +../hal/../global.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../hal/../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +../hal/../hal/uart.h: + +c:/winavr/bin/../avr/include/compat/twi.h: + +c:/winavr/bin/../avr/include/util/twi.h: + +c:/winavr/bin/../avr/include/string.h: diff --git a/source/AVR_Studio/Soccer/default/dep/navigation.o.d b/source/AVR_Studio/Soccer/default/dep/navigation.o.d new file mode 100755 index 0000000..4b0d8e0 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/navigation.o.d @@ -0,0 +1,52 @@ +navigation.o: ../navigation.c ../navigation.h \ + c:/winavr/bin/../avr/include/math.h ../hal/board.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h \ + c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/uart.h \ + ../sensor/sensor.h ../sensor/../hal/board.h ../sensor/ballsensor.h \ + ../sensor/../global.h ../sensor/../hal/board.h + +../navigation.h: + +c:/winavr/bin/../avr/include/math.h: + +../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../hal/uart.h: + +../sensor/sensor.h: + +../sensor/../hal/board.h: + +../sensor/ballsensor.h: + +../sensor/../global.h: + +../sensor/../hal/board.h: diff --git a/source/AVR_Studio/Soccer/default/dep/sensor.o.d b/source/AVR_Studio/Soccer/default/dep/sensor.o.d new file mode 100755 index 0000000..89e848a --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/sensor.o.d @@ -0,0 +1,45 @@ +sensor.o: ../sensor/sensor.c ../sensor/sensor.h ../sensor/../hal/board.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h \ + c:/winavr/bin/../avr/include/stdlib.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h \ + ../sensor/../hal/uart.h ../sensor/ballsensor.h ../sensor/../global.h \ + ../sensor/../hal/board.h + +../sensor/sensor.h: + +../sensor/../hal/board.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +c:/winavr/bin/../avr/include/stdlib.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../sensor/../hal/uart.h: + +../sensor/ballsensor.h: + +../sensor/../global.h: + +../sensor/../hal/board.h: diff --git a/source/AVR_Studio/Soccer/default/dep/uart.o.d b/source/AVR_Studio/Soccer/default/dep/uart.o.d new file mode 100755 index 0000000..9f91809 --- /dev/null +++ b/source/AVR_Studio/Soccer/default/dep/uart.o.d @@ -0,0 +1,32 @@ +uart.o: ../hal/uart.c c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/iom128.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h \ + c:/winavr/bin/../avr/include/avr/interrupt.h \ + c:/winavr/bin/../avr/include/avr/pgmspace.h \ + c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/uart.h + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/iom128.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +c:/winavr/bin/../avr/include/avr/interrupt.h: + +c:/winavr/bin/../avr/include/avr/pgmspace.h: + +c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h: + +../hal/uart.h: diff --git a/source/AVR_Studio/Soccer/global.c b/source/AVR_Studio/Soccer/global.c new file mode 100755 index 0000000..ea41f5c --- /dev/null +++ b/source/AVR_Studio/Soccer/global.c @@ -0,0 +1,10 @@ +#include "global.h" + + +void *operator new(size_t sz) { + return malloc(sz); +}; + +void operator delete(void *p) { + free(p); +}; diff --git a/source/AVR_Studio/Soccer/global.h b/source/AVR_Studio/Soccer/global.h new file mode 100755 index 0000000..3f57a8c --- /dev/null +++ b/source/AVR_Studio/Soccer/global.h @@ -0,0 +1,35 @@ +#ifndef _GLOBAL_H_ +#define _GLOBAL_H_ + +#include +#include "hal/board.h" + +inline void sleep(int sec) +{ + for (int s=0; s enable counter + + // aktiviere Kanal A+B auf PWM3 mit 8Bit + //TCCR3A = (1<< COM3A1) | (1<< COM3B1) | (1<< WGM10); + //TCCR3B = (1< enable counter + + // Schalte Motoren auf 0 + motor(0,0); + motor(1,0); + motor(2,0); + motor(3,0); + + // Uart-Interface einschalten + uart1_init( 10); // 9600 BAUD bei 16MHz Atmel + + // aktiviere interrupt + sei(); +} + +Board::~Board() { + +} + +// Gibt einen Analogen Wert zurück +int Board::GetADC(uint8_t channel) { + uint8_t i; + uint16_t result = 0; + + // Den ADC aktivieren und Teilungsfaktor auf 64 stellen + ADCSRA = (1< 3)) return; + const int OFFSET = 40; // Motor does not work with very low ratio + const int PWM_MAX = 255; + + int pwm = abs(speed)+OFFSET; + if(pwm > PWM_MAX) pwm = PWM_MAX; + + if(i == 0) + { + MOTOR0_PWM = pwm; + if(speed > 0) + { + PORTD |= (1 << 5);//In 1 ein + PORTD &= ~(1 << 4);//In 2 aus + } + else if(speed < 0) + { + PORTD |= (1 << 4);//In 2 ein + PORTD &= ~(1 << 5);//In 1 aus + } + else + { + PORTD |= (1 << 4);//In 2 ein + PORTD |= (1 << 5);//In 1 ein + } + } + else if(i == 1) + { + MOTOR1_PWM = pwm; + if(speed > 0) + { + PORTD |= (1 << 6);//In 1 ein + PORTD &= ~(1 << 7);//In 2 aus + } + else if(speed < 0) + { + PORTD |= (1 << 7);//In 2 ein + PORTD &= ~(1 << 6);//In 1 aus + } + else + { + PORTD |= (1 << 6);//In 2 ein + PORTD |= (1 << 7);//In 1 ein + } + } + else if(i == 2) + { + MOTOR2_PWM = pwm; + if(speed > 0) + { + PORTB |= (1 << 0);//In 1 ein + PORTB &= ~(1 << 1);//In 2 aus + } + else if(speed < 0) + { + PORTB |= (1 << 1);//In 2 ein + PORTB &= ~(1 << 0);//In 1 aus + } + else + { + PORTB |= (1 << 1);//In 2 ein + PORTB |= (1 << 0);//In 1 ein + } + } + else if(i == 3) + { + DRIBBLER_PWM = pwm; + if(speed > 0) + { + PORTB |= (1 << 2);//In 1 ein + PORTB &= ~(1 << 3);//In 2 aus + } + else if(speed < 0) + { + PORTB |= (1 << 3);//In 2 ein + PORTB &= ~(1 << 2);//In 1 aus + } + else + { + PORTB |= (1 << 2);//In 2 ein + PORTB |= (1 << 3);//In 1 ein + } + } +} + +//PWM routine für den Beeper +ISR (TIMER0_OVF_vect) +{ + static int counter = 255; + + if(counter > beepFreq/2) PORTG |= (1< +#include +#include +#include "uart.h" + +//#define abs(a) ((a < 0)? -a : a) + +#define BEEPER_PIN PG2 + +// Definiere PWM-Ports für die Motoren/Dribbler +#define MOTOR0_PWM OCR3A +#define MOTOR1_PWM OCR3B +#define MOTOR2_PWM OCR1A +#define DRIBBLER_PWM OCR1C + +#define UART_BAUD_RATE 9600 + +class Board +{ +private: +public: + Board(); + ~Board(); + + int GetADC(uint8_t channel); + void beep(int freq); + void ledOn(); + void ledOff(); + void led(bool status); + void motor(int i, int speed); +}; + +#endif + + diff --git a/source/AVR_Studio/Soccer/hal/i2c.c b/source/AVR_Studio/Soccer/hal/i2c.c new file mode 100755 index 0000000..65bf66b --- /dev/null +++ b/source/AVR_Studio/Soccer/hal/i2c.c @@ -0,0 +1,217 @@ +#include "i2c.h" + +I2C::I2C() +{ + TWBR = 64; // I2C bitrate (must be 10 or higher) + TWCR = 4+64; // TWI enable bit + ackn + TWSR = 0; // prescaler + + // I2C pull-ups are set in the board file // + + err=0; +} + +uint8_t I2C::error() +{ + return err; +} + + +void I2C::setSlaveAdress(uint8_t address) +{ + TWAR = address<<1; // slave address (shift by one since bit 0 has different meaning) +} + + +bool I2C::isAction() +{ + if (TWCR&(1< OK + err=ERROR_NO_START; + return; + } + + TWDR=(address<<1); // slave address + write mode + TWCR = BV(TWINT) | BV(TWEN) | BV(TWEA); // generate command + + while(!(TWCR&128)) {}; // wait for OK + if ((TWSR&248)==TW_MT_SLA_ACK) OK=true; // SLA+W was sent, ACK received -> OK + if ((TWSR&248)==TW_MT_SLA_NACK) { // SLA+W was sent, ACK not received -> ERROR + counter++; + + if (counter == 10) { // After 10 tries... + err=ERROR_NO_ACK; // ... return with ERROR_NO_ACK + return; + } + } + + } while(!OK); + + err=0; // OK +} + + +void I2C::sendStartSLA_R(uint8_t address) +{ + bool OK=false; + while (!OK) { + TWCR |= BV(TWINT)|BV(TWSTA); // send start condition +// sbi(TWCR, TWSTA); // generate start condition + while(!(TWCR&128)); // wait for OK + if ((TWSR&248)==8); // start condition was sent -> OK + + TWDR=(address<<1) | 1; // slave address + read mode + TWCR = BV(TWINT) | BV(TWEN) | BV(TWEA); // generate command + + while(!(TWCR&128)); // wait for send OK + ACK/NACK from slave + if ((TWSR&248)==0x38); // Arbitration lost or NOT ACK -> ERROR + if ((TWSR&248)==0x40) OK=true; // SLA+R was sent, ACK received -> OK + if ((TWSR&248)==0x48); // SLA+W was sent, ACK not received -> ERROR + sbi(TWCR, TWINT); // OK + } +} + +// This is used by send() called by the master // +void I2C::sendByte(uint8_t data) +{ + TWDR = data; // send one data byte + TWCR = (1< OK + if ((TWSR&248)==TW_MT_DATA_NACK); // data sent, ACK not received -> ERROR +} + + +void I2C::sendStop() +{ + TWCR = BV(TWINT) | BV(TWEN) | BV(TWEA) | BV(TWSTO); // generate stop command +} + +// Note: in qfix, the I2C address is the board identifier +// and the first data byte ist the logical ID +inline +void I2C::send(uint8_t address, uint8_t data) +{ + send(address, &data, 1); +} + + +// Note: in qfix, the I2C address is the board identifier +// and the first data byte ist the logical ID +void I2C::send(uint8_t address, uint8_t* data, int length) +{ + sendStartSLA_W(address); + if (err!=0) + { + sendStop(); + //err = ERROR_NOT_SENT; + return; + } + + for (int i=0; i OK + TWCR = (1< OK + if ((TWSR&248)==0xC0); // data sent, ACK not received -> ERROR + } + TWCR = (1< + +const int ACTION_SEND = 1; +const int ACTION_GET = 2; +const int ACTION_UNKNOWN = 3; + + +const uint8_t ERROR_NO_ACK = 1; +const uint8_t ERROR_NO_START = 2; +const uint8_t ERROR_NOT_SENT = 3; // send() could not send byte(s) + + + +class I2C +{ +private: + uint8_t err; + uint8_t adr; + + void sendStartSLA_W(uint8_t address); + void sendStartSLA_R(uint8_t address); + void sendByte(uint8_t data); + void sendStop(); + void readByte(uint8_t& data); + +public: + I2C(); + uint8_t error(); + +// master side // + + void send(uint8_t address, uint8_t data); + void send(uint8_t address, uint8_t* data, int length); + void get(uint8_t address, uint8_t* data, int length); + +// slave side // + + void setSlaveAdress(uint8_t address); + bool isAction(); + bool isActionSend(); // true if master sent something + bool isActionGet(); // true if master wants to get something + int receive(uint8_t* data); // if action is send, receive the bytes + void returnBytes(uint8_t* data, int len, bool lastOne); +}; + + + + + + +#endif + diff --git a/source/AVR_Studio/Soccer/hal/keylcd.c b/source/AVR_Studio/Soccer/hal/keylcd.c new file mode 100755 index 0000000..fb2efa6 --- /dev/null +++ b/source/AVR_Studio/Soccer/hal/keylcd.c @@ -0,0 +1,28 @@ +#include "keylcd.h" + +KeyLCD::KeyLCD() : i2c() { + +} + +KeyLCD::~KeyLCD() { + +} + +// Gibt Daten auf dem keyLCD aus +void KeyLCD::print(char *data) { + int len=strlen(data); + uint8_t buf[len+1]; + + for (int i=0; i http://jump.to/fleury +File: $Id: uart.c,v 1.5.2.10 2005/11/15 19:49:12 peter Exp $ +Software: AVR-GCC 3.3 +Hardware: any AVR with built-in UART, + tested on AT90S8515 at 4 Mhz and ATmega at 1Mhz + +DESCRIPTION: + An interrupt is generated when the UART has finished transmitting or + receiving a byte. The interrupt handling routines use circular buffers + for buffering received and transmitted data. + + The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE variables define + the buffer size in bytes. Note that these variables must be a + power of 2. + +USAGE: + Refere to the header file uart.h for a description of the routines. + See also example test_uart.c. + +NOTES: + Based on Atmel Application Note AVR306 + +*************************************************************************/ +#include +#include +//#include +#include +#include "uart.h" + + +/* + * constants and macros + */ + +/* size of RX/TX buffers */ +#define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1) +#define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1) + +#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK ) +#error RX buffer size is not a power of 2 +#endif +#if ( UART_TX_BUFFER_SIZE & UART_TX_BUFFER_MASK ) +#error TX buffer size is not a power of 2 +#endif + +#if defined(__AVR_AT90S2313__) \ + || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \ + || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \ + || defined(__AVR_ATmega103__) + /* old AVR classic or ATmega103 with one UART */ + #define AT90_UART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS USR + #define UART0_CONTROL UCR + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__) + /* old AVR classic with one UART */ + #define AT90_UART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ + || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) \ + || defined(__AVR_ATmega323__) + /* ATmega with one USART */ + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega163__) + /* ATmega163 with one UART */ + #define ATMEGA_UART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega162__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV + #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA + #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT SIG_UART0_RECV + #define UART1_RECEIVE_INTERRUPT SIG_UART1_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART0_DATA + #define UART1_TRANSMIT_INTERRUPT SIG_UART1_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega161__) + /* ATmega with UART */ + #error "AVR ATmega161 currently not supported by this libaray !" +#elif defined(__AVR_ATmega169__) + /* ATmega with one USART */ + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATtiny2313__) + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT SIG_USART0_RX + #define UART0_TRANSMIT_INTERRUPT SIG_USART0_UDRE + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#else + #error "no UART definition for MCU available" +#endif + + +/* + * module global variables + */ +static volatile unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE]; +static volatile unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE]; +static volatile unsigned char UART_TxHead; +static volatile unsigned char UART_TxTail; +static volatile unsigned char UART_RxHead; +static volatile unsigned char UART_RxTail; +static volatile unsigned char UART_LastRxError; + +#if defined( ATMEGA_USART1 ) +static volatile unsigned char UART1_TxBuf[UART_TX_BUFFER_SIZE]; +static volatile unsigned char UART1_RxBuf[UART_RX_BUFFER_SIZE]; +static volatile unsigned char UART1_TxHead; +static volatile unsigned char UART1_TxTail; +static volatile unsigned char UART1_RxHead; +static volatile unsigned char UART1_RxTail; +static volatile unsigned char UART1_LastRxError; +#endif + + + +SIGNAL(UART0_RECEIVE_INTERRUPT) +/************************************************************************* +Function: UART Receive Complete interrupt +Purpose: called when the UART has received a character +**************************************************************************/ +{ + unsigned char tmphead; + unsigned char data; + unsigned char usr; + unsigned char lastRxError; + + + /* read UART status register and UART data register */ + usr = UART0_STATUS; + data = UART0_DATA; + + /* */ +#if defined( AT90_UART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#elif defined( ATMEGA_USART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#elif defined( ATMEGA_USART0 ) + lastRxError = (usr & (_BV(FE0)|_BV(DOR0)) ); +#elif defined ( ATMEGA_UART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#endif + + /* calculate buffer index */ + tmphead = ( UART_RxHead + 1) & UART_RX_BUFFER_MASK; + + if ( tmphead == UART_RxTail ) { + /* error: receive buffer overflow */ + lastRxError = UART_BUFFER_OVERFLOW >> 8; + }else{ + /* store new index */ + UART_RxHead = tmphead; + /* store received data in buffer */ + UART_RxBuf[tmphead] = data; + } + UART_LastRxError = lastRxError; +} + + +SIGNAL(UART0_TRANSMIT_INTERRUPT) +/************************************************************************* +Function: UART Data Register Empty interrupt +Purpose: called when the UART is ready to transmit the next byte +**************************************************************************/ +{ + unsigned char tmptail; + + + if ( UART_TxHead != UART_TxTail) { + /* calculate and store new buffer index */ + tmptail = (UART_TxTail + 1) & UART_TX_BUFFER_MASK; + UART_TxTail = tmptail; + /* get one byte from buffer and write it to UART */ + UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */ + }else{ + /* tx buffer empty, disable UDRE interrupt */ + UART0_CONTROL &= ~_BV(UART0_UDRIE); + } +} + + +/************************************************************************* +Function: uart_init() +Purpose: initialize UART and set baudrate +Input: baudrate using macro UART_BAUD_SELECT() +Returns: none +**************************************************************************/ +void uart_init(unsigned int baudrate) +{ + UART_TxHead = 0; + UART_TxTail = 0; + UART_RxHead = 0; + UART_RxTail = 0; + +#if defined( AT90_UART ) + /* set baud rate */ + UBRR = (unsigned char)baudrate; + + /* enable UART receiver and transmmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN); + +#elif defined (ATMEGA_USART) + /* Set baud rate */ + if ( baudrate & 0x8000 ) + { + UART0_STATUS = (1<>8); + UBRRL = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|(1<>8); + UBRR0L = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE0)|(1<>8); + UBRR = (unsigned char) baudrate; + + /* Enable UART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|(1<> 8; + }else{ + /* store new index */ + UART1_RxHead = tmphead; + /* store received data in buffer */ + UART1_RxBuf[tmphead] = data; + } + UART1_LastRxError = lastRxError; +} + + +SIGNAL(UART1_TRANSMIT_INTERRUPT) +/************************************************************************* +Function: UART1 Data Register Empty interrupt +Purpose: called when the UART1 is ready to transmit the next byte +**************************************************************************/ +{ + unsigned char tmptail; + + + if ( UART1_TxHead != UART1_TxTail) { + /* calculate and store new buffer index */ + tmptail = (UART1_TxTail + 1) & UART_TX_BUFFER_MASK; + UART1_TxTail = tmptail; + /* get one byte from buffer and write it to UART */ + UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */ + }else{ + /* tx buffer empty, disable UDRE interrupt */ + UART1_CONTROL &= ~_BV(UART1_UDRIE); + } +} + + +/************************************************************************* +Function: uart1_init() +Purpose: initialize UART1 and set baudrate +Input: baudrate using macro UART_BAUD_SELECT() +Returns: none +**************************************************************************/ +void uart1_init(unsigned int baudrate) +{ + UART1_TxHead = 0; + UART1_TxTail = 0; + UART1_RxHead = 0; + UART1_RxTail = 0; + + + /* Set baud rate */ + if ( baudrate & 0x8000 ) + { + UART1_STATUS = (1<>8); + UBRR1L = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART1_CONTROL = _BV(RXCIE1)|(1< http://jump.to/fleury +File: $Id: uart.h,v 1.7.2.5 2005/08/14 11:25:41 Peter Exp $ +Software: AVR-GCC 3.3 +Hardware: any AVR with built-in UART, tested on AT90S8515 at 4 Mhz +Usage: see Doxygen manual +************************************************************************/ + +/** + * @defgroup pfleury_uart UART Library + * @code #include @endcode + * + * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers. + * + * This library can be used to transmit and receive data through the built in UART. + * + * An interrupt is generated when the UART has finished transmitting or + * receiving a byte. The interrupt handling routines use circular buffers + * for buffering received and transmitted data. + * + * The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define + * the size of the circular buffers in bytes. Note that these constants must be a power of 2. + * You may need to adapt this constants to your target and your application by adding + * CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile. + * + * @note Based on Atmel Application Note AVR306 + * @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury + */ + +/**@{*/ + + +#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 +#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" +#endif + + +/* +** constants and macros +*/ + +/** @brief UART Baudrate Expression + * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz + * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600 + */ +#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1) + +/** @brief UART Baudrate Expression for ATmega double speed mode + * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz + * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600 + */ +#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000) + + +/** Size of the circular receive buffer, must be power of 2 */ +#ifndef UART_RX_BUFFER_SIZE +#define UART_RX_BUFFER_SIZE 32 +#endif +/** Size of the circular transmit buffer, must be power of 2 */ +#ifndef UART_TX_BUFFER_SIZE +#define UART_TX_BUFFER_SIZE 32 +#endif + +/* test if the size of the circular buffers fits into SRAM */ +#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) ) +#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM" +#endif + +/* +** high byte error return code of uart_getc() +*/ +#define UART_FRAME_ERROR 0x0800 /* Framing Error by UART */ +#define UART_OVERRUN_ERROR 0x0400 /* Overrun condition by UART */ +#define UART_BUFFER_OVERFLOW 0x0200 /* receive ringbuffer overflow */ +#define UART_NO_DATA 0x0100 /* no receive data available */ + + +/* +** function prototypes +*/ + +/** + @brief Initialize UART and set baudrate + @param baudrate Specify baudrate using macro UART_BAUD_SELECT() + @return none +*/ +extern void uart_init(unsigned int baudrate); + + +/** + * @brief Get received byte from ringbuffer + * + * Returns in the lower byte the received character and in the + * higher byte the last receive error. + * UART_NO_DATA is returned when no data is available. + * + * @param void + * @return lower byte: received byte from ringbuffer + * @return higher byte: last receive status + * - \b 0 successfully received data from UART + * - \b UART_NO_DATA + *
no receive data available + * - \b UART_BUFFER_OVERFLOW + *
Receive ringbuffer overflow. + * We are not reading the receive buffer fast enough, + * one or more received character have been dropped + * - \b UART_OVERRUN_ERROR + *
Overrun condition by UART. + * A character already present in the UART UDR register was + * not read by the interrupt handler before the next character arrived, + * one or more received characters have been dropped. + * - \b UART_FRAME_ERROR + *
Framing Error by UART + */ +extern unsigned int uart_getc(void); + + +/** + * @brief Put byte to ringbuffer for transmitting via UART + * @param data byte to be transmitted + * @return none + */ +extern void uart_putc(unsigned char data); + + +/** + * @brief Put string to ringbuffer for transmitting via UART + * + * The string is buffered by the uart library in a circular buffer + * and one character at a time is transmitted to the UART using interrupts. + * Blocks if it can not write the whole string into the circular buffer. + * + * @param s string to be transmitted + * @return none + */ +extern void uart_puts(const char *s ); + + +/** + * @brief Put string from program memory to ringbuffer for transmitting via UART. + * + * The string is buffered by the uart library in a circular buffer + * and one character at a time is transmitted to the UART using interrupts. + * Blocks if it can not write the whole string into the circular buffer. + * + * @param s program memory string to be transmitted + * @return none + * @see uart_puts_P + */ +extern void uart_puts_p(const char *s ); + +/** + * @brief Macro to automatically put a string constant into program memory + */ +#define uart_puts_P(__s) uart_puts_p(PSTR(__s)) + + + +/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */ +extern void uart1_init(unsigned int baudrate); +/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */ +extern unsigned int uart1_getc(void); +/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */ +extern void uart1_putc(unsigned char data); +/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */ +extern void uart1_puts(const char *s ); +/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */ +extern void uart1_puts_p(const char *s ); +/** @brief Macro to automatically put a string constant into program memory */ +#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s)) + +/**@}*/ + + +#endif // UART_H + diff --git a/source/AVR_Studio/Soccer/navigation.c b/source/AVR_Studio/Soccer/navigation.c new file mode 100755 index 0000000..6bf5d4d --- /dev/null +++ b/source/AVR_Studio/Soccer/navigation.c @@ -0,0 +1,54 @@ +#include "navigation.h" + +// Initialisiert die Klasse +Navigation::Navigation() { + richtung = 0; + ausrichtung = 0; + geschwindigkeit = 0; + Aktualisieren(); +} +Navigation::~Navigation() { +} + +// Setze eine neue Richtung +void Navigation::SetzeRichtung(int nRichtung) { + richtung = nRichtung; +} +// Setze eine neue Ausrichtung +void Navigation::SetzeAusrichtung(int nAusrichtung) { + ausrichtung = nAusrichtung; +} +// Setze eine neue Geschwindigkeit +void Navigation::SetzeGeschwindigkeit(int nGeschwindigkeit) { + geschwindigkeit = nGeschwindigkeit; +} + + +// Aktualieren ohne Parameter +void Navigation::Aktualisieren() { + // Richtung in x und y-Kompontente zerlegen + int y = (int)cos(richtung); // richtung ist winkel + int x = (int)sin(richtung); + + // Abweichung der Ausrichtung ermitteln(als winkel) + int w = sensor.getAusrichtung() - ausrichtung; + + // Stärke der einzelnen Motoren berechnen + float v0 = x; + float v1 = (-x+sqrt(3)*y)/2; + float v2 = (-x-sqrt(3)*y)/2; + + // Ausgerechnete Stärke an die Motoren übergeben + board.motor(0,(int)v0*geschwindigkeit +w); + board.motor(1,(int)v1*geschwindigkeit +w); + board.motor(2,(int)v2*geschwindigkeit +w); +} + +// Aktualieren mit allen Parametern +void Navigation::Aktualisieren(int nRichtung,int nAusrichtung,int nGeschwindigkeit) { + SetzeRichtung(nRichtung); // Übergebene Werte schreiben + SetzeAusrichtung(nAusrichtung); + SetzeGeschwindigkeit(nGeschwindigkeit); + Aktualisieren(); // Und anwenden +} + diff --git a/source/AVR_Studio/Soccer/navigation.h b/source/AVR_Studio/Soccer/navigation.h new file mode 100755 index 0000000..863687d --- /dev/null +++ b/source/AVR_Studio/Soccer/navigation.h @@ -0,0 +1,31 @@ +#ifndef _NAVIGATION_H_ +#define _NAVIGATION_H_ + +#include +#include "hal/board.h" +#include "sensor/sensor.h" + +extern Board board; +extern Sensor sensor; + +class Navigation +{ +private: + int richtung; + int ausrichtung; + int geschwindigkeit; +public: + Navigation(); + ~Navigation(); + + void SetzeRichtung(int nRichtung); + void SetzeAusrichtung(int nAusrichtung); + void SetzeGeschwindigkeit(int nGeschwindigkeit); + + void Aktualisieren(int nRichtung,int nAusrichtung,int nGeschwindigkeit); + void Aktualisieren(); +}; + +#endif + + diff --git a/source/AVR_Studio/Soccer/sensor/ballsensor.c b/source/AVR_Studio/Soccer/sensor/ballsensor.c new file mode 100755 index 0000000..bf97f99 --- /dev/null +++ b/source/AVR_Studio/Soccer/sensor/ballsensor.c @@ -0,0 +1,11 @@ +#include "ballsensor.h" + +Ballsensor::Ballsensor() { +} + +Ballsensor::~Ballsensor() { +} + +int Ballsensor::getBallwinkel() { + return 0; +} diff --git a/source/AVR_Studio/Soccer/sensor/ballsensor.h b/source/AVR_Studio/Soccer/sensor/ballsensor.h new file mode 100755 index 0000000..46daf90 --- /dev/null +++ b/source/AVR_Studio/Soccer/sensor/ballsensor.h @@ -0,0 +1,18 @@ +#ifndef _BALLSENSOR_H_ +#define _BALLSENSOR_H_ + +#include "../hal/board.h" + +extern Board board; + +class Ballsensor +{ +private: +public: + Ballsensor(); + ~Ballsensor(); + + int getBallwinkel(); // Gibt den aktuellen Winkel vom Ball zurück +}; + +#endif diff --git a/source/AVR_Studio/Soccer/sensor/sensor.c b/source/AVR_Studio/Soccer/sensor/sensor.c new file mode 100755 index 0000000..a1730db --- /dev/null +++ b/source/AVR_Studio/Soccer/sensor/sensor.c @@ -0,0 +1,15 @@ +#include "sensor.h" + +Sensor::Sensor() :ballsensor() { + //ballsensor = new Ballsensor; +} +Sensor::~Sensor() { +} + +void Sensor::Aktualisieren() { + +} + +int Sensor::getAusrichtung() { + return 0; +} diff --git a/source/AVR_Studio/Soccer/sensor/sensor.h b/source/AVR_Studio/Soccer/sensor/sensor.h new file mode 100755 index 0000000..25d36c2 --- /dev/null +++ b/source/AVR_Studio/Soccer/sensor/sensor.h @@ -0,0 +1,23 @@ +#ifndef _SENSOR_H_ +#define _SENSOR_H_ + +#include "../hal/board.h" +#include "ballsensor.h" +#include "../global.h" + +extern Board board; + +class Sensor +{ +private: + Ballsensor ballsensor; +public: + Sensor(); + ~Sensor(); + + void Aktualisieren(); + + int getAusrichtung(); // Gibt die aktuelle Ausrichtung des Roboters zurück +}; + +#endif -- cgit v1.2.3