[ADD] timer, but I don't think it works yet

This commit is contained in:
Sem van der Hoeven
2021-03-18 20:11:44 +01:00
parent 7a3180019e
commit 9f96c762fc
4 changed files with 1410 additions and 197 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,27 +1,152 @@
S0180000756C747261736F6E696353656E736F722E737265634E
S113000045C0000082C0000056C0000054C000007B
S113001052C0000050C000004EC000004CC00000A0
S11300204AC0000048C0000046C0000044C00000B0
S113003042C0000040C000003EC000003CC00000C0
S11300403AC0000038C0000036C0000034C00000D0
S113005032C0000030C000002EC000002CC00000E0
S11300602AC0000028C0000026C0000024C00000F0
S113007022C0000020C000001EC000001CC0000000
S11300801AC0000018C0000016C0000011241FBED2
S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0ECE7EF
S11300A0F1E000E00BBF02C007900D92A230B1074F
S11300B0D9F747D061C0A4CF20E030E006C046E0C5
S11300C04A95F1F700C02F5F3F4F28173907B8F35F
S11300D0089520E030E008C0E7E8F3E13197F1F754
S11300E000C000002F5F3F4F28173907A8F3089579
S11300F0CF93DF93C5E6D0E018828AE090E0DCDF9E
S113010081E08883DF91CF9108951F920F920FB6FB
S11301100F9211248F9380910001813031F482E099
S113012080936A001092000106C083E080936A0005
S113013081E0809300018F910F900FBE0F901F906C
S113014018958FEF8093640011BA8ABBEAE6F0E059
S113015080818360808389B7816089BF7894C8DF98
S113016080910001811103C08FEF8BBB01C01BBACA
S10F017088EE93E0AEDFF3CFF894FFCFED
S105017C01007C
S113000045C0000062C100005EC000005CC000008A
S11300105AC0000058C0000056C0000054C0000080
S113002052C0000050C000004EC000004CC0000090
S11300304AC0000048C0000046C0000044C00000A0
S113004042C0000040C000003EC000003CC00000B0
S11300503AC0000038C0000036C0000034C00000C0
S113006032C0000030C000002EC000002CC00000D0
S11300702AC0000028C0000026C0000024C00000E0
S113008022C0000020C000001EC0000011241FBEBA
S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0EAE4F4
S11300A0F9E000E00BBF02C007900D92A430B10745
S11300B0D9F721E0A4E0B1E001C01D92A630B20757
S11300C0E1F729D140C49CCF9BB321E030E002C0CA
S11300D0220F331F8A95E2F7292B2BBB08959BB37C
S11300E021E030E002C0220F331F8A95E2F7209509
S11300F029232BBB089586E090E0E6DF83EC99E0AA
S11301000197F1F700C0000086E090E0E8DF83EC9F
S113011099E00197F1F700C000000895CF93C82F2C
S113012085BB84E090E0D0DFE6DFC295C07FC5BB2D
S113013084E090E0C9DFDFDFCF910895CF93C82F2B
S113014085BB84E090E0CBDFD6DFC295C07FC5BB22
S113015084E090E0C4DFCFDFCF91089581E0EEDF4B
S113016087E893E10197F1F700C0000080E8E6CF4B
S11301700895CF938FEF84BB85BB81BB8ABB15BA2F
S11301801BBAC0E2C5BBB7DFC5BBB5DF80E885BB22
S1130190B2DF15BAB0DF80EF85BBADDF15BAABDFD8
S11301A080E685BBA8DF82E0C9DFA5DFCF91089593
S11301B0CF93DF93EC0102C0B1DF219688818111D6
S11301C0FBCFDF91CF910895AF92BF92CF92DF9290
S11301D0EF92FF920F931F93CF93DF93CDB7DEB7C8
S11301E0D82EC92EADB6BEB69F938F930F2EF1E0D5
S11301F0EF2EF1E0FF2EF02DFF92EF921F921F924F
S11302001F921F92B7D001962DB73EB7285F3F4F7C
S11302100FB6F8943EBF0FBE2DBF281B390B0FB687
S1130220F8943EBF0FBE2DBF0DB71EB70F5F1F4F13
S1130230CF92DF92FF92EF929F938F931F930F932E
S113024099D0802F912FB4DF8DB79EB708960FB643
S1130250F8949EBF0FBE8DBF0FB6F894BEBE0FBEFE
S1130260ADBEDF91CF911F910F91FF90EF90DF9082
S1130270CF90BF90AF90089520E030E006C046E0F4
S11302804A95F1F700C02F5F3F4F28173907B8F39D
S1130290089520E030E008C0E7E8F3E13197F1F792
S11302A000C000002F5F3F4F28173907A8F30895B7
S11302B0CF93DF93C5E6D0E018828AE090E0DCDFDC
S11302C081E08883DF91CF9108951F920F920FB63A
S11302D00F9211248F939F9380910001813041F4F8
S11302E082E080936A001DBC1CBC109200010CC00B
S11302F083E080936A008CB59DB59093050180934B
S1130300040181E0809300019F918F910F900FBEB3
S11303100F901F9018958FEF8093640011BAEAE64E
S1130320F0E080818360808389B7816089BF1FBCCE
S11303308CE08EBD78941DDF8FE493EC0197F1F788
S113034000C000000BDFB4DF2091040130910501EF
S113035084E591E0289FE001299FD00D389FD00DBE
S11303601124D695C795FADECE012EDF88EE93E0F0
S113037090DFE9CF0F931F93CF93DF93CDB7DEB711
S11303802E970FB6F894DEBF0FBECDBF0D891E8920
S11303908F89988D26E02C831A83098397FF02C0E6
S11303A080E090E801979E838D83AE01455E5F4FA8
S11303B0698D7A8DCE01019619D04D815E8157FDEC
S11303C00AC02F813885421753070CF49A01F801AB
S11303D0E20FF31F10822E960FB6F894DEBF0FBE05
S11303E0CDBFDF91CF911F910F9108952F923F922E
S11303F04F925F926F927F928F929F92AF92BF9231
S1130400CF92DF92EF92FF920F931F93CF93DF93DC
S1130410CDB7DEB72B970FB6F894DEBF0FBECDBFB6
S11304206C017B018A01FC0117821682838181FFA2
S1130430BFC1CE0101963C01F6019381F70193FD02
S1130440859193FF81917F01882309F4ADC18532A1
S113045039F493FD859193FF81917F01853221F4D5
S1130460B60190E0D6D1E8CF912C212C312CFFE1BC
S1130470F315D8F08B3279F038F4803279F0833286
S1130480A1F4232D20611DC08D3261F0803369F405
S1130490232D216016C0832D8260382EE32DE46065
S11304A03E2E2AC0F32DF8601DC037FC2DC020ED70
S11304B0280F2A3040F08E32B9F436FC75C1232D52
S11304C02064322E19C036FE06C08AE0989E200DA4
S11304D01124922E11C0EAE02E9E200D1124222E0A
S11304E0F32DF0623F2E08C08C3621F4832D8068F2
S11304F0382E02C0883641F4F70193FD859193FFAD
S113050081917F018111B3CF982F9F7D95549330B2
S113051028F40C5F1F4F9FE399830DC0833631F09D
S1130520833771F0833509F055C020C0F80180810C
S113053089830E5F1F4F88248394912C530112C02A
S11305402801F2E04F0E511CF801A080B18036FE64
S113055003C0692D70E002C06FEF7FEFC5014ED17B
S11305604C018201F32DFF773F2E15C0280122E0B4
S1130570420E511CF801A080B18036FE03C0692DE3
S113058070E002C06FEF7FEFC5012DD14C01F32D58
S1130590F0683F2E820133FC19C0822D90E088164A
S11305A09906A0F4B60180E290E033D12A94F5CF05
S11305B0F50137FC859137FE81915F01B60190E02A
S11305C028D121102A9421E0821A910881149104DF
S11305D079F7E1C0843611F0893639F5F80137FE30
S11305E007C060817181828193810C5F1F4F08C0B5
S11305F060817181072E000C880B990B0E5F1F4FD1
S1130600F32DFF763F2E97FF09C090958095709546
S113061061957F4F8F4F9F4FF0683F2E2AE030E067
S1130620A30133D1882E861844C0853731F4232D95
S11306302F7EB22E2AE030E025C0932D997FB92E6B
S11306408F36C1F018F4883579F0AEC0803719F0D0
S1130650883721F0A9C0E92FE061BE2EB4FE0DC099
S1130660FB2DF460BF2E09C034FE0AC0292F26607A
S1130670B22E06C028E030E005C020E130E002C020
S113068020E132E0F801B7FE07C060817181828108
S113069093810C5F1F4F06C06081718180E090E000
S11306A00E5F1F4FA301F1D0882E8618FB2DFF7714
S11306B03F2E36FE0DC0232D2E7FA22E891458F412
S11306C034FE0BC032FC09C0832D8E7EA82E05C0DB
S11306D0B82CA32C03C0B82C01C0B92CA4FE0FC0A5
S11306E0FE01E80DF11D8081803321F49A2D997E5D
S11306F0A92E09C0A2FE06C0B394B39404C08A2DE7
S1130700867809F0B394A3FC10C0A0FE06C0B2140E
S113071080F4280C922C9B180DC0B21458F4B60126
S113072080E290E076D0B394F8CFB21418F42B188A
S113073002C0982C212CA4FE0FC0B60180E390E0E7
S113074068D0A2FE16C0A1FC03C088E790E002C0F6
S113075088E590E0B6010CC08A2D867851F0A1FEA0
S113076002C08BE201C080E2A7FC8DE2B60190E0FA
S113077050D0891430F4B60180E390E04AD09A94C2
S1130780F8CF8A94F301E80DF11D8081B60190E061
S113079040D08110F6CF222009F44ECEB60180E27B
S11307A090E037D02A94F7CFF6018681978102C072
S11307B08FEF9FEF2B960FB6F894DEBF0FBECDBF21
S11307C0DF91CF911F910F91FF90EF90DF90CF9029
S11307D0BF90AF909F908F907F906F905F904F905D
S11307E03F902F900895FC010590615070400110D6
S11307F0D8F7809590958E0F9F1F0895FC01615046
S1130800704001900110D8F7809590958E0F9F1F2E
S113081008950F931F93CF93DF93FB01238121FD51
S113082003C08FEF9FEF2CC022FF16C04681578173
S1130830248135814217530744F4A081B1819D017D
S11308402F5F3F4F318320838C93268137812F5F25
S11308503F4F3783268314C08B01EC01FB010084D6
S1130860F185E02D0995892BE1F6D80116968D9135
S11308709C911797019617969C938E931697CE0189
S1130880DF91CF911F910F910895FA01AA27283083
S113089051F1203181F1E8946F936E7F6E5F7F4F49
S11308A08F4F9F4FAF4FB1E03ED0B4E03CD0670FC5
S11308B0781F891F9A1FA11D680F791F8A1F911D18
S11308C0A11D6A0F711D811D911DA11D20D009F468
S11308D068943F912AE0269F11243019305D3193AA
S11308E0DEF6CF010895462F4770405D4193B3E093
S11308F00FD0C9F7F6CF462F4F70405D4A3318F03A
S1130900495D31FD4052419302D0A9F7EACFB4E0EA
S1130910A6959795879577956795BA95C9F70097A2
S11309206105710508959B01AC010A2E0694579543
S1130930479537952795BA95C9F7620F731F841F9A
S10D0940951FA01D0895F894FFCF41
S107094A012564001B
S9030000FC

View File

@@ -126,8 +126,8 @@ void lcd_move_right(void){
void lcd_write_int(int number)
{
int length = snprintf(NULL, 0, "%d", number + 1);
int length = snprintf(NULL, 0, "%d", number);
char str[length + 1];
snprintf(str, length + 1, "%d", number + 1);
snprintf(str, length + 1, "%d", number);
lcd_write_string(str);
}

View File

@@ -28,6 +28,8 @@ enum interrupt_status {INTERRUPT_FALLING, INTERRUPT_RISING};
static enum interrupt_status int_stat = INTERRUPT_RISING;
uint16_t timer_dist = 0; // time measured by timer;
void wait_us(unsigned int us)
{
for(int i = 0; i < us; i++)
@@ -61,6 +63,9 @@ ISR(INT0_vect)
// set interrupt pin 0 on PORTD to falling edge
EICRA = 0x02;
// reset the time in timer1
TCNT1 = 0x00;
// set interrupt status
int_stat = INTERRUPT_FALLING;
} else
@@ -69,6 +74,9 @@ ISR(INT0_vect)
// set interrupt pin 0 on PORTD to rising edge
EICRA = 0x03;
// read timer1 into time_dist
timer_dist = TCNT1;
// set interrupt status
int_stat = INTERRUPT_RISING;
}
@@ -81,26 +89,34 @@ int main(void)
DDRG = 0xFF; // port g all output. pin 0 is trig, the rest is for debug
DDRD = 0x00; // port D pin 0 on input. 0 is echo and also interrupt
DDRA = 0xFF;
EICRA |= 0x03; // interrupt PORTD on pin 0, rising edge
EIMSK |= 0x01; // enable interrupt on pin 0 (INT0)
TCCR1A = 0b00000000; // initialize timer1, prescaler=256
TCCR1B = 0b00001100; // CTC compare A, RUN
sei(); // turn on interrupt system
init_4bits_mode();
_delay_ms(10);
lcd_clear();
/* Replace with your application code */
while (1)
{
ultrasonic_send_pulse();
if (int_stat == INTERRUPT_FALLING)
{
PORTA = 0xFF;
} else {
PORTA = 0x00;
}
wait_ms(100);
int distance = timer_dist * 340 / 2;
lcd_clear();
lcd_write_int(distance);
wait_ms(1000);
}
}