LV 02.05.2024 Grundlagen der Mikrocontrollertechnik 4EIT 4EMO 4MT im Sommersemester 2023
(EN google-translate)
(PL google-translate)
NEU ergänzt im Sommersemester 2024, LV #5, 25.04.2024 FOLGT DER ALTEN EINFÜHRUNG ZU PWM: 2. Quiz, 3. ROBOSUMO usw. PLUS:
  | 
int z=0;
int u=0;
void setup()
{
  pinMode(13, OUTPUT);
}
void loop()
{
   if (z<=((u/1000)%2)){
    digitalWrite(13, HIGH);
    
   }
   else{
    digitalWrite(13, LOW);
    
   }
  delay(1);
   z++;
   z%=20;
   u++;
 
}
Code 0-1: Ü1: Nur Mit Hilfe eines delay(1) und einem normalen digitalen Ausgang einen Servo ansteuern. (Springt zwischen +/-45Grad hin und her)
ENDE NEU ergänzt im Sommersemester 2024, LV #5, 25.04.2024:
Themen
  | 
1. Prinzip der Generierung von PWM-Signalen bei Mikrocontrollern
40_Mikrocontroller/04_PWM/03_Generierung
2. Gemeinsame Analyse einer Servo-Ansteuerung via PWM über Register-Konfigurationen
#define WMIN 1000
#define WMITTE 1500
#define WMAX 2000
#define SCHRITTE 1000
//Mode 8
//Phasen- und Frequenz-korrekt
//WGM1   3 2 1 0
//       1 0 0 0
//ICR1=..... TOP
//fpwm = fclk/(2*N*TOP)
//Vorteilung
//N=8
//80Hz = 16000000/(2*8*TOP)
//TOP = 16000000/(2*8*80Hz)=12500
//dt==1000ms*(1/80Hz)/12500 == 0,001ms (1 Schritt == 0,001ms)
//=>
//1ms == 1000 Schritte
//1,5ms == 1500 Schritte
//2ms == 2000 Schritte
void setup() 
{
       TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0)
              | (0<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (0<<WGM10);
       TCCR1B = (0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10); //Vort. 8, s.S. 135       
       ICR1=12500;       
       DDRB |= (1<<PB5); //OCR1A
       DDRB |= (1<<PB6); //OCR1B
       OCR1A = WMITTE; //PWM-Breite auf Mitte setzen.  
       OCR1B = WMITTE; //PWM-Breite auf Mitte setzen.  
}
void loop() 
{
       OCR1A = WMAX; //PWM-Breite auf Null setzen.  
       OCR1B = WMAX; //PWM-Breite auf Null setzen.         
       delay(3000);    
       OCR1A = WMITTE; //PWM-Breite auf Null setzen.  
       OCR1B = WMITTE; //PWM-Breite auf Null setzen.         
       delay(3000);    
       OCR1A = WMIN; //PWM-Breite auf Null setzen.  
       OCR1B = WMIN; //PWM-Breite auf Null setzen.         
       delay(3000);    
}
Code 0-2: Modellbau-Servos auf OC1A und OC1B mittels Timer 1 mit hoher Genauigkeit ansteuern.
Übungen
  | 
Bild 0-1: Pinbelegung bei der 4-fach-7-Segmentanzeige HDSP-B08G.
Bild 0-2: Lage der Pins bei HDSP-B08G.
Bild 0-3: Zuordnung der LEDs zu den Pins.