4 CONTENTS
3.4 Writing your first function . . . . . . . . . . . . . . . . . . . . . . 32
3.4.1 On random sequences . . . . . . . . . . . . . . . . . . . . . 36
3.5 Your second function . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5.1 Test your function . . . . . . . . . . . . . . . . . . . . . . 39
3.6 Setting bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.7 Clearing bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.8 Toggling bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9 Testing bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.10 Hardware Interfacing . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.10.1 PORTA at location $1000 . . . . . . . . . . . . . . . . . . . 45
3.10.2 Controlling the LED . . . . . . . . . . . . . . . . . . . . . 48
3.10.3 Reading an external switch . . . . . . . . . . . . . . . . . . 48
4 Tables 49
4.1 Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 What you should do . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4 Setting up a table . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.5 Working with tables . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5.1 Table lookup . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5.2 Input with validation . . . . . . . . . . . . . . . . . . . . . 54
4.5.3 Translations using tables . . . . . . . . . . . . . . . . . . . 57
5 Timing using Polling 63
5.1 Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2 Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3 Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3.1 Slowing it down . . . . . . . . . . . . . . . . . . . . . . . . 65
6 Interrupt Processing 67
6.1 Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.2 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.3 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.4 The Real time interrupt . . . . . . . . . . . . . . . . . . . . . . . 71
6.4.1 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.5 The output compare interrupt . . . . . . . . . . . . . . . . . . . . 74
7 Signal Generation 77
7.1 Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.2 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.3 Variable frequency signal generator . . . . . . . . . . . . . . . . . 78
7.4 500 Hz tone generator . . . . . . . . . . . . . . . . . . . . . . . . 78
Komentáře k této Příručce