#include "asuro.h"
#include "myasuro.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)
V003 - 18.02.2007 - Sternthaler
+++ StartSwitch() Korrektur im Code-Beispiel
V004 - 20.02.2007 - m.a.r.v.i.n
Korrekturfaktur aus myasuro.h verwenden
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 83 der Datei switches.c.
00084 { 00085 unsigned int i; 00086 int ec_bak = autoencode; // Sichert aktuellen Zustand 00087 00088 /* 00089 Autoencode-Betrieb vom ADC-Wandler unterbinden. 00090 */ 00091 autoencode = FALSE; 00092 00093 DDRD |= SWITCHES; // Port-Bit SWITCHES als Output 00094 SWITCH_ON; // Port-Bit auf HIGH zur Messung 00095 ADMUX = (1 << REFS0) | SWITCH; // AVCC reference with external capacitor 00096 Sleep (10); 00097 00098 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00099 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00100 ; 00101 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00102 00103 i = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00104 00105 SWITCH_OFF; // Port-Bit auf LOW 00106 Sleep (5); 00107 00108 /* 00109 Autoencode-Betrieb vom ADC-Wandler wiederherstellen. 00110 */ 00111 autoencode = ec_bak; 00112 00113 /* 00114 Die Original Umrechenfunktion von Jan Grewe - DLR wurder ersetzt durch 00115 eine Rechnung ohne FLOAT-Berechnungen. 00116 return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5)); 00117 00118 Wert 61L evtl. anpasssen, falls fuer K1 falsche Werte zurueckgegebn werden. 00119 */ 00120 return ((10240000L / (long)i - 10000L) * MY_SWITCH_VALUE + 5000L) / 10000; 00121 }
void StartSwitch | ( | void | ) |
'Interrupt-Betrieb' zur Tastsensor Abfrage einschalten.
keine |
StartSwitch (); while (!switched) // wartet auf Tastendruck ; // an dieser Stelle kann mit Pollswitch geprüft werden // welche Taste gedrückt wurde, wenn nötig. switched = FALSE; // Vorbereitung für neuen Aufruf von StartSwitch()
Definiert in Zeile 156 der Datei switches.c.
00157 { 00158 SWITCH_OFF; // Port-Bit auf LOW 00159 DDRD &= ~SWITCHES; // Port-Bit SWITCHES als INPUT 00160 MCUCR &= ~((1 << ISC11) | (1 << ISC10)); // Low level erzeugt Interrupt 00161 GICR |= (1 << INT1); // Externen Interrupt 1 zulassen 00162 }
void StopSwitch | ( | void | ) |
'Interrupt-Betrieb' zur Tastsensor Abfrage anhalten.
keine |
Definiert in Zeile 185 der Datei switches.c.