Skip to content

Commit 939ad38

Browse files
committed
Add new examples in L15
1 parent 9a64764 commit 939ad38

1 file changed

Lines changed: 55 additions & 8 deletions

File tree

15_TimerUndInterrupts.md

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
33
author: Sebastian Zug & André Dietrich & Fabian Bär
44
email: sebastian.zug@informatik.tu-freiberg.de & andre.dietrich@informatik.tu-freiberg.de & fabian.baer@student.tu-freiberg.de
5-
version: 0.0.6
5+
version: 0.0.7
66
language: de
77
narrator: Deutsch Female
88
99
import: https://raw.githubusercontent.com/liascript-templates/plantUML/master/README.md
1010
https://github.com/LiaTemplates/Pyodide
11-
https://raw.githubusercontent.com/liaTemplates/AVR8js/main/README.md
1211
https://fjangfaragesh.github.io/AVR8js-mem/INCLUDE.md
1312
1413
script: https://cdn.jsdelivr.net/chartist.js/latest/chartist.min.js
@@ -323,13 +322,58 @@ int main (void) {
323322
}
324323
```
325324
325+
326+
> Im Unterschied dazu sei im nachfolgenden Beispiel eine Implementierung des Polling-Mechanismus vorgestellt. Damit soll der Unterschied zwischen dem Interrupt-Modus und der kontinuierlichen Abfrage verdeutlicht werden.
327+
328+
<lia-keep>
329+
<div id="example_div6_id">
330+
<span id="simulation-time"></span><br>
331+
<wokwi-led color="yellow" pin="13" label="13"></wokwi-led><br>
332+
<wokwi-pushbutton color="red" pin="2" label="2"></wokwi-pushbutton><br>
333+
<memout-element type="bin" address="PORTB"></memout-element> <memout-element type="bin" address="DDRB"></memout-element> <memout-element type="bin" address="PINB"></memout-element><br>
334+
</div>
335+
</lia-keep>
336+
337+
``` cpp ToggleLED.cpp
338+
// preprocessor definition
339+
#define F_CPU 16000000UL
340+
341+
#include <avr/io.h>
342+
#include <util/delay.h>
343+
344+
int main (void) {
345+
DDRB |= (1 << PB5);
346+
int state = 0;
347+
// aktives überwachen des Pins
348+
while(1) {
349+
if (state ^ ((PIND >> PD2) & 1)) {
350+
state ^= 1;
351+
if (state) {
352+
PORTB ^= ( 1 << PB5 );
353+
}
354+
}
355+
_delay_ms(1);
356+
}
357+
return 0;
358+
}
359+
```
360+
@AVR8jsMem.sketch(example_div6_id,100000,1)
361+
362+
> **Frage:** Erklären Sie den Ablauf der Aktualisierung der Zustandsvariablen in Zeile 12 und 13.
363+
326364
**Analog Digitalwandler**
327365

328366
Das folgende Beispiel nutzt den Analog-Digital-Wandler in einem teilautonomen Betrieb. Innerhalb der Interrupt-Routine wird das Ergebnis ausgewertet und jeweils eine neue Wandlung aktiviert.
329367

330-
Als Demonstrator dient ein Spannungsteiler über einen lichtabhängigen Widerstand.
368+
<lia-keep>
369+
<div id="example_div8_id">
370+
<span id="simulation-time"></span><br>
371+
<wokwi-led color="yellow" pin="13" label="13"></wokwi-led><br>
372+
<voltage-slider-element min="0.0" max="5.0" value="1.0" analogPinNumber="0"></voltage-slider-element><br>
373+
</div>
374+
</lia-keep>
331375

332-
```c
376+
``` cpp AnalogViaInterrupts.cpp
333377
#include <avr/io.h>
334378
#include <avr/interrupt.h>
335379

@@ -356,14 +400,15 @@ int main(void){
356400

357401
int i = 0;
358402
while (1) {
359-
Serial.print("Ich rechne fleißig ... ");
360-
Serial.println(i++);
361-
_delay_ms(50);
403+
// Ich rechner fleißig!
404+
_delay_ms(5000);
362405
}
363406

364407
return 0;
365408
}
366409
```
410+
@AVR8jsMem.sketch(example_div8_id,100000,1)
411+
367412
368413
### Interrupt-Vektortabelle im AVR Programm
369414
@@ -834,6 +879,8 @@ Zähler | + +
834879

835880
Wir wollen einen Eingangszähler entwerfen, der die Ereignisse als Zählerimpulse betrachtet und zusätzlich mit einem Schwellwert vergleicht.
836881

882+
883+
837884
```cpp avrlibc.cpp
838885
#include <avr/io.h>
839886
#include <util/delay.h>
@@ -900,7 +947,7 @@ int main(void)
900947
</div>
901948
</lia-keep>
902949
903-
``` cpp
950+
``` cpp Dimmer.cpp
904951
#ifndef F_CPU
905952
#define F_CPU 16000000UL // 16 MHz clock speed
906953
#endif

0 commit comments

Comments
 (0)