Fehleranzeige des Airbag-Controllsystems
     

ownd by Lindner
Problembeschreibung

Fehler in der Sensorik sollen durch das Airbag-Controllsystem gemeldet werden.
Der Fehler wird  durch einen Taster
 (kurzzeitiges Drücken) am Port C1 simuliert.
Eine LED am Port B1 zeigt den Fehler an. 
Folgende Signalfolge ist vorzusehen:
LED leuchtet für circa 2 s, verlischt für circa 1 s,
leuchtet für circa 2 s, verlischt für circa 1 s, u.s.w.



  

Quelle: BOSCH
            www.autoservice-online.at
  ownd by Lindner
Schriftliche Problemlösung

Die Signalfolge wird mit einer Zählschleife realisiert (Timer
werden noch nicht verwendet).
Die Zählschleife steht in einer Funktion mit dem Namen
warte().

Um für weitere Problemlösungen höhere Genauigkeiten 
zu erzielen, ist vom internen RK-Oszillator (1 MHz) auf den
externen Quarzoszillator (3,686411 MHz) umzuschalten.
Die Umschaltung kann z. B. mit der Software myAvrQuickProg
realisiert werden.

  
ownd by Schennie und CaRsTeN 
Grafische  Problemlösung



 

  
skillz by Quenteux - Broll - Jajo    

Quelltext ( Opt. Formatierung )

#include  <avr/io.h>                                           

long i;                                                                 

warte (  long endwert  )                                      
{
         for ( i  =  0 ; i < endwert ;  i++)                 
        {
             asm volatile ( "nop":: ) ;                        
        }

}

main (  void  )                                                    
{
        DDRC     =  0b00000000;                       
        PORTC   =  0b00000010;                       

        DDRB     =  0b00000010;                       
        PORTB   =  0b00000000;                      


         while ( 1 )                                                   
         {                                                          

              if ( bit_is_clear ( PINC,1 ) )     
              {
                    while ( 1 )                                  
                    {

                                               

                        PORTB   =  0b00000010;    
                        warte ( 167504 );               

                        PORTB   =  0b00000000; 
                        warte ( 83752 );                 
                     }
                }

                  else                                       
                 {

                      PORTB  =  0b00000000;

                 }
        }
}                                                         

// laden der Headerdatei io.h

// Festlegung des Datentyps long

// Wartefunktion wird eingeleitet Variable = Endwert

// Festlegen der Zählerschleife

// "tue nichts" bis Endwert erreicht ist

 

// main Funktion wird gestartet

// Initialisierung des Tasters ; Port C1 auf Eingang
// Setzen des Port C1 auf 1 wegen Tasterfunktion

// Initialisierung der LED PORTB1 auf Eingang
// LED aus alle Ports 0

 
// Starten der ersten Endlosschleife Taster wird
// immerwieder abgefragt


// Abfrage ob PINC1 0 ist

// Falls dies so ist starten der zweiten Endlosschleife
// Bedingung PINC1 = 0 ; 
// Funktion immer wieder ausgeführt


// setzten des PORTB1 auf 1 LED an
// warte 167504 Einheiten ~ 2 sec

// setzten PORTB1 auf 0 LED aus
// warte 83752 Einheiten ~ 1 sec


// falls Bedingung von oben nicht eintritt 



// PORTB1 auf 0 LED aus

 

// ENDE

Wenssddee daunlauden willscht dann gligg doo -> ***
 
PNÐ by RØØT  
rOcKed by Metal-Bude Wenn SIE (ja ganz genau SIE!!!) wirklich wissen wollen, wie man DEN ENDWERT berechnet, dann klicken SIE HIER oder DA.
Kleine | Krawczyk
Ext / Int Clock





Der Quarz hat die Frequenz von 3.6864 MHz, diese mittels Timer auf genau eine Sekunde geteilt werden kann. Es gibt einen internen Oszillator, die Umschaltung kann problemlos mit myAVR-Quickprog vorgenommen werden. Ein anderer Quarz ist problemlos möglich, nur muss die Firmware evt. angepasst werden.


quarzam





Im Menü des myAVR-Studios kann man die Taktfrequenz des Prozessors bestimmen.

studio_small
Mit dem kostenlosen Programm myAVR QuickProg kann man den externen Quarz auf dem Board aktivieren.

avr_quick