Inhaltsverzeichnis
Transcription
Inhaltsverzeichnis
5.6 PWM (Pulse Width Modulation) 23 5 Inhaltsverzeichnis 1 Die CD-ROM zum Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1 1.2 1.3 1.4 Inhalt der CD-ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPL (General Public License) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemvoraussetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Updates und Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 11 2 Mikrocontroller Grundlagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 Aufbau und Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arbeits- und Programmspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Peripherie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technologievergleich: RISC und CISC . . . . . . . . . . . . . . . . . . . . . . . . . . CISC-Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RISC-Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 13 15 15 15 15 16 3 Mikrocontroller-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1 3.2 3.3 3.4 3.5 Was ist ein Programm? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmierung in Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Konzept von Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vorteile von Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmierung in Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 18 18 18 4 Übersicht über die ATMEL AVR-Controller . . . . . . . . . . . . . . . . . . . . . . 19 4.1 4.2 4.3 4.4 AT90Sxxx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ATmega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ATTiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ATxmega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 20 20 5 Der ATmega88 des Lernpakets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.1 5.2 5.3 5.4 5.5 5.6 Die interessantesten Pins des ATmega88 auf einen Blick . . . . . . . . . Taktfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I/O-Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC (Analog Digital Converter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PWM (Pulse Width Modulation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 22 23 23 23 6 Inhaltsverzeichnis 5.7 5.8 5.9 5.10 UART (Universal Asynchronous Receiver Transmitter) . . . . . . . . . . . . IRQ (Interrupt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stromversorgung des ATmega88 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 24 24 6 ISP-Grundbeschaltung des ATmega88 . . . . . . . . . . . . . . . . . . . . . . . . 25 6.1 Programmiergeräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7 Unser Bascom-Lernsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.1 7.2 7.3 Bauteileliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Das Experimentier-Board ATmega88 . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Sicherheitshinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 8 Die Bauteile des Lernpakets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 8.1 8.2 8.3 8.4 8.5 8.6 8.7 Leuchtdioden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Widerstände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kondensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transistoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Piezo-Schallwandler (Buzzer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schaltdraht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 34 35 36 36 37 9 Die ersten Vorbereitungen (Inbetriebnahme) . . . . . . . . . . . . . . . . . . . 38 9.1 9.2 9.3 Treiberinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Das Tool MProg für den FT232RL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 FT232R mit MProg programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10 Bascom installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 11 Der Basic-Compiler – Bascom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.1 11.2 11.3 11.4 Landessprache auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die Bascom IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bascom-Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bascom-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 52 53 12 Der erste Test: „Es Blinkt“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 12.1 Was haben wir getan? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 13 Grundlagen des Programmierens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 13.1 Bits und Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 13.2 Grundsätzlicher Aufbau eines Programms . . . . . . . . . . . . . . . . . . . . . 60 13.3 Sequenzieller Programmablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 14.10 13.4 13.5 String und String-Bearbeitung 79 7 Interruptgesteuerter Programmablauf . . . . . . . . . . . . . . . . . . . . . . . 61 Der Aufbau eines Bascom-Programms . . . . . . . . . . . . . . . . . . . . . . . 61 14 Bascom AVR Basic – Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 14.1 14.2 14.3 14.4 14.5 14.5.1 14.6 14.7 14.7.1 14.7.2 14.7.3 14.7.4 14.8 14.8.1 14.8.2 14.8.3 14.9 14.9.1 14.9.2 14.9.3 14.9.4 14.9.5 14.10 14.10.1 14.10.2 14.10.3 14.10.4 14.10.5 14.10.6 14.10.7 14.10.8 14.10.9 14.10.10 14.10.11 14.10.12 14.10.13 14.10.14 14.10.15 Kommentare im Quelltext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datentypen und Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variablen-Namen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lokale und globale Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variablen-Zuweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kontrollstrukturen (If Then Else, Select Case und Goto) . . . . . . . If Then –End if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . If Then – Else –End if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . If und ElseIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select Case. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schleifen (For Next, Do Loop, Do Until, While Wend) . . . . . . . . . For Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Do Loop und Do Loop Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . While Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funktionen, Prozeduren und Labels . . . . . . . . . . . . . . . . . . . . . . . Subroutinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gosub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . String und String-Bearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ucase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hexval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fusing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Len . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 65 66 66 66 67 67 68 68 69 69 70 71 72 73 74 75 75 76 76 77 78 79 79 79 80 80 81 81 81 82 82 82 83 83 84 84 85 8 Inhaltsverzeichnis 14.10.16 14.10.17 14.10.18 14.10.19 14.10.20 14.10.21 14.11 14.12 14.13 14.14 14.15 14.16 14.17 14.18 14.19 14.20 14.21 Split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Left . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Right . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Ltrim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Rtrim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Trim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Input-/Output-Konfiguration und Portsetzen . . . . . . . . . . . . . . . . 88 Interne Pull-up-Widerstände benutzen . . . . . . . . . . . . . . . . . . . . 91 Der Bascom-Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Timer als Timer verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Timer als Counter verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Der Analog-Digital-Wandler (ADC) . . . . . . . . . . . . . . . . . . . . . . . 100 Externe Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Die UART-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Software-UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Sleep-Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 15 Weitere Experimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 15.10 15.11 15.11.1 15.12 15.13 15.14 15.15 15.16 15.17 15.18 15.19 15.20 15.21 15.22 Tasten entprellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einschaltverzögerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ausschaltverzögerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LEDs am ATmega88. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Größere Verbraucher schalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tonerzeugung mit dem Befehl Sound . . . . . . . . . . . . . . . . . . . . . . Töne über Timer0 erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Morsecode-Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Impulszähler mit Timer0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Impulslängenmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PWM (Pulse Width Modulation) . . . . . . . . . . . . . . . . . . . . . . . . . . Die PWM-Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DAC mit PWM-Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transistor-LED-Dimmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LED-Dimmer mit Timer0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Softer Blinker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zufallszahlen mit Bascom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zahlenraten mit Bascom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Romantisches Mikrocontroller-Kerzenlicht . . . . . . . . . . . . . . . . . . Überwachung des Personalausgangs . . . . . . . . . . . . . . . . . . . . . . RTC (Real Time Clock) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schuluhrprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lüftersteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 116 117 118 120 122 124 125 129 131 132 135 136 139 141 142 144 146 147 148 149 151 154 21 Literaturverweis 15.23 15.24 15.25 15.26 15.27 15.28 15.29 15.30 15.31 15.32 15.33 15.34 15.35 15.36 15.37 15.38 15.39 15.40 15.41 15.42 222 Dämmerungsschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alarmanlage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komfort-Treppenlichtautomat . . . . . . . . . . . . . . . . . . . . . . . . . . . . Codeschloss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kapazitätsmesser mit Autorange . . . . . . . . . . . . . . . . . . . . . . . . . . Potenziometer professionell auslesen . . . . . . . . . . . . . . . . . . . . . Sensortaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . State-Maschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-Kanal-Voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spannungs-Plotter selbst programmiert . . . . . . . . . . . . . . . . . . . . Das ATmega88-Speicheroszilloskop . . . . . . . . . . . . . . . . . . . . . . . StampPlot der Profi-Datenlogger zum Nulltarif . . . . . . . . . . . . . . . Steuern über VB.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Leuchtdiodentester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPS-Mouse auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Temperaturschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Temperaturmessung mit dem LM335 . . . . . . . . . . . . . . . . . . . . . . MIN/MAX-Thermometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Temperatur-Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aquariumsteuerung mit Überwachung . . . . . . . . . . . . . . . . . . . . . 9 158 160 162 164 167 169 170 172 174 176 178 180 185 186 188 194 196 198 200 205 16 Programm über ISP-Programmer auf den AVR übertragen . . . . . . 210 17 Escape-Sequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 18 ASCII-Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 19 Reservierte Worte in Bascom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 20 Bezugsquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 21 Literaturverweis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222