Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
Guilliam Lutz
2021-03-10 10:00:05 +01:00
21 changed files with 3812 additions and 1521 deletions

View File

@@ -25,7 +25,11 @@ Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "testlcd", "testlcd\testlcd.
EndProject
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "opdracht 3.2", "opdracht 3.2\opdracht 3.2.cproj", "{EB7415C6-2130-46AD-9842-612C67ADE6D4}"
EndProject
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "opdracht C", "opdracht C\opdracht C.cproj", "{2DF6F5F3-181F-430E-B49A-3D9794F91482}"
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "opdracht 2.4", "opdracht 2.4\opdracht 2.4.cproj", "{0FA0C637-5AC0-44F3-999B-49C114B97183}"
EndProject
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "opdracht 3.3", "opdracht 3.3\opdracht 3.3.cproj", "{985D5C75-F61E-49F1-A532-66A1E6141552}"
EndProject
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "opdracht 4.1", "opdracht 4.1\opdracht 4.1.cproj", "{2432E6BF-DA1E-4668-99BB-59FEA1F5B8A2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -77,10 +81,6 @@ Global
{EB7415C6-2130-46AD-9842-612C67ADE6D4}.Debug|AVR.Build.0 = Debug|AVR
{EB7415C6-2130-46AD-9842-612C67ADE6D4}.Release|AVR.ActiveCfg = Release|AVR
{EB7415C6-2130-46AD-9842-612C67ADE6D4}.Release|AVR.Build.0 = Release|AVR
{2DF6F5F3-181F-430E-B49A-3D9794F91482}.Debug|AVR.ActiveCfg = Debug|AVR
{2DF6F5F3-181F-430E-B49A-3D9794F91482}.Debug|AVR.Build.0 = Debug|AVR
{2DF6F5F3-181F-430E-B49A-3D9794F91482}.Release|AVR.ActiveCfg = Release|AVR
{2DF6F5F3-181F-430E-B49A-3D9794F91482}.Release|AVR.Build.0 = Release|AVR
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -64,3 +64,37 @@ int main(void)
}
}
void init_4bits_mode(void) {
// PORTC output mode and all low (also E and RS pin)
DDRC = 0xFF;
PORTC = 0x00;
PORTC = 0x20; // (0x28 for 2 lines)
lcd_strobe_lcd_e();
}
void init_4bits_mode(void) {
// PORTC output mode and all low (also E and RS pin)
DDRC = 0xFF;
PORTC = 0x00;
PORTC = 0x20; // function for 4-bit 1 row
lcd_strobe_lcd_e();
PORTC = 0x20; // function high nibble 4-bit 2 row
lcd_strobe_lcd_e();
PORTC = 0x80; // function low nibble 4-bit 2 row
lcd_strobe_lcd_e();
PORTC = 0x00; // function high nibble turn on visible blinking-block cursor
lcd_strobe_lcd_e();
PORTC = 0xF0; // function low nibble turn on visible blinking-block cursor
lcd_strobe_lcd_e();
PORTC = 0x00; // Entry mode set high nibble
lcd_strobe_lcd_e();
PORTC = 0x60; // Entry mode set low nibble
lcd_strobe_lcd_e();
}

View File

@@ -161,8 +161,8 @@ Disassembly of section .text.lcd_strobe_lcd_e:
12c: 86 e0 ldi r24, 0x06 ; 6
12e: 90 e0 ldi r25, 0x00 ; 0
130: 0e 94 fc 00 call 0x1f8 ; 0x1f8 <sbi_porta>
134: 89 ef ldi r24, 0xF9 ; 249
136: 90 e0 ldi r25, 0x00 ; 0
134: 83 ec ldi r24, 0xC3 ; 195
136: 99 e0 ldi r25, 0x09 ; 9
138: 01 97 sbiw r24, 0x01 ; 1
13a: f1 f7 brne .-4 ; 0x138 <lcd_strobe_lcd_e+0xc>
13c: 00 c0 rjmp .+0 ; 0x13e <lcd_strobe_lcd_e+0x12>
@@ -170,8 +170,8 @@ Disassembly of section .text.lcd_strobe_lcd_e:
140: 86 e0 ldi r24, 0x06 ; 6
142: 90 e0 ldi r25, 0x00 ; 0
144: 0e 94 f0 00 call 0x1e0 ; 0x1e0 <cbi_porta>
148: 89 ef ldi r24, 0xF9 ; 249
14a: 90 e0 ldi r25, 0x00 ; 0
148: 83 ec ldi r24, 0xC3 ; 195
14a: 99 e0 ldi r25, 0x09 ; 9
14c: 01 97 sbiw r24, 0x01 ; 1
14e: f1 f7 brne .-4 ; 0x14c <lcd_strobe_lcd_e+0x20>
150: 00 c0 rjmp .+0 ; 0x152 <lcd_strobe_lcd_e+0x26>
@@ -223,8 +223,8 @@ Disassembly of section .text.lcd_clear:
000001c6 <lcd_clear>:
1c6: 81 e0 ldi r24, 0x01 ; 1
1c8: 0e 94 bf 00 call 0x17e ; 0x17e <lcd_write_command>
1cc: 83 ef ldi r24, 0xF3 ; 243
1ce: 91 e0 ldi r25, 0x01 ; 1
1cc: 87 e8 ldi r24, 0x87 ; 135
1ce: 93 e1 ldi r25, 0x13 ; 19
1d0: 01 97 sbiw r24, 0x01 ; 1
1d2: f1 f7 brne .-4 ; 0x1d0 <lcd_clear+0xa>
1d4: 00 c0 rjmp .+0 ; 0x1d6 <lcd_clear+0x10>

View File

@@ -4,7 +4,7 @@
* Created: 24-2-2021 11:55:12
* Author: Sem
*/
#define F_CPU 10e6
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

File diff suppressed because it is too large Load Diff

View File

@@ -1,166 +1,150 @@
S01400006F7064726163687420332E322E7372656308
S113000072C000008DC000008BC0000089C00000D9
S113001087C0000085C0000083C0000081C00000CC
S11300207FC000007DC0000034C1000079C0000022
S113003077C0000075C0000073C0000071C00000EC
S11300406FC000006DC000006BC0000069C00000FC
S113005067C0000065C0000063C0000061C000000C
S11300605FC000005DC000005BC0000059C000001C
S113007057C0000055C0000053C0000051C000002C
S11300804FC000004DC000004BC00000080000003D
S1130090BE922449123EABAAAA2ABECDCCCC4C3E79
S11300A000000080BEABAAAAAA3E00000000BF0068
S11300B00000803F0000000000084178D3BB438764
S11300C0D1133D190E3CC3BD4282AD2B3E68EC8278
S11300D076BED98FE1A93E4C80EFFFBE01C4FF7FFD
S11300E03F000000000011241FBECFEFD0E1DEBFAF
S11300F0CDBF11E0A0E0B1E0E6E2FAE000E00BBF22
S113010002C007900D92A830B107D9F721E0A8E00A
S1130110B1E001C01D92AE30B207E1F701D181C454
S11301206FCF9BB321E030E002C0220F331F8A95CA
S1130130E2F7292B2BBB08959BB321E030E002C0EA
S1130140220F331F8A95E2F7209529232BBB0895AC
S113015086E090E0E6DF89EF90E00197F1F700C0D8
S1130160000086E090E0E8DF89EF90E00197F1F786
S113017000C000000895CF93C82F85BB84E090E0B1
S1130180D0DFE6DFC295C07FC5BB84E090E0C9DF65
S1130190DFDFCF910895CF93C82F85BB84E090E033
S11301A0CBDFD6DFC295C07FC5BB84E090E0C4DF5F
S11301B0CFDFCF91089581E0EEDF83EF91E00197E7
S11301C0F1F700C0000080E8E6CF0895CF938FEFE9
S11301D084BB85BB8ABB15BA1BBAC0E2C5BBB8DFFA
S11301E0C5BBB6DF80E885BBB3DF15BAB1DF80EFEE
S11301F085BBAEDF15BAACDF80E685BBA9DF82E044
S1130200CADFA6DFCF91089520E030E008C0EFEC0C
S1130210F7E03197F1F700C000002F5F3F4F281738
S11302203907ACF30895CF92DF92EF92FF92CF9308
S1130230DF93EC01BC01990F880B990B1CD1A7D15A
S113024020E030E040E85FE37FD0E2D06B017C0146
S113025061E070E0C601A3D29C0181E0C81AD10814
S11302600EC0F901EC0DFD1DCE016AE070E070D204
S1130270805D808381E0C81AD108C62FD72FDD2086
S113028084F7C901DF91CF91FF90EF90DF90CF9079
S113029008951F920F920FB60F9211240BB60F926E
S11302A02F933F934F935F936F937F938F939F937A
S11302B0AF93BF93EF93FF93809106019091070151
S11302C084BD8091080190910901019690930901E0
S11302D08093080170DF8091080190910901A3DFE8
S11302E04ADFFF91EF91BF91AF919F918F917F91E1
S11302F06F915F914F913F912F910F900BBE0F9093
S11303000FBE0F901F9018958091060190910701E0
S113031084BD87B7806487BF789487E085BD0895DE
S113032081B38F7781BB8FEF8ABB87BB4FDFECDF55
S113033084B58BBB809108019091090188BB8AE048
S113034090E062DFF5CF5058BB27AA270ED0E5C056
S1130350D6D030F0DBD020F031F49F3F11F41EF4FE
S1130360CBC00EF4E095E7FBC1C0E92FE7D080F3E2
S1130370BA17620773078407950718F071F49EF59E
S1130380FFC00EF4E0950B2EBA2FA02D0B01B9017E
S113039090010C01CA01A0011124FF27591B99F0F7
S11303A0593F50F4503E68F11A16F040A22F232F03
S11303B0342F4427585FF3CF469537952795A79553
S11303C0F0405395C9F77EF41F16BA0B620B730BFA
S11303D0840BBAF09150A1F0FF0FBB1F661F771F6B
S11303E0881FC2F70EC0BA0F621F731F841F48F420
S11303F0879577956795B795F7959E3F08F0B3CFA6
S11304009395880F08F09927EE0F9795879508958F
S113041004D06894B111B5C0089598D088F09F575E
S113042090F0B92F9927B751A0F0D1F0660F771F3C
S1130430881F991F1AF0BA95C9F712C0B13081F01C
S11304409FD0B1E008959CC0672F782F8827B85FAC
S113045039F0B93FCCF3869577956795B395D9F77D
S11304603EF490958095709561957F4F8F4F9F4F87
S11304700895E89409C097FB3EF490958095709593
S113048061957F4F8F4F9F4F9923A9F0F92F96E9DC
S1130490BB279395F695879577956795B795F11151
S11304A0F8CFFAF4BB0F11F460FF1BC06F5F7F4FEE
S11304B08F4F9F4F16C0882311F096E911C0772300
S11304C021F09EE8872F762F05C0662371F096E809
S11304D0862F70E060E02AF09A95660F771F881FD8
S11304E0DAF7880F9695879597F9089597F99F6796
S11304F080E870E060E008959FEF80EC08950024A8
S11305000A941616170618060906089500240A9474
S113051012161306140605060895092E0394000CFA
S113052011F4882352F0BB0F40F4BF2B11F460FF89
S113053004C06F5F7F4F8F4F9F4F089557FD9058B2
S1130540440F551F59F05F3F71F04795880F97FB93
S1130550991F61F09F3F79F087950895121613064D
S11305601406551FF2CF4695F1DF08C0161617067C
S11305701806991FF1CF86957105610508940895B1
S1130580E894BB2766277727CB0197F908950AD00B
S113059029ED3BE54EED5EE345C00EF0A6C0ACCFC1
S11305A06894A4CFD3DFC8F39923D1F3C6F3DF93C0
S11305B0CF931F930F93FF92C92FDD2788232AF02F
S11305C02197660F771F881FDAF720E030E040E8B4
S11305D05FEB9FE3883920F0803E30F021968F77DF
S11305E0B3DEECE8F0E003C0AFDEE9EBF0E08BD083
S11305F08B01BE01EC01FB2E6F5771097595771FB6
S1130600880B990B38DF28E132E741E35FE316D02A
S1130610AF2D9801AE01FF900F911F91CF91DF9103
S1130620A4DE7BCF0BD079CF6ADF28F06FDF18F020
S1130630952309F05BCF60CF1124A3CF7FDFA0F314
S1130640959FD1F3950F50E0551F629FF001729F63
S1130650BB27F00DB11D639FAA27F00DB11DAA1F82
S1130660649F6627B00DA11D661F829F2227B00DCF
S1130670A11D621F739FB00DA11D621F839FA00D5A
S1130680611D221F749F3327A00D611D231F849FAA
S1130690600D211D822F762F6A2F11249F57504001
S11306A08AF0E1F088234AF0EE0FFF1FBB1F661F9C
S11306B0771F881F91505040A9F79E3F510570F055
S11306C015CF5FCF5F3FECF3983EDCF386957795CB
S11306D06795B795F795E7959F5FC1F7FE2B880F50
S11306E0911D9695879597F908959F3F31F0915004
S11306F020F4879577956795B795880F911D969502
S1130700879597F90895DF93CF931F930F93FF92E3
S1130710EF92DF927B018C01689405C0DA2EEF0121
S11307208DDFFE01E894A591259135914591559170
S1130730AEF3EF011ADEFE019701A801DA9479F70E
S1130740DF90EF90FF900F911F91CF91DF9108956B
S113075097FB072E16F4009406D077FD08D00BD033
S113076007FC05D03EF4909581959F4F08957095B0
S113077061957F4F0895AA1BBB1B51E107C0AA1FB7
S1130780BB1FA617B70710F0A61BB70B881F991F2E
S11307905A95A9F780959095BC01CD0108950F93C2
S11307A01F93CF93DF93869F8001879F100D969FA1
S11307B0100D1124C8010DD0EC01009721F0A801FF
S11307C060E070E027D1CE01DF91CF911F910F91AE
S11307D008950F931F93CF93DF938230910510F404
S11307E082E090E0E0910C01F0910D0120E030E016
S11307F0A0E0B0E0309719F140815181028113816A
S113080048175907C8F08417950769F4109731F011
S113081012960C93129713961C9327C000930C0105
S113082010930D0122C02115310519F04217530709
S113083018F49A01BD01EF01DF01F801DBCF2115A6
S11308403105F9F0281B390B2430310580F48A81F5
S11308509B816115710521F0FB019383828304C0A0
S113086090930D0180930C01FE01329644C0FE0169
S1130870E20FF31F81939193225031093983288326
S11308803AC020910A0130910B01232B41F42091AD
S113089002013091030130930B0120930A0120914E
S11308A00001309101012115310541F42DB73EB706
S11308B04091040150910501241B350BE0910A017C
S11308C0F0910B01E217F307A0F42E1B3F0B28173E
S11308D0390778F0AC014E5F5F4F2417350748F0B5
S11308E04E0F5F1F50930B0140930A018193919324
S11308F002C0E0E0F0E0CF01DF91CF911F910F91B2
S11309000895CF93DF93009709F481C0FC013297D7
S113091013821282A0910C01B0910D01109781F401
S113092020813181820F931F20910A0130910B01A4
S11309302817390751F5F0930B01E0930A0167C0BA
S1130940ED0120E030E0CE17DF0740F44A815B81FF
S11309509E0141155105F1F0EA01F5CFD383C2831D
S113096040815181840F951FC817D90759F4888194
S11309709981840F951F0296918380838A819B813C
S1130980938382832115310529F4F0930D01E093BB
S11309900C013DC0E901FB83EA8349915991C40FDD
S11309A0D51FEC17FD0761F480819181840F951F99
S11309B00296E90199838883828193819B838A8348
S11309C0E0E0F0E012968D919C911397009719F056
S11309D0FD01DC01F7CF8D919C9111979D012E5F54
S11309E03F4F820F931F20910A0130910B0128176A
S11309F0390769F4309729F410920D0110920C0113
S1130A0002C013821282B0930B01A0930A01DF91FA
S1130A10CF910895DC0101C06D9341505040E0F73F
S1090A200895F894FFCFD5
S10B0A2600000E012000FFFF97
S113000045C0000060C000005EC000005CC000008D
S11300105AC0000058C0000056C0000054C0000080
S113002052C0000050C00000DDC000004CC0000001
S11300304AC0000048C0000046C0000044C00000A0
S113004042C0000040C000003EC000003CC00000B0
S11300503AC0000038C0000036C0000034C00000C0
S113006032C0000030C000002EC000002CC00000D0
S11300702AC0000028C0000026C0000024C00000E0
S113008022C0000020C000001EC0000011241FBEBA
S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0E2E2FE
S11300A0F9E000E00BBF02C007900D92AA30B1073F
S11300B0D9F721E0AAE0B1E001C01D92AC30B2074B
S11300C0E1F729D12CC49CCF9BB321E030E002C0DE
S11300D0220F331F8A95E2F7292B2BBB08959BB37C
S11300E021E030E002C0220F331F8A95E2F7209509
S11300F029232BBB089586E090E0E6DF83EC99E0AA
S11301000197F1F700C0000086E090E0E8DF83EC9F
S113011099E00197F1F700C000000895CF93C82F2C
S113012085BB84E090E0D0DFE6DFC295C07FC5BB2D
S113013084E090E0C9DFDFDFCF910895CF93C82F2B
S113014085BB84E090E0CBDFD6DFC295C07FC5BB22
S113015084E090E0C4DFCFDFCF91089581E0EEDF4B
S113016087E893E10197F1F700C0000080E8E6CF4B
S11301700895CF938FEF84BB85BB8ABB15BA1BBA96
S1130180C0E2C5BBB8DFC5BBB6DF80E885BBB3DF63
S113019015BAB1DF80EF85BBAEDF15BAACDF80E600
S11301A085BBA9DF82E0CADFA6DFCF910895CF9394
S11301B0DF93EC0102C0B2DF219688818111FBCF6D
S11301C0DF91CF91089520E030E008C0EFECF7E034
S11301D03197F1F700C000002F5F3F4F2817390710
S11301E0ACF308951F920F920FB60F9211240BB621
S11301F00F92CF92DF92EF92FF920F931F932F9360
S11302003F934F935F936F937F938F939F93AF939A
S1130210BF93EF93FF93CF93DF93CDB7DEB7CDB604
S1130220DEB68091000184BD80910A0190910B019A
S1130230019690930B0180930A0190DF80910A014B
S113024090910B0101969F938F930F2EF2E0EF2E66
S1130250F1E0FF2EF02DFF92EF921F921F921F925A
S11302601F9274D001962DB73EB7285F3F4F0FB64B
S1130270F8943EBF0FBE2DBF281B390B0FB6F89460
S11302803EBF0FBE2DBF0DB71EB70F5F1F4F20918E
S11302900A0130910B012F5F3F4F3F932F93FF9241
S11302A0EF929F938F931F930F9350D0802F912F92
S11302B07EDF8DB79EB708960FB6F8949EBF0FBE2B
S11302C08DBF0FB6F894DEBE0FBECDBEDF91CF91C9
S11302D0FF91EF91BF91AF919F918F917F916F911A
S11302E05F914F913F912F911F910F91FF90EF904C
S11302F0DF90CF900F900BBE0F900FBE0F901F900A
S113030018958091000184BD87B7806487BF789475
S113031087E085BD089581B38F7781BB8FEF8ABB5A
S113032087BB27DF8FE19EE40197F1F700C000004F
S113033015DF85E091E03BDFE4DF84B58BBB809182
S11303400A0188BB8AE090E03EDFF7CF0F931F934A
S1130350CF93DF93CDB7DEB72E970FB6F894DEBFF9
S11303600FBECDBF0D891E898F89988D26E02C8301
S11303701A83098397FF02C080E090E801979E8367
S11303808D83AE01455E5F4F698D7A8DCE010196F6
S113039019D04D815E8157FD0AC02F8138854217DF
S11303A053070CF49A01F801E20FF31F10822E9602
S11303B00FB6F894DEBF0FBECDBFDF91CF911F9172
S11303C00F9108952F923F924F925F926F927F9276
S11303D08F929F92AF92BF92CF92DF92EF92FF9251
S11303E00F931F93CF93DF93CDB7DEB72B970FB641
S11303F0F894DEBF0FBECDBF6C017B018A01FC0106
S113040017821682838181FFBFC1CE0101963C0110
S1130410F6019381F70193FD859193FF81917F010B
S1130420882309F4ADC1853239F493FD859193FF96
S113043081917F01853221F4B60190E0D6D1E8CFD5
S1130440912C212C312CFFE1F315D8F08B3279F06B
S113045038F4803279F08332A1F4232D20611DC059
S11304608D3261F0803369F4232D216016C0832D11
S11304708260382EE32DE4603E2E2AC0F32DF8600E
S11304801DC037FC2DC020ED280F2A3040F08E32DD
S1130490B9F436FC75C1232D2064322E19C036FE02
S11304A006C08AE0989E200D1124922E11C0EAE025
S11304B02E9E200D1124222EF32DF0623F2E08C013
S11304C08C3621F4832D8068382E02C0883641F49E
S11304D0F70193FD859193FF81917F018111B3CF42
S11304E0982F9F7D9554933028F40C5F1F4F9FE302
S11304F099830DC0833631F0833771F0833509F069
S113050055C020C0F801808189830E5F1F4F882465
S11305108394912C530112C02801F2E04F0E511C18
S1130520F801A080B18036FE03C0692D70E002C0DE
S11305306FEF7FEFC5014ED14C018201F32DFF77A0
S11305403F2E15C0280122E0420E511CF801A08064
S1130550B18036FE03C0692D70E002C06FEF7FEFFB
S1130560C5012DD14C01F32DF0683F2E820133FCDF
S113057019C0822D90E088169906A0F4B60180E295
S113058090E033D12A94F5CFF50137FC859137FEFD
S113059081915F01B60190E028D121102A9421E0D5
S11305A0821A91088114910479F7E1C0843611F01C
S11305B0893639F5F80137FE07C06081718182817F
S11305C093810C5F1F4F08C060817181072E000C5E
S11305D0880B990B0E5F1F4FF32DFF763F2E97FF6D
S11305E009C090958095709561957F4F8F4F9F4F6F
S11305F0F0683F2E2AE030E0A30133D1882E86181C
S113060044C0853731F4232D2F7EB22E2AE030E00A
S113061025C0932D997FB92E8F36C1F018F48835F3
S113062079F0AEC0803719F0883721F0A9C0E92FDE
S1130630E061BE2EB4FE0DC0FB2DF460BF2E09C0D8
S113064034FE0AC0292F2660B22E06C028E030E00E
S113065005C020E130E002C020E132E0F801B7FE3D
S113066007C060817181828193810C5F1F4F06C036
S11306706081718180E090E00E5F1F4FA301F1D093
S1130680882E8618FB2DFF773F2E36FE0DC0232DB6
S11306902E7FA22E891458F434FE0BC032FC09C0FC
S11306A0832D8E7EA82E05C0B82CA32C03C0B82C95
S11306B001C0B92CA4FE0FC0FE01E80DF11D80811C
S11306C0803321F49A2D997EA92E09C0A2FE06C07A
S11306D0B394B39404C08A2D867809F0B394A3FC30
S11306E010C0A0FE06C0B21480F4280C922C9B18F3
S11306F00DC0B21458F4B60180E290E076D0B39401
S1130700F8CFB21418F42B1802C0982C212CA4FE94
S11307100FC0B60180E390E068D0A2FE16C0A1FC31
S113072003C088E790E002C088E590E0B6010CC001
S11307308A2D867851F0A1FE02C08BE201C080E2CE
S1130740A7FC8DE2B60190E050D0891430F4B601D4
S113075080E390E04AD09A94F8CF8A94F301E80DAC
S1130760F11D8081B60190E040D08110F6CF2220A7
S113077009F44ECEB60180E290E037D02A94F7CF48
S1130780F6018681978102C08FEF9FEF2B960FB6FB
S1130790F894DEBF0FBECDBFDF91CF911F910F91B3
S11307A0FF90EF90DF90CF90BF90AF909F908F908D
S11307B07F906F905F904F903F902F900895FC0131
S11307C00590615070400110D8F7809590958E0F78
S11307D09F1F0895FC016150704001900110D8F7EB
S11307E0809590958E0F9F1F08950F931F93CF931D
S11307F0DF93FB01238121FD03C08FEF9FEF2CC00A
S113080022FF16C046815781248135814217530740
S113081044F4A081B1819D012F5F3F4F3183208338
S11308208C93268137812F5F3F4F3783268314C0F3
S11308308B01EC01FB010084F185E02D0995892BE6
S1130840E1F6D80116968D919C911797019617960B
S11308509C938E931697CE01DF91CF911F910F91A8
S11308600895FA01AA27283051F1203181F1E89442
S11308706F936E7F6E5F7F4F8F4F9F4FAF4FB1E08F
S11308803ED0B4E03CD0670F781F891F9A1FA11D8A
S1130890680F791F8A1F911DA11D6A0F711D811D8B
S11308A0911DA11D20D009F468943F912AE0269F50
S11308B011243019305D3193DEF6CF010895462FAF
S11308C04770405D4193B3E00FD0C9F7F6CF462F90
S11308D04F70405D4A3318F0495D31FD40524193F9
S11308E002D0A9F7EACFB4E0A695979587957795B6
S11308F06795BA95C9F700976105710508959B013D
S1130900AC010A2E06945795479537952795BA95C5
S1130910C9F7620F731F841F951FA01D0895F894D3
S1050920FFCF03
S10D0922FFFF256400796565740089
S9030000FC

View File

@@ -4,7 +4,7 @@
* Created: 24-2-2021 11:55:12
* Author: Sem
*/
#define F_CPU 10e6
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

View File

@@ -6,6 +6,8 @@
*/
#define F_CPU 8e6
#include <stdlib.h>
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
@@ -33,15 +35,19 @@ char * toArray(int number)
return numberArray;
}
volatile int TimerPreset = -1; // 0xF6, 10 till overflow
volatile int number = 0;
int TimerPreset = -1; // 0xF6, 10 till overflow
int number = 0;
// Interrupt routine timer2 overflow
ISR( TIMER2_OVF_vect ) {
TCNT2 = TimerPreset; // Preset value
number++; // Increment counter
lcd_clear();
lcd_write_character(toArray(number));
int length = snprintf(NULL, 0, "%d", number + 1);
char str[length + 1];
snprintf(str, length + 1, "%d", number + 1);
lcd_write_string(str);
}
// Initialize timer2
@@ -59,6 +65,11 @@ int main(void) {
DDRB = 0xFF; // set PORTB for output (shows tenthvalue)
init_4bits_mode();
_delay_ms(10);
lcd_clear();
lcd_write_string("yeet");
timer2Init();

View File

@@ -0,0 +1,139 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL := cmd.exe
RM := rm -rf
USER_OBJS :=
LIBS :=
PROJ :=
O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
LIB_DEP:=
LINKER_SCRIPT_DEP:=
# Every subdirectory with source files must be described here
SUBDIRS :=
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../lcd_control.c \
../main.c
PREPROCESSING_SRCS +=
ASM_SRCS +=
OBJS += \
lcd_control.o \
main.o
OBJS_AS_ARGS += \
lcd_control.o \
main.o
C_DEPS += \
lcd_control.d \
main.d
C_DEPS_AS_ARGS += \
lcd_control.d \
main.d
OUTPUT_FILE_PATH +=opdracht\ 4.1.elf
OUTPUT_FILE_PATH_AS_ARGS +="opdracht 4.1.elf"
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:= ./makedep.mk
LIB_DEP+=
LINKER_SCRIPT_DEP+=
# AVR32/GNU C Compiler
./lcd_control.o: .././lcd_control.c
@echo Building file: $<
@echo Invoking: AVR/GNU C Compiler : 5.4.0
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -mrelax -g2 -Wall -mmcu=atmega128 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
./main.o: .././main.c
@echo Building file: $<
@echo Invoking: AVR/GNU C Compiler : 5.4.0
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -mrelax -g2 -Wall -mmcu=atmega128 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
# AVR32/GNU Preprocessing Assembler
# AVR32/GNU Assembler
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP)
@echo Building target: $@
@echo Invoking: AVR/GNU Linker : 5.4.0
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="opdracht 4.1.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mrelax -mmcu=atmega128 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128"
@echo Finished building target: $@
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "opdracht 4.1.elf" "opdracht 4.1.hex"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "opdracht 4.1.elf" "opdracht 4.1.eep" || exit 0
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "opdracht 4.1.elf" > "opdracht 4.1.lss"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "opdracht 4.1.elf" "opdracht 4.1.srec"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "opdracht 4.1.elf"
# Other Targets
clean:
-$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)
-$(RM) $(C_DEPS_AS_ARGS)
rm -rf "opdracht 4.1.elf" "opdracht 4.1.a" "opdracht 4.1.hex" "opdracht 4.1.lss" "opdracht 4.1.eep" "opdracht 4.1.map" "opdracht 4.1.srec" "opdracht 4.1.usersignatures"

View File

@@ -0,0 +1,8 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
lcd_control.c
main.c

View File

@@ -0,0 +1 @@
:00000001FF

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,147 @@
S01400006F7064726163687420342E312E7372656308
S113000045C0000058C0000056C0000054C00000A5
S113001052C0000050C000004EC000004CC00000A0
S11300204AC000003BC1000046C0000044C00000BC
S113003042C0000040C000003EC000003CC00000C0
S11300403AC0000038C0000036C0000034C00000D0
S113005032C0000030C000002EC000002CC00000E0
S11300602AC0000028C0000026C0000024C00000F0
S113007022C0000020C000001EC000001CC0000000
S11300801AC0000018C0000016C0000011241FBED2
S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0E4EFEF
S11300A0F8E000E00BBF02C007900D92A430B10746
S11300B0D9F711D11DC4A4CF9BB321E030E002C015
S11300C0220F331F8A95E2F7292B2BBB08959BB38C
S11300D021E030E002C0220F331F8A95E2F7209519
S11300E029232BBB089586E090E0E6DF89EF90E0BA
S11300F00197F1F700C0000086E090E0E8DF89EFA7
S113010090E00197F1F700C000000895CF93C82F45
S113011085BB84E090E0D0DFE6DFC295C07FC5BB3D
S113012084E090E0C9DFDFDFCF910895CF93C82F3B
S113013085BB84E090E0CBDFD6DFC295C07FC5BB32
S113014084E090E0C4DFCFDFCF91089581E0EEDF5B
S113015083EF91E00197F1F700C0000080E8E6CF5B
S11301600895CF938FEF84BB85BB8ABB15BA1BBAA6
S1130170C0E2C5BBB8DFC5BBB6DF80E885BBB3DF73
S113018015BAB1DF80EF85BBAEDF15BAACDF80E610
S113019085BBA9DF82E0CADFA6DFCF910895CF93A4
S11301A0DF93EC0102C0B2DF219688818111FBCF7D
S11301B0DF91CF910895AF92BF92CF92DF92EF92E9
S11301C0FF920F931F93CF93DF93CDB7DEB76C01EC
S11301D0ADB6BEB601969F938F930F2EF0E0EF2E2F
S11301E0F1E0FF2EF02DFF92EF921F921F921F92CB
S11301F01F9295D001962DB73EB7285F3F4F0FB69B
S1130200F8943EBF0FBE2DBF281B390B0FB6F894D0
S11302103EBF0FBE2DBF0DB71EB70F5F1F4FDF923E
S1130220CF92FF92EF929F938F931F930F9377D068
S1130230802F912FB4DF8DB79EB708960FB6F89430
S11302409EBF0FBE8DBF0FB6F894BEBE0FBEADBE2F
S1130250DF91CF911F910F91FF90EF90DF90CF909E
S1130260BF90AF90089520E030E008C0EFECF7E0D5
S11302703197F1F700C000002F5F3F4F281739076F
S1130280ACF3089580EE87B986E886B9089587B7F8
S1130290806887BF789483E085BD08951F920F928C
S11302A00FB60F9211248F9386B1806486B98F9113
S11302B00F900FBE0F901F90189585B190E0880F96
S11302C0991F880F991F24B122952695269523708E
S11302D0820F911D0895109261008FEF82B9D2DFD1
S11302E040DF8FE19EE40197F1F700C000002EDFAC
S11302F0CEDF80E090E025B122BB24B123B9C5B1A3
S1130300D0E08C179D0731F021DF8AE090E0ABDF6D
S1130310D4DF51DF84E690E0A6DFCE01ECCF0F936B
S11303201F93CF93DF93CDB7DEB72E970FB6F89414
S1130330DEBF0FBECDBF0D891E898F89988D26E043
S11303402C831A83098397FF02C080E090E8019709
S11303509E838D83AE01455E5F4F698D7A8DCE019C
S1130360019619D04D815E8157FD0AC02F813885D1
S1130370421753070CF49A01F801E20FF31F10829D
S11303802E960FB6F894DEBF0FBECDBFDF91CF918E
S11303901F910F9108952F923F924F925F926F9207
S11303A07F928F929F92AF92BF92CF92DF92EF9201
S11303B0FF920F931F93CF93DF93CDB7DEB72B97A5
S11303C00FB6F894DEBF0FBECDBF6C017B018A016E
S11303D0FC0117821682838181FFBFC1CE01019681
S11303E03C01F6019381F70193FD859193FF81917F
S11303F07F01882309F4ADC1853239F493FD8591D9
S113040093FF81917F01853221F4B60190E0D6D12A
S1130410E8CF912C212C312CFFE1F315D8F08B324D
S113042079F038F4803279F08332A1F4232D2061FD
S11304301DC08D3261F0803369F4232D216016C014
S1130440832D8260382EE32DE4603E2E2AC0F32DE6
S1130450F8601DC037FC2DC020ED280F2A3040F075
S11304608E32B9F436FC75C1232D2064322E19C0A6
S113047036FE06C08AE0989E200D1124922E11C0EB
S1130480EAE02E9E200D1124222EF32DF0623F2E41
S113049008C08C3621F4832D8068382E02C088363B
S11304A041F4F70193FD859193FF81917F018111BF
S11304B0B3CF982F9F7D9554933028F40C5F1F4F32
S11304C09FE399830DC0833631F0833771F0833510
S11304D009F055C020C0F801808189830E5F1F4F49
S11304E088248394912C530112C02801F2E04F0E0A
S11304F0511CF801A080B18036FE03C0692D70E064
S113050002C06FEF7FEFC5014ED14C018201F32D84
S1130510FF773F2E15C0280122E0420E511CF8013E
S1130520A080B18036FE03C0692D70E002C06FEF79
S11305307FEFC5012DD14C01F32DF0683F2E8201D0
S113054033FC19C0822D90E088169906A0F4B601F8
S113055080E290E033D12A94F5CFF50137FC859100
S113056037FE81915F01B60190E028D121102A94D1
S113057021E0821A91088114910479F7E1C084364C
S113058011F0893639F5F80137FE07C060817181B1
S1130590828193810C5F1F4F08C060817181072E97
S11305A0000C880B990B0E5F1F4FF32DFF763F2E27
S11305B097FF09C090958095709561957F4F8F4FF7
S11305C09F4FF0683F2E2AE030E0A30133D1882EFC
S11305D0861844C0853731F4232D2F7EB22E2AE0AD
S11305E030E025C0932D997FB92E8F36C1F018F4D1
S11305F0883579F0AEC0803719F0883721F0A9C06A
S1130600E92FE061BE2EB4FE0DC0FB2DF460BF2EB9
S113061009C034FE0AC0292F2660B22E06C028E085
S113062030E005C020E130E002C020E132E0F80112
S1130630B7FE07C060817181828193810C5F1F4F77
S113064006C06081718180E090E00E5F1F4FA301BE
S1130650F1D0882E8618FB2DFF773F2E36FE0DC075
S1130660232D2E7FA22E891458F434FE0BC032FCA5
S113067009C0832D8E7EA82E05C0B82CA32C03C0E0
S1130680B82C01C0B92CA4FE0FC0FE01E80DF11D69
S11306908081803321F49A2D997EA92E09C0A2FE6F
S11306A006C0B394B39404C08A2D867809F0B39439
S11306B0A3FC10C0A0FE06C0B21480F4280C922C37
S11306C09B180DC0B21458F4B60180E290E076D0C5
S11306D0B394F8CFB21418F42B1802C0982C212C20
S11306E0A4FE0FC0B60180E390E068D0A2FE16C05D
S11306F0A1FC03C088E790E002C088E590E0B60161
S11307000CC08A2D867851F0A1FE02C08BE201C094
S113071080E2A7FC8DE2B60190E050D0891430F459
S1130720B60180E390E04AD09A94F8CF8A94F3011A
S1130730E80DF11D8081B60190E040D08110F6CF24
S1130740222009F44ECEB60180E290E037D02A94FC
S1130750F7CFF6018681978102C08FEF9FEF2B962A
S11307600FB6F894DEBF0FBECDBFDF91CF911F91BE
S11307700F91FF90EF90DF90CF90BF90AF909F903C
S11307808F907F906F905F904F903F902F9008953F
S1130790FC010590615070400110D8F78095909548
S11307A08E0F9F1F0895FC0161507040019001104D
S11307B0D8F7809590958E0F9F1F08950F931F93E0
S11307C0CF93DF93FB01238121FD03C08FEF9FEFC4
S11307D02CC022FF16C046815781248135814217DF
S11307E0530744F4A081B1819D012F5F3F4F3183B2
S11307F020838C93268137812F5F3F4F3783268355
S113080014C08B01EC01FB010084F185E02D0995F6
S1130810892BE1F6D80116968D919C911797019634
S113082017969C938E931697CE01DF91CF911F91CB
S11308300F910895FA01AA27283051F1203181F14E
S1130840E8946F936E7F6E5F7F4F8F4F9F4FAF4FD4
S1130850B1E03ED0B4E03CD0670F781F891F9A1FE7
S1130860A11D680F791F8A1F911DA11D6A0F711D9B
S1130870811D911DA11D20D009F468943F912AE0A7
S1130880269F11243019305D3193DEF6CF0108958F
S1130890462F4770405D4193B3E00FD0C9F7F6CFC0
S11308A0462F4F70405D4A3318F0495D31FD405288
S11308B0419302D0A9F7EACFB4E0A695979587951E
S11308C077956795BA95C9F70097610571050895FD
S11308D09B01AC010A2E06945795479537952795A9
S11308E0BA95C9F7620F731F841F951FA01D089541
S10708F0F894FFCFA6
S10708F42564000073
S9030000FC

View File

@@ -0,0 +1,130 @@
/*
* lcd_controlc.c
*
* Created: 24-2-2021 11:55:12
* Author: Sem
*/
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "lcd_control.h"
void _delay_ms(double __ms);
void lcd_clear() {
lcd_write_command (0x01); //Leeg display
_delay_ms(2);
lcd_write_command (0x80); //Cursor terug naar start
}
void lcd_strobe_lcd_e(void) {
sbi_porta(LCD_E); // E high
_delay_ms(1);
cbi_porta(LCD_E); // E low
_delay_ms(1);
}
void sbi_portc(int index){
PORTC |= (1<<index);
}
void cbi_portc(int index){
PORTC &= ~(1<<index);
}
void sbi_porta(int index){
PORTA |= (1<<index);
}
void cbi_porta(int index){
PORTA &= ~(1<<index);
}
void init_4bits_mode(void) {
// PORTC output mode and all low (also E and RS pin)
// Init I/O
DDRC = 0xFF; // PORTD(7) output, PORTD(6:0) input
PORTC = 0xFF;
DDRA = 0xFF;
PORTC = 0x00;
PORTA = 0x00;
PORTC = 0x20; // function for 4-bit 1 row
lcd_strobe_lcd_e();
PORTC = 0x20; // function high nibble 4-bit 2 row
lcd_strobe_lcd_e();
PORTC = 0x80; // function low nibble 4-bit 2 row
lcd_strobe_lcd_e();
PORTC = 0x00; // function high nibble turn on visible blinking-block cursor
lcd_strobe_lcd_e();
PORTC = 0xF0; // function low nibble turn on visible blinking-block cursor
lcd_strobe_lcd_e();
PORTC = 0x00; // Entry mode set high nibble
lcd_strobe_lcd_e();
PORTC = 0x60; // Entry mode set low nibble
lcd_strobe_lcd_e();
// return home
lcd_write_command(0x02);
lcd_strobe_lcd_e();
}
void lcd_write_integer(int number){
int length = snprintf(NULL, 0, "%d", number + 1);
char str[length + 1];
snprintf(str, length + 1, "%d", number);
lcd_write_string(str);
}
void lcd_write_character(unsigned char byte){
//upper nibble
PORTC = byte;
sbi_porta(LCD_RS);
lcd_strobe_lcd_e();
//lower nibble
PORTC = (byte<<4);
sbi_porta(LCD_RS);
lcd_strobe_lcd_e();
}
void lcd_write_command(unsigned char byte){
//upper nibble
PORTC = byte;
cbi_porta(LCD_RS);
lcd_strobe_lcd_e();
//lower nibble
PORTC = (byte<<4);
cbi_porta(LCD_RS);
lcd_strobe_lcd_e();
}
void lcd_write_string(const char *str) {
for(;*str; str++){
lcd_write_character(*str);
}
}
void lcd_move_right(void){
lcd_write_command(0x1E);
}

View File

@@ -0,0 +1,31 @@
/*
* lcd_control.h
*
* Created: 24-2-2021 11:56:16
* Author: Sem
*/
#ifndef LCD_CONTROL_H_
#define LCD_CONTROL_H_
#define LCD_E 6
#define LCD_RS 4
void _delay_ms(double __ms);
void lcd_strobe_lcd_e(void);
void sbi_portc(int index);
void cbi_portc(int index);
void sbi_porta(int index);
void cbi_porta(int index);
void init_4bits_mode(void);
void lcd_write_string(const char *str);
void lcd_write_character(unsigned char byte);
void lcd_write_command(unsigned char byte);
void lcd_write_integer(int number);
void lcd_move_right(void);
void lcd_clear();
#endif /* LCD_CONTROL_H_ */

View File

@@ -0,0 +1,83 @@
/*
* opdracht 4.1.c
*
* Created: 03-Mar-21 9:26:31 AM
* Author : lemms
*/
#define F_CPU 8e6
#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "lcd_control.h"
#define BIT(x) (1 << (x))
void wait( int ms ) {
for (int tms=0; tms<ms; tms++) {
_delay_ms( 1 ); // library function (max 30 ms at 8MHz)
}
}
void adcInit(){
ADMUX = 0b11100000; // internal reference: 2.56V and SEI on ADC0 and left-adjusted.
ADCSRA = 0b10000110; // enable ADC. No free-run. Clock 64 D-factor.
}
void timer2Init( void ) {
TIMSK |= BIT(7); // T2 compare match interrupt enable
sei(); // turn_on interrupt all
TCCR2 = 0b00000011; // Initialize T2: timer, pre-scaler=64
}
ISR( TIMER2_COMP_vect ) {
ADCSRA |= BIT(6);
}
int getADCValue(){
int value = 0;
value = ADCH;
value <<= 2;
value += (ADCL >> 6);
return value;
}
int main(void)
{
int previousValue = 0;
/* Replace with your application code */
DDRF = 0x00; // set port F input.
DDRE = 0xFF; // all port A output.
adcInit();
init_4bits_mode();
_delay_ms(10);
lcd_clear();
timer2Init();
while (1)
{
PORTD = ADCH;
PORTE = ADCL;
int number = ADCH;
if(previousValue != number){
lcd_clear();
wait(10);
lcd_write_integer(getADCValue());
}
previousValue = number;
wait(100);
}
}

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
<ProjectComponents>
<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<CApiVersion></CApiVersion>
<CBundle></CBundle>
<CClass>Device</CClass>
<CGroup>Startup</CGroup>
<CSub></CSub>
<CVariant></CVariant>
<CVendor>Atmel</CVendor>
<CVersion>1.6.0</CVersion>
<DefaultRepoPath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs</DefaultRepoPath>
<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<Description></Description>
<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\</AbsolutePath>
<Attribute></Attribute>
<Category>include</Category>
<Condition>C</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>include/</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\avr\iom128.h</AbsolutePath>
<Attribute></Attribute>
<Category>header</Category>
<Condition>C</Condition>
<FileContentHash>JdJ7J9I/SJh965SEyyyVYw==</FileContentHash>
<FileVersion></FileVersion>
<Name>include/avr/iom128.h</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.c</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>ocUBw/Ju1i9iTulaRbeRxg==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.c</Name>
<SelectString>Main file (.c)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.cpp</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>mkKaE95TOoATsuBGv6jmxg==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.cpp</Name>
<SelectString>Main file (.cpp)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128</AbsolutePath>
<Attribute></Attribute>
<Category>libraryPrefix</Category>
<Condition>GCC</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>gcc/dev/atmega128</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
</Files>
<PackName>ATmega_DFP</PackName>
<PackPath>C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/Atmel.ATmega_DFP.pdsc</PackPath>
<PackVersion>1.6.364</PackVersion>
<PresentInProject>true</PresentInProject>
<ReferenceConditionId>ATmega128</ReferenceConditionId>
<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string></d4p1:string>
</RteComponents>
<Status>Resolved</Status>
<VersionMode>Fixed</VersionMode>
<IsComponentInAtProject>true</IsComponentInAtProject>
</ProjectComponent>
</ProjectComponents>
</Store>

View File

@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>7.0</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>{2432e6bf-da1e-4668-99bb-59fea1f5b8a2}</ProjectGuid>
<avrdevice>ATmega128</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>opdracht 4.1</AssemblyName>
<Name>opdracht 4.1</Name>
<RootNamespace>opdracht 4.1</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<CacheFlash>true</CacheFlash>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress />
<UncachedRange />
<preserveEEPROM>true</preserveEEPROM>
<OverrideVtorValue />
<BootSegment>2</BootSegment>
<ResetRule>0</ResetRule>
<eraseonlaunchrule>0</eraseonlaunchrule>
<EraseKey />
<AsfFrameworkConfig>
<framework-data xmlns="">
<options />
<configurations />
<files />
<documentation help="" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.49.1" />
</dependencies>
</framework-data>
</AsfFrameworkConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega128 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128"</avrgcc.common.Device>
<avrgcc.common.optimization.RelaxBranches>True</avrgcc.common.optimization.RelaxBranches>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\</Value>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega128 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128"</avrgcc.common.Device>
<avrgcc.common.optimization.RelaxBranches>True</avrgcc.common.optimization.RelaxBranches>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize debugging experience (-Og)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\</Value>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
<avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="lcd_control.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="lcd_control.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="main.c">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>

View File

@@ -0,0 +1,67 @@
/*
* opdracht 4.b1.c
*
* Created: 3-3-2021 10:54:49
* Author : Sem
*/
/************************************************************************/
/* Verander het programma (voor kanaal 3 en voor 8 bits) zodat het alleen een AD-conversie uitvoert
als jij dat wilt, dus op aanvraag. Maak daarvoor in main() een eindeloze lus met een wachtfunctie
en een start voor de ADC (Zie ook code in de repository). */
/************************************************************************/
#define F_CPU 10e6
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define BIT(x) (1 << (x))
// wait(): busy waiting for 'ms' millisecond
// Used library: util/delay.h
void wait( int ms )
{
for (int tms=0; tms<ms; tms++)
{
_delay_ms( 1 ); // library function (max 30 ms at 8MHz)
}
}
// Initialize ADC: 10-bits (left justified), no free running
void adcInit( void )
{
sei(); // enable interrupts
ADMUX = 0b01100011; // AREF=VCC, result left adjusted, channel3 at pin PF3
ADCSRA = 0b10001110; // ADC-enable, start conversion mode, no free running, interrupt enable
}
/************************************************************************/
/* starts AD converstion by setting bit 6 in ADCSRA to 1 */
/************************************************************************/
void startConversion(void) {
ADCSRA |= BIT(6);
}
// Main program: ADC at PF1
int main( void )
{
DDRF = 0x00; // set PORTF for input (ADC)
DDRA = 0xFF; // set PORTA for output
DDRB = 0xFF; // set PORTB for output
adcInit(); // initialize ADC
while (1)
{
PORTB = ADCL; // Show MSB/LSB (bit 10:0) of ADC
PORTA = ADCH;
startConversion();
wait(100); // every 100 ms (busy waiting)
}
}

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
<ProjectComponents>
<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<CApiVersion></CApiVersion>
<CBundle></CBundle>
<CClass>Device</CClass>
<CGroup>Startup</CGroup>
<CSub></CSub>
<CVariant></CVariant>
<CVendor>Atmel</CVendor>
<CVersion>1.6.0</CVersion>
<DefaultRepoPath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs</DefaultRepoPath>
<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<Description></Description>
<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\</AbsolutePath>
<Attribute></Attribute>
<Category>include</Category>
<Condition>C</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>include/</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\avr\iom128.h</AbsolutePath>
<Attribute></Attribute>
<Category>header</Category>
<Condition>C</Condition>
<FileContentHash>JdJ7J9I/SJh965SEyyyVYw==</FileContentHash>
<FileVersion></FileVersion>
<Name>include/avr/iom128.h</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.c</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>LGMXRdW4vmSlRGAAGvj3wQ==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.c</Name>
<SelectString>Main file (.c)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.cpp</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>mkKaE95TOoATsuBGv6jmxg==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.cpp</Name>
<SelectString>Main file (.cpp)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128</AbsolutePath>
<Attribute></Attribute>
<Category>libraryPrefix</Category>
<Condition>GCC</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>gcc/dev/atmega128</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
</Files>
<PackName>ATmega_DFP</PackName>
<PackPath>C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/Atmel.ATmega_DFP.pdsc</PackPath>
<PackVersion>1.6.364</PackVersion>
<PresentInProject>true</PresentInProject>
<ReferenceConditionId>ATmega128</ReferenceConditionId>
<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string></d4p1:string>
</RteComponents>
<Status>Resolved</Status>
<VersionMode>Fixed</VersionMode>
<IsComponentInAtProject>true</IsComponentInAtProject>
</ProjectComponent>
</ProjectComponents>
</Store>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>7.0</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>dce6c7e3-ee26-4d79-826b-08594b9ad897</ProjectGuid>
<avrdevice>ATmega128</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>opdracht 4.b1</AssemblyName>
<Name>opdracht 4.b1</Name>
<RootNamespace>opdracht 4.b1</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
</ToolchainSettings>
</PropertyGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>