Abschaltung der Airbags des Beifahrersitzes
     

ownd by Lindner
Problembeschreibung

Die Airbags des Beifahrersitzes vieler Fahrzeuges lässt sich abschalten. Bei Verwendung eines in Gegenfahrtrichtung angeschnallten Babysafes könnten dem Kind bei Auslösung des Frontairbags tödliche Verletzungen zugeführt werden.

  
Quelle: www.myavr.de
  Junk/Uchlin
Schriftliche Problemlösung

Zur Deaktivierung dieses Airbags soll ein Taster vorgesehen werden, der aber erst nach zwei Sekunden dauerhaften Betätigens den Airbag abschaltet. Ein unbewusstes Abschalten soll somit vermieden werden. Eine rote Leuchtdiode zeigt zur Warnung den Status des deaktivierten Airbags an.

  TIPP:
   für Taster und LED unterschiedliche verwenden
   zum leichteren Verständnis

Der Eingabe soll wiederum über einen der Taster erfolgen. Damit ist für den gewählten Port der Pull-Up-Widerstand zu aktivieren. Die Ausgabe erfolgt an eine LED. Bei offenem Taster liegt an Port XXX ein High-Pegel ( Pull Up, logisch 1 ) an. Wird der Taster geschlossen, zieht er den Pegel auf Low ( logisch 0 ). Wird der Taster losgelassen, öffnet dieser sich und der Pegel geht wieder auf High ( Pull-Up, logisch 1 ).

Zeitberechnung:

warum 167504??


  
           Permesang/Spang Grafische  Problemlösung
 
Zum Download des Pap´s hier klicken.
 Zum Download der odg Datei klicke hier.
 skillz by

 Broll ; 

Quenteux ; 

Jajo;

 Diwo
 Zeitberechnung:

Wenn SIE (ja ganz genau SIE!!!) wirklich wissen wollen, wie man DEN ENDWERT berechnet, dann klicken SIE HIER oder DA.
© Diwo / Pfeiffer



Quelltext:

#include <avr/io.h>                        // Laden der Headerdatei io.h

long i;                                    // Festlegung des Datentyps long

warte ( long endwert )                     // Wartefunktion wird deklariert;  
                                           // Variable = Endwert

{
    for ( i = 0 ; i < endwert ; i++)       // Festlegen der Zählerschleife
    {
        if ( bit_is_clear ( PINC,3 ) )
        {  

            asm volatile ( "nop":: ) ;     // "tue nichts" bis Endwert erreicht
        }
    }

}



main ( void )

{
    DDRB = 0b00000001;                     // Initialisierung Taster B1=Ausgang
    DDRC = 0b00000000;                     // Port C3 auf Eingang  
                                                   
                                                                                                   
    PORTB = 0b00000000;                    // Setzten des Port B0 auf 0 LED aus
    PORTC = 0b00001000;                    // Port C3=1 wegen Tasterfunktion


    while ( 1 )
    {

        if ( bit_is_clear ( PINC,3 ) )     // Erste Abfrage ob Taster gedrückt
        {
            warte ( 167504 );              // Warte 167504 Einheiten ~ 2sec

            if ( bit_is_clear ( PINC,3 ) ) // 2te Abfrage: Taster gedrückt?
            {
                while ( 1 )                // Starten der Endlosschleife
                {
                    PORTB = 0b00000001;    // Port B0 auf 1 LED leuchtet
                }
            }
                }
           
    }
}