#include "asuro.h"
gehe zum Quellcode dieser Datei
Funktionen | |
unsigned char | PollSwitch (void) |
Tastsensor Abfrage im 'Polling-Betrieb'. | |
void | StartSwitch (void) |
'Interrupt-Betrieb' zur Tastsensor Abfrage einschalten. | |
void | StopSwitch (void) |
'Interrupt-Betrieb' zur Tastsensor Abfrage anhalten. |
V--- - bis zum 07.01.2007 -
Bitte in Datei CHANGELOG nachsehen.
V001 - 13.01.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Zerlegte Sourcen in einzelne Dateien fuer eine echte Library.
V002 - 22.01.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
Definiert in Datei switches.c.
unsigned char PollSwitch | ( | void | ) |
Tastsensor Abfrage im 'Polling-Betrieb'.
keine |
uint8_t t1, t2; unsigned char text [16]; while (1) { t1 = PollSwitch (); t2 = PollSwitch (); // 2x PollSwitch aufrufen und beide Rueckgabewerte auf Gleichheit ueberpruefen if (t1 && t2 && t1 == t2) // irgendeine Taste gedrueckt { itoa (t1, text, 10); // Tastenwert senden SerPrint (text); SerPrint ("\r\n"); // Zeilenvorschub } Msleep (500); // 0,5 sek warten }
Definiert in Zeile 77 der Datei switches.c.
00078 { 00079 unsigned int i; 00080 int ec_bak = autoencode; // Sichert aktuellen Zustand 00081 00082 /* 00083 Autoencode-Betrieb vom ADC-Wandler unterbinden. 00084 */ 00085 autoencode = FALSE; 00086 00087 DDRD |= SWITCHES; // Port-Bit SWITCHES als Output 00088 SWITCH_ON; // Port-Bit auf HIGH zur Messung 00089 ADMUX = (1 << REFS0) | SWITCH; // AVCC reference with external capacitor 00090 Sleep (10); 00091 00092 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00093 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00094 ; 00095 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00096 00097 i = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00098 00099 SWITCH_OFF; // Port-Bit auf LOW 00100 Sleep (5); 00101 00102 /* 00103 Autoencode-Betrieb vom ADC-Wandler wiederherstellen. 00104 */ 00105 autoencode = ec_bak; 00106 00107 /* 00108 Die Original Umrechenfunktion von Jan Grewe - DLR wurder ersetzt durch 00109 eine Rechnung ohne FLOAT-Berechnungen. 00110 return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5)); 00111 00112 Wert 61L evtl. anpasssen, falls fuer K1 falsche Werte zurueckgegebn werden. 00113 */ 00114 return ((10240000L / (long)i - 10000L) * 61L + 5000L) / 10000; 00115 }
void StartSwitch | ( | void | ) |
'Interrupt-Betrieb' zur Tastsensor Abfrage einschalten.
keine |
Definiert in Zeile 150 der Datei switches.c.
00151 { 00152 SWITCH_OFF; // Port-Bit auf LOW 00153 DDRD &= ~SWITCHES; // Port-Bit SWITCHES als INPUT 00154 MCUCR &= ~((1 << ISC11) | (1 << ISC10)); // Low level erzeugt Interrupt 00155 GICR |= (1 << INT1); // Externen Interrupt 1 zulassen 00156 }
void StopSwitch | ( | void | ) |
'Interrupt-Betrieb' zur Tastsensor Abfrage anhalten.
keine |
Definiert in Zeile 179 der Datei switches.c.