ATtiny2313RCLichtsteuerungStandard
2013-09-02
|
Hauptfile des Projekts ATtiny2313 RC Lichtsteuerung Standard. Mehr ...
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include "input_timer.h"
#include "blink_timer.h"
#include "batt_komp.h"
Makrodefinitionen | |
#define | F_CPU 1000000UL |
Funktionen | |
int | main () |
Hauptfunktion. Mehr ... | |
ISR (WDT_OVERFLOW_vect) | |
Interrupt Service Routine für Watchdog Timer. Mehr ... | |
Variablen | |
volatile uint8_t | in0_puls_len = 0 |
Zählerstand vom Input Timer (Timer0) = Pulslänge des Eingangs 1 -> Zählerstand * 64us = Pulslänge in ms. Mehr ... | |
volatile uint8_t | blktm_oflow = 0 |
Anzahl der Überläufe vom Blink Timer (Timer 1) -> Ein Überlauf entspricht 0,065s. Mehr ... | |
volatile uint8_t | batt_full = 1 |
Batteriestatus -> solange = 1 wird die Hauptschleife ausgeführt, wenn = 0 wird alles abgeschalten und der uC in den Schlafmodus versetzt. Mehr ... | |
volatile uint8_t | no_sig = 0 |
Status Empfänger Eingangssignal -> 0 = Signal vorhanden, 1 = kein Signal. Mehr ... | |
Hauptfile des Projekts ATtiny2313 RC Lichtsteuerung Standard.
Copyright 2013, 2014 V. Pippan (webma) ster @vpip pan. at
This file is part of ATtiny2313 RC Lichtsteuerung Standard.
ATtiny2313 RC Lichtsteuerung Standard is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or any later version.
ATtiny2313 RC Lichtsteuerung Standard is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ATtiny2313 RC Lichtsteuerung Standard. If not, see
www.gnu.org/licenses.
#define F_CPU 1000000UL |
ISR | ( | WDT_OVERFLOW_vect | ) |
Interrupt Service Routine für Watchdog Timer.
Ein Überlauf des Watchdog Timer löst diesen Interrupt aus. Wenn für längere Zeit kein Empfänger Einganssignal anliegt wird der Watchdog Timer nicht zurückgesetzt. Dies führt zu einem Überlauf des Watchdog Timers und innerhalb dieser Routine wird die Variable no_sig auf 1 gesetzt. Dies führt zum Abschalten der Beleuchtung, falls diese vorher eingeschalten war.
int main | ( | ) |
Hauptfunktion.
Die Hauptfunktion enthält die Initialisierungen beim Programmstart und die Hauptschleife des Programms. Wird die Hauptschleife abgebrochen (= Batterie leer) werden die Lichter ausgeschalten, alle Interrupts deaktiviert, die Timer gestoppt und der uC in den Power Down Schlafmodus versetzt. Aus diesem Zustand kann der uC nur durch einen Reset (Anstecken eines geladenen Akkus) wieder aktiviert werden!
< Zählerstand bei dem Navigationslichter einschalten sollen (bei meinem Servotester -> 12, normal 21)
< Zählerstand bei dem Landelichter einschalten sollen (bei meinem Servotester -> 19, normal 26)
Hauptschleife
Die Hauptschleife wird ausgeführt solange die Variable batt_full = 1 ist. batt_full = 0 bedeutet einen leeren Akku und die Hauptschleife wird beendet.
volatile uint8_t batt_full = 1 |
Batteriestatus -> solange = 1 wird die Hauptschleife ausgeführt, wenn = 0 wird alles abgeschalten und der uC in den Schlafmodus versetzt.
volatile uint8_t blktm_oflow = 0 |
Anzahl der Überläufe vom Blink Timer (Timer 1) -> Ein Überlauf entspricht 0,065s.
volatile uint8_t in0_puls_len = 0 |
Zählerstand vom Input Timer (Timer0) = Pulslänge des Eingangs 1 -> Zählerstand * 64us = Pulslänge in ms.
volatile uint8_t no_sig = 0 |
Status Empfänger Eingangssignal -> 0 = Signal vorhanden, 1 = kein Signal.