سلام
لطفابفرماید این به چه زبانی نوشته شداست لطفا بفرماید چگونه متوانم به کد هگز تبدیل کنم
[code=c]#include <avr/io.h>
#include "lcd-routines.h"
#include "wait1000ms.h"
#include "config.h"
#include <util/delay.h>
#include <avr/sleep.h>
#include <stdlib.h>
#include <string.h>
//#include <avr/eeprom.h>
#include <avr/pgmspace.h>
#include <avr/wdt.h>
#include <math.h>
//#define DebugOut 1 // wenn gesetzt, Ausgabe von Spannungen im Leerlauf mit R_H
//#define DebugOut 2 // wenn gesetzt, Ausgabe von Pin-Spannungen mit geschalteten R_L
//#define DebugOut 3 // wenn gesetzt, Zwischenausgaben bei Widerstandmessung in Zeile 2
//#define DebugOut 4 // wenn gesetzt, Spannungsausgabe bei Diodenmessung in Zeilen 3+4
//#define DebugOut 5 // wenn gesetzt, Zwischenausgaben der TransistorUntersuchung in Zeile 2+3
//#define DebugOut 10 // wenn gesetzt, Zwischenausgaben in ReadCapacity in Zeilen 3+4
/*################################################# #######################################
Konfigurations-Einstellungen
*/
/* Port für die Test-Pins
Dieser Port muss über einen ADC verfügen (beim Mega8 also PORTC).
Für die Test-Pins müssen die unteren 3 Pins dieses Ports benutzt werden.
Bitte die Definitionen für TP1, TP2 und TP3 nicht ändern!
*/
#define ADC_PORT PORTC
#define ADC_DDR DDRC
#define ADC_PIN PINC
#define TP1 PC0
#define TP2 PC1
#define TP3 PC2
/*Einstellungen für Kapazitätsmessung (nur für ATMega8 interessant)
Der Test, ob ein Kondensator vorhanden ist, dauert relativ lange, mit über 50ms je Testvorgang ist zu rechnen
Bei allen 6 möglichen Testvorgängen ergibt das eine Verlängerung der Testdauer um ca 0,3s bis 0,5s.
Mit CAP_TEST_MODE lassen sich die durchgeführten Tests festlegen.
Bedeutungen der Bits (7 = MSB):
7:6 Nicht verwendet
5:4 Test-Modus
00: Kondensator-Messung deaktiviert
01: Kondensator-Messung für eine einstellbare Pin-Kombination (in beide Richtungen); verlängert Testdauer um ca. 120...200ms
10: Kondensator-Messung für alle 6 Pin-Kombinationen; verlängert Testdauer um ca. 300...500ms
3:2 Erster Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01
1:0 Zweiter Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01
*/
#define CapTestMode 0x12 //Messung für alle 6 Pin-Kombinationen
/*
Genaue Werte der verwendeten Widerstände in Ohm.
Der Nennwert für R_L ist 680 Ohm, für R_H 470kOhm.
Um das Programm auf Abweichungen von diesen Werten (z.B. durch Bauteiltoleranzen)
zu kalibrieren, die Widerstandswerte in Ohm in die folgenden Defines eintragen:
*/
#define R_L_VAL 680 // Normwert 680 Ohm
#define R_H_VAL 4700 // Normwert 470000 Ohm, durch 100 dividiert
#define PIN_R 20 // Geschätzter Innenwiderstand PORT Ausgang
/* Faktoren für die Kapazitätsmessung bei Kondensatoren
Diese Faktoren hängen von Fertigungstoleranzen des AVR ab und müssen somit ggf. angepasst werden
H_CAPACITY_FACTOR ist für die Messung mit 470k-Widerstand (geringe Kapazität)
L_CAPACITY_FACTOR ist für die Messung mit 680-Ohm-Widerstand (hohe Kapazität)
Gemessen wird die Zeit (t) in µs bis zum Erreichen der Vergleichsspannung (1.3V)
des analogen Komparators.
Die Spannung am Kondensator steigt nach Uc = VCC * (1 - e**(-t/T))
Die 1.3V werden somit nach t = -ln(3.7/5)*T = 0.3011*T erreicht.
Zeitkonstante T = R * C ; also
C = T / R
für die 470 kOhm ergibt sich nach C = t / (0.3011 * 470000)
H_Fakt = 707/100 für das Ergebnis in pF
Für die 680 Ohm sind die Verhältnisse komplizierter.
zum Zeitpunkt des Komparator-Schaltens fliesst noch deutlich Strom, der
einen zusätzlichen Spannungsanstieg des LowPin zur Folge hat.
= (VCC - 1.3V) / (R_L + PIN_R) * PIN_R = 105mV
Der Komparator schaltet also bei einer Kondensator-Spannung von etwa 1.2V!!!
Das ergibt als Schaltzeit t = -ln((5-1.2)/5)*T = 0.274437*T .
für die 680 Ohm ergibt sich nach C = t / (0.274437 * (680 + PIN_R + PIN_R))
oder C = Z * 5.060869 (253/50)
Der gesamte Messbereich ist ca. 100pF bis 80mF.
*/
//#define H_CAPACITY_FACTOR 707
#define H_CAPACITY_FACTOR 724
//#define L_CAPACITY_FACTOR 253
#define L_CAPACITY_FACTOR 273
// durch Faktoren wird der ADC-Wert so umgerechnet, dass die Spannungen in mV gemessen werden!
// alle Abfragen wurden durch solche mV Abfragen ersetzt.
#define U_VCC 5001 // Maximalwert der ADC-Messung
/*################################################# #######################################
Ende der Konfigurations-Einstellungen
*/
/*Strings im PROGMEM
Beim Hinzufügen weiter Sprachen müssen alle Strings mit "¤"-Zeichen (ASCII 0x80) auf gleiche Länge gebracht werden,
sonst gibt es Probleme mit der LCD-Anzeige bei den verschiedenen Sprachen!
*/
#if defined(GERMAN) //deutsch
unsigned char TestRunning[] PROGMEM = "Testen...";
unsigned char BatWeak[] PROGMEM = "schwach";
unsigned char BatEmpty[] PROGMEM = "leer!";
unsigned char TestFailed2[] PROGMEM = "defektes ";
unsigned char Bauteil[] PROGMEM = "Bauteil";
unsigned char Diode[] PROGMEM = "Diode: ";
unsigned char Dioden[] PROGMEM = "Dioden ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triac";
unsigned char Thyristor[] PROGMEM = "Thyristor";
unsigned char Unknown[] PROGMEM = " unbek.";
unsigned char TestFailed1[] PROGMEM = "Kein,unbek. oder";
unsigned char OrBroken[] PROGMEM = "oder defekt ";
unsigned char Resistor[] PROGMEM = "Widerst: ";
unsigned char Capacitor[] PROGMEM = "Kondensator: ";
#elif defined(ENGLISH) //englisch
unsigned char TestRunning[] PROGMEM = "Testing...";
unsigned char BatWeak[] PROGMEM = "weak";
unsigned char BatEmpty[] PROGMEM = "empty!";
unsigned char TestFailed2[] PROGMEM = "damaged ";
unsigned char Bauteil[] PROGMEM = "part";
unsigned char Diode[] PROGMEM = "Diode: ";
unsigned char Dioden[] PROGMEM = "Diodes ";
unsigned char GAK[] PROGMEM = "GAC=";
unsigned char Triac[] PROGMEM = "Triac";
unsigned char Thyristor[] PROGMEM = "Thyristor";
unsigned char Unknown[] PROGMEM = " unknown";
unsigned char TestFailed1[] PROGMEM = "No, unknown, or";
unsigned char OrBroken[] PROGMEM = "or damaged ";
unsigned char Resistor[] PROGMEM = "Resistor: ";
unsigned char Capacitor[] PROGMEM = "Capacitor: ";
#elif defined(POLISH) //polnisch
unsigned char TestRunning[] PROGMEM = "Testowanie...";
unsigned char BatWeak[] PROGMEM = "slaba";
unsigned char BatEmpty[] PROGMEM = "za slaba";
unsigned char TestFailed2[] PROGMEM = "lub uszkodz.";
unsigned char Bauteil[] PROGMEM = "Element";
unsigned char Diode[] PROGMEM = "Dioda: ";
unsigned char Dioden[] PROGMEM = "Diody ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triak";
unsigned char Thyristor[] PROGMEM = "Tyrystor";
unsigned char Unknown[] PROGMEM = " nieznany";
unsigned char TestFailed1[] PROGMEM = "brak elementu";
unsigned char OrBroken[] PROGMEM = "lub uszkodz. ";
unsigned char Resistor[] PROGMEM = "Opornosc: ";
unsigned char Capacitor[] PROGMEM = "Pojemnosc: ";
#elif defined(CZECH) //tschechisch
unsigned char TestRunning[] PROGMEM = "Probiha mereni...";
unsigned char BatWeak[] PROGMEM = "slaba";
unsigned char BatEmpty[] PROGMEM = "prazdna!";
unsigned char TestFailed2[] PROGMEM = "vadna ";
unsigned char Bauteil[] PROGMEM = "soucastka";
unsigned char Diode[] PROGMEM = "Dioda: ";
unsigned char Dioden[] PROGMEM = "Diody ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triak";
unsigned char Thyristor[] PROGMEM = "Tyristor";
unsigned char Unknown[] PROGMEM = " neznama";
unsigned char TestFailed1[] PROGMEM = "Zadna, neznama";
unsigned char OrBroken[] PROGMEM = "nebo vadna ";
unsigned char Resistor[] PROGMEM = "Rezistor: ";
unsigned char Capacitor[] PROGMEM = "Kondenzator: ";
#elif defined(SLOVAK) //slowakisch
unsigned char TestRunning[] PROGMEM = "PREBIEHA TEST";
unsigned char BatWeak[] PROGMEM = "slaba";
unsigned char BatEmpty[] PROGMEM = "prazdna!";
unsigned char TestFailed2[] PROGMEM = "vadna ";
unsigned char Bauteil[] PROGMEM = "suciastka!";
unsigned char Diode[] PROGMEM = "Dioda: ";
unsigned char DualDiode[] PROGMEM = "Diody ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triak";
unsigned char Thyristor[] PROGMEM = "Tyristor";
unsigned char Unknown[] PROGMEM = " neznama";
unsigned char TestFailed1[] PROGMEM = "Ziadna, neznama";
unsigned char OrBroken[] PROGMEM = "alebo vadna ";
unsigned char Resistor[] PROGMEM = "Rezistor: ";
unsigned char Capacitor[] PROGMEM = "Kondenzator: ";
#endif
//Sprachunabhängige Strings
unsigned char Bat[] PROGMEM = "Bat. ";
unsigned char OK[] PROGMEM = "OK";
unsigned char mosfet[] PROGMEM = "-MOS";
unsigned char jfet[] PROGMEM = "JFET";
unsigned char GateCap[] PROGMEM = " C=";
unsigned char hfestr[] PROGMEM ="hFE=";
unsigned char NPN[] PROGMEM = "NPN ";
unsigned char PNP[] PROGMEM = "PNP ";
unsigned char ebcstr[] PROGMEM = " EBC=";
unsigned char gds[] PROGMEM = "GDS=";
unsigned char Uf[] PROGMEM = "Uf=";
unsigned char vt[] PROGMEM = "Vt=";
unsigned char AnKat[] PROGMEM = {'-', LCD_CHAR_DIODE, '-', 0};
unsigned char KatAn[] PROGMEM = {'-', LCD_CHAR_DIODE2, '-', 0};
unsigned char TestTimedOut[] PROGMEM = "Timeout!";
unsigned char DiodeIcon[] PROGMEM = { 0x11,
0x19,
0x1d,
0x1f,
0x1d,
0x19,
0x11,
0x00}; // Diode-Icon Anode links
unsigned char DiodeIcon2[] PROGMEM = { 0x11,
0x13,
0x17,
0x1f,
0x17,
0x13,
0x11,
0x00}; // Diode-Icon Anode rechts
unsigned char PinRLtab[] PROGMEM = { (1<<(TP1*2)),
(1<<(TP2*2)),
(1<<(TP3*2))}; // Tabelle der R-L Schaltbefehle Pin 0,1,2
unsigned char PinADCtab[] PROGMEM = { (1<<0),
(1<<1),
(1<<2)}; // Tabelle der ADC-Pins Schaltbefehle Pin 0,1,2
#ifdef LCD_CYRILLIC //Omega- und µ-Zeichen als Custom-Zeichen erzeugen, weil diese Zeichen im kyrillischen Zeichensatz nicht enthalten sind
unsigned char CyrillicOmegaIcon[] PROGMEM = {0,0,14,17,17,10,27,0}; //Omega
unsigned char CyrillicMuIcon[] PROGMEM = {0,17,17,17,19,29,16,16}; //µ
#endif
#ifdef R_MESS
unsigned char T132[] PROGMEM = "1:3:2";
unsigned char T123[] PROGMEM = "1:2:3";
unsigned char T213[] PROGMEM = "2:1:3";
#endif
//Ende der EEPROM-Strings
//Watchdog
#define WDT_enabled
/* Wird das Define "WDT_enabled" entfernt, wird der Watchdog beim Programmstart
nicht mehr aktiviert. Das ist für Test- und Debuggingzwecke sinnvoll.
Für den normalen Einsatz des Testers sollte der Watchdog aber unbedingt aktiviert werden!
*/
struct Diode {
uint8_t Anode;
uint8_t Cathode;
unsigned int Voltage;
};
void CheckPins(uint8_t HighPin, uint8_t LowPin, uint8_t TristatePin);
void ChargePin10ms(uint8_t PinToCharge, uint8_t ChargeDirection);
unsigned int ReadADC(uint8_t mux);
unsigned int W5msReadADC(uint8_t mux);
unsigned int W20msReadADC(uint8_t mux);
void lcd_show_format_cap(char outval[]);
void ReadCapacity(uint8_t HighPin, uint8_t LowPin); //Kapazitätsmessung nur auf Mega8 verfügbar
void UfAusgabe(uint8_t bcdchar); // Ausgabe der Schwellwertspannung(en) Uf
void RvalOut(uint8_t ii); // Ausgabe der Widerstandswerte
void EntladePins(); // Kondensatoren entladen
#define R_DDR DDRB
#define R_PORT PORTB
/* Port für die Testwiderstände
Die Widerstände müssen an die unteren 6 Pins des Ports angeschlossen werden,
und zwar in folgender Reihenfolge:
RLx = 680R-Widerstand für Test-Pin x
RHx = 470k-Widerstand für Test-Pin x
RL1 an Pin 0
RH1 an Pin 1
RL2 an Pin 2
RH2 an Pin 3
RL3 an Pin 4
RH3 an Pin 5
*/
#define ON_DDR DDRD
#define ON_PORT PORTD
#define ON_PIN_REG PIND
#define ON_PIN PD6 //Pin, der auf high gezogen werden muss, um Schaltung in Betrieb zu halten
#define RST_PIN PD7 //Pin, der auf low gezogen wird, wenn der Einschalt-Taster gedrückt wird
//Bauteile
#define PART_NONE 0
#define PART_DIODE 1
#define PART_TRANSISTOR 2
#define PART_FET 3
#define PART_TRIAC 4
#define PART_THYRISTOR 5
#define PART_RESISTOR 6
#define PART_CAPACITOR 7
//Ende (Bauteile)
//Spezielle Definitionen für Bauteile
//FETs
#define PART_MODE_N_E_MOS 1
#define PART_MODE_P_E_MOS 2
#define PART_MODE_N_D_MOS 3
#define PART_MODE_P_D_MOS 4
#define PART_MODE_N_JFET 5
#define PART_MODE_P_JFET 6
//Bipolar
#define PART_MODE_NPN 1
#define PART_MODE_PNP 2
struct Diode diodes[6];
uint8_t NumOfDiodes;
struct {
unsigned int hfe[2]; //Verstärkungsfaktor
//unsigned int uBE[2]; //B-E-Spannung für Transistor
uint8_t b,c,e; //Anschlüsse des Transistors
}trans;
unsigned long lhfe; //Verstärkungsfaktor
uint8_t PartReady; //Bauteil fertig erkannt
uint8_t PartMode;
uint8_t tmpval, tmpval2;
[/code]
با کمال تشکرp]
لطفابفرماید این به چه زبانی نوشته شداست لطفا بفرماید چگونه متوانم به کد هگز تبدیل کنم
[code=c]#include <avr/io.h>
#include "lcd-routines.h"
#include "wait1000ms.h"
#include "config.h"
#include <util/delay.h>
#include <avr/sleep.h>
#include <stdlib.h>
#include <string.h>
//#include <avr/eeprom.h>
#include <avr/pgmspace.h>
#include <avr/wdt.h>
#include <math.h>
//#define DebugOut 1 // wenn gesetzt, Ausgabe von Spannungen im Leerlauf mit R_H
//#define DebugOut 2 // wenn gesetzt, Ausgabe von Pin-Spannungen mit geschalteten R_L
//#define DebugOut 3 // wenn gesetzt, Zwischenausgaben bei Widerstandmessung in Zeile 2
//#define DebugOut 4 // wenn gesetzt, Spannungsausgabe bei Diodenmessung in Zeilen 3+4
//#define DebugOut 5 // wenn gesetzt, Zwischenausgaben der TransistorUntersuchung in Zeile 2+3
//#define DebugOut 10 // wenn gesetzt, Zwischenausgaben in ReadCapacity in Zeilen 3+4
/*################################################# #######################################
Konfigurations-Einstellungen
*/
/* Port für die Test-Pins
Dieser Port muss über einen ADC verfügen (beim Mega8 also PORTC).
Für die Test-Pins müssen die unteren 3 Pins dieses Ports benutzt werden.
Bitte die Definitionen für TP1, TP2 und TP3 nicht ändern!
*/
#define ADC_PORT PORTC
#define ADC_DDR DDRC
#define ADC_PIN PINC
#define TP1 PC0
#define TP2 PC1
#define TP3 PC2
/*Einstellungen für Kapazitätsmessung (nur für ATMega8 interessant)
Der Test, ob ein Kondensator vorhanden ist, dauert relativ lange, mit über 50ms je Testvorgang ist zu rechnen
Bei allen 6 möglichen Testvorgängen ergibt das eine Verlängerung der Testdauer um ca 0,3s bis 0,5s.
Mit CAP_TEST_MODE lassen sich die durchgeführten Tests festlegen.
Bedeutungen der Bits (7 = MSB):
7:6 Nicht verwendet
5:4 Test-Modus
00: Kondensator-Messung deaktiviert
01: Kondensator-Messung für eine einstellbare Pin-Kombination (in beide Richtungen); verlängert Testdauer um ca. 120...200ms
10: Kondensator-Messung für alle 6 Pin-Kombinationen; verlängert Testdauer um ca. 300...500ms
3:2 Erster Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01
1:0 Zweiter Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01
*/
#define CapTestMode 0x12 //Messung für alle 6 Pin-Kombinationen
/*
Genaue Werte der verwendeten Widerstände in Ohm.
Der Nennwert für R_L ist 680 Ohm, für R_H 470kOhm.
Um das Programm auf Abweichungen von diesen Werten (z.B. durch Bauteiltoleranzen)
zu kalibrieren, die Widerstandswerte in Ohm in die folgenden Defines eintragen:
*/
#define R_L_VAL 680 // Normwert 680 Ohm
#define R_H_VAL 4700 // Normwert 470000 Ohm, durch 100 dividiert
#define PIN_R 20 // Geschätzter Innenwiderstand PORT Ausgang
/* Faktoren für die Kapazitätsmessung bei Kondensatoren
Diese Faktoren hängen von Fertigungstoleranzen des AVR ab und müssen somit ggf. angepasst werden
H_CAPACITY_FACTOR ist für die Messung mit 470k-Widerstand (geringe Kapazität)
L_CAPACITY_FACTOR ist für die Messung mit 680-Ohm-Widerstand (hohe Kapazität)
Gemessen wird die Zeit (t) in µs bis zum Erreichen der Vergleichsspannung (1.3V)
des analogen Komparators.
Die Spannung am Kondensator steigt nach Uc = VCC * (1 - e**(-t/T))
Die 1.3V werden somit nach t = -ln(3.7/5)*T = 0.3011*T erreicht.
Zeitkonstante T = R * C ; also
C = T / R
für die 470 kOhm ergibt sich nach C = t / (0.3011 * 470000)
H_Fakt = 707/100 für das Ergebnis in pF
Für die 680 Ohm sind die Verhältnisse komplizierter.
zum Zeitpunkt des Komparator-Schaltens fliesst noch deutlich Strom, der
einen zusätzlichen Spannungsanstieg des LowPin zur Folge hat.
= (VCC - 1.3V) / (R_L + PIN_R) * PIN_R = 105mV
Der Komparator schaltet also bei einer Kondensator-Spannung von etwa 1.2V!!!
Das ergibt als Schaltzeit t = -ln((5-1.2)/5)*T = 0.274437*T .
für die 680 Ohm ergibt sich nach C = t / (0.274437 * (680 + PIN_R + PIN_R))
oder C = Z * 5.060869 (253/50)
Der gesamte Messbereich ist ca. 100pF bis 80mF.
*/
//#define H_CAPACITY_FACTOR 707
#define H_CAPACITY_FACTOR 724
//#define L_CAPACITY_FACTOR 253
#define L_CAPACITY_FACTOR 273
// durch Faktoren wird der ADC-Wert so umgerechnet, dass die Spannungen in mV gemessen werden!
// alle Abfragen wurden durch solche mV Abfragen ersetzt.
#define U_VCC 5001 // Maximalwert der ADC-Messung
/*################################################# #######################################
Ende der Konfigurations-Einstellungen
*/
/*Strings im PROGMEM
Beim Hinzufügen weiter Sprachen müssen alle Strings mit "¤"-Zeichen (ASCII 0x80) auf gleiche Länge gebracht werden,
sonst gibt es Probleme mit der LCD-Anzeige bei den verschiedenen Sprachen!
*/
#if defined(GERMAN) //deutsch
unsigned char TestRunning[] PROGMEM = "Testen...";
unsigned char BatWeak[] PROGMEM = "schwach";
unsigned char BatEmpty[] PROGMEM = "leer!";
unsigned char TestFailed2[] PROGMEM = "defektes ";
unsigned char Bauteil[] PROGMEM = "Bauteil";
unsigned char Diode[] PROGMEM = "Diode: ";
unsigned char Dioden[] PROGMEM = "Dioden ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triac";
unsigned char Thyristor[] PROGMEM = "Thyristor";
unsigned char Unknown[] PROGMEM = " unbek.";
unsigned char TestFailed1[] PROGMEM = "Kein,unbek. oder";
unsigned char OrBroken[] PROGMEM = "oder defekt ";
unsigned char Resistor[] PROGMEM = "Widerst: ";
unsigned char Capacitor[] PROGMEM = "Kondensator: ";
#elif defined(ENGLISH) //englisch
unsigned char TestRunning[] PROGMEM = "Testing...";
unsigned char BatWeak[] PROGMEM = "weak";
unsigned char BatEmpty[] PROGMEM = "empty!";
unsigned char TestFailed2[] PROGMEM = "damaged ";
unsigned char Bauteil[] PROGMEM = "part";
unsigned char Diode[] PROGMEM = "Diode: ";
unsigned char Dioden[] PROGMEM = "Diodes ";
unsigned char GAK[] PROGMEM = "GAC=";
unsigned char Triac[] PROGMEM = "Triac";
unsigned char Thyristor[] PROGMEM = "Thyristor";
unsigned char Unknown[] PROGMEM = " unknown";
unsigned char TestFailed1[] PROGMEM = "No, unknown, or";
unsigned char OrBroken[] PROGMEM = "or damaged ";
unsigned char Resistor[] PROGMEM = "Resistor: ";
unsigned char Capacitor[] PROGMEM = "Capacitor: ";
#elif defined(POLISH) //polnisch
unsigned char TestRunning[] PROGMEM = "Testowanie...";
unsigned char BatWeak[] PROGMEM = "slaba";
unsigned char BatEmpty[] PROGMEM = "za slaba";
unsigned char TestFailed2[] PROGMEM = "lub uszkodz.";
unsigned char Bauteil[] PROGMEM = "Element";
unsigned char Diode[] PROGMEM = "Dioda: ";
unsigned char Dioden[] PROGMEM = "Diody ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triak";
unsigned char Thyristor[] PROGMEM = "Tyrystor";
unsigned char Unknown[] PROGMEM = " nieznany";
unsigned char TestFailed1[] PROGMEM = "brak elementu";
unsigned char OrBroken[] PROGMEM = "lub uszkodz. ";
unsigned char Resistor[] PROGMEM = "Opornosc: ";
unsigned char Capacitor[] PROGMEM = "Pojemnosc: ";
#elif defined(CZECH) //tschechisch
unsigned char TestRunning[] PROGMEM = "Probiha mereni...";
unsigned char BatWeak[] PROGMEM = "slaba";
unsigned char BatEmpty[] PROGMEM = "prazdna!";
unsigned char TestFailed2[] PROGMEM = "vadna ";
unsigned char Bauteil[] PROGMEM = "soucastka";
unsigned char Diode[] PROGMEM = "Dioda: ";
unsigned char Dioden[] PROGMEM = "Diody ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triak";
unsigned char Thyristor[] PROGMEM = "Tyristor";
unsigned char Unknown[] PROGMEM = " neznama";
unsigned char TestFailed1[] PROGMEM = "Zadna, neznama";
unsigned char OrBroken[] PROGMEM = "nebo vadna ";
unsigned char Resistor[] PROGMEM = "Rezistor: ";
unsigned char Capacitor[] PROGMEM = "Kondenzator: ";
#elif defined(SLOVAK) //slowakisch
unsigned char TestRunning[] PROGMEM = "PREBIEHA TEST";
unsigned char BatWeak[] PROGMEM = "slaba";
unsigned char BatEmpty[] PROGMEM = "prazdna!";
unsigned char TestFailed2[] PROGMEM = "vadna ";
unsigned char Bauteil[] PROGMEM = "suciastka!";
unsigned char Diode[] PROGMEM = "Dioda: ";
unsigned char DualDiode[] PROGMEM = "Diody ";
unsigned char GAK[] PROGMEM = "GAK=";
unsigned char Triac[] PROGMEM = "Triak";
unsigned char Thyristor[] PROGMEM = "Tyristor";
unsigned char Unknown[] PROGMEM = " neznama";
unsigned char TestFailed1[] PROGMEM = "Ziadna, neznama";
unsigned char OrBroken[] PROGMEM = "alebo vadna ";
unsigned char Resistor[] PROGMEM = "Rezistor: ";
unsigned char Capacitor[] PROGMEM = "Kondenzator: ";
#endif
//Sprachunabhängige Strings
unsigned char Bat[] PROGMEM = "Bat. ";
unsigned char OK[] PROGMEM = "OK";
unsigned char mosfet[] PROGMEM = "-MOS";
unsigned char jfet[] PROGMEM = "JFET";
unsigned char GateCap[] PROGMEM = " C=";
unsigned char hfestr[] PROGMEM ="hFE=";
unsigned char NPN[] PROGMEM = "NPN ";
unsigned char PNP[] PROGMEM = "PNP ";
unsigned char ebcstr[] PROGMEM = " EBC=";
unsigned char gds[] PROGMEM = "GDS=";
unsigned char Uf[] PROGMEM = "Uf=";
unsigned char vt[] PROGMEM = "Vt=";
unsigned char AnKat[] PROGMEM = {'-', LCD_CHAR_DIODE, '-', 0};
unsigned char KatAn[] PROGMEM = {'-', LCD_CHAR_DIODE2, '-', 0};
unsigned char TestTimedOut[] PROGMEM = "Timeout!";
unsigned char DiodeIcon[] PROGMEM = { 0x11,
0x19,
0x1d,
0x1f,
0x1d,
0x19,
0x11,
0x00}; // Diode-Icon Anode links
unsigned char DiodeIcon2[] PROGMEM = { 0x11,
0x13,
0x17,
0x1f,
0x17,
0x13,
0x11,
0x00}; // Diode-Icon Anode rechts
unsigned char PinRLtab[] PROGMEM = { (1<<(TP1*2)),
(1<<(TP2*2)),
(1<<(TP3*2))}; // Tabelle der R-L Schaltbefehle Pin 0,1,2
unsigned char PinADCtab[] PROGMEM = { (1<<0),
(1<<1),
(1<<2)}; // Tabelle der ADC-Pins Schaltbefehle Pin 0,1,2
#ifdef LCD_CYRILLIC //Omega- und µ-Zeichen als Custom-Zeichen erzeugen, weil diese Zeichen im kyrillischen Zeichensatz nicht enthalten sind
unsigned char CyrillicOmegaIcon[] PROGMEM = {0,0,14,17,17,10,27,0}; //Omega
unsigned char CyrillicMuIcon[] PROGMEM = {0,17,17,17,19,29,16,16}; //µ
#endif
#ifdef R_MESS
unsigned char T132[] PROGMEM = "1:3:2";
unsigned char T123[] PROGMEM = "1:2:3";
unsigned char T213[] PROGMEM = "2:1:3";
#endif
//Ende der EEPROM-Strings
//Watchdog
#define WDT_enabled
/* Wird das Define "WDT_enabled" entfernt, wird der Watchdog beim Programmstart
nicht mehr aktiviert. Das ist für Test- und Debuggingzwecke sinnvoll.
Für den normalen Einsatz des Testers sollte der Watchdog aber unbedingt aktiviert werden!
*/
struct Diode {
uint8_t Anode;
uint8_t Cathode;
unsigned int Voltage;
};
void CheckPins(uint8_t HighPin, uint8_t LowPin, uint8_t TristatePin);
void ChargePin10ms(uint8_t PinToCharge, uint8_t ChargeDirection);
unsigned int ReadADC(uint8_t mux);
unsigned int W5msReadADC(uint8_t mux);
unsigned int W20msReadADC(uint8_t mux);
void lcd_show_format_cap(char outval[]);
void ReadCapacity(uint8_t HighPin, uint8_t LowPin); //Kapazitätsmessung nur auf Mega8 verfügbar
void UfAusgabe(uint8_t bcdchar); // Ausgabe der Schwellwertspannung(en) Uf
void RvalOut(uint8_t ii); // Ausgabe der Widerstandswerte
void EntladePins(); // Kondensatoren entladen
#define R_DDR DDRB
#define R_PORT PORTB
/* Port für die Testwiderstände
Die Widerstände müssen an die unteren 6 Pins des Ports angeschlossen werden,
und zwar in folgender Reihenfolge:
RLx = 680R-Widerstand für Test-Pin x
RHx = 470k-Widerstand für Test-Pin x
RL1 an Pin 0
RH1 an Pin 1
RL2 an Pin 2
RH2 an Pin 3
RL3 an Pin 4
RH3 an Pin 5
*/
#define ON_DDR DDRD
#define ON_PORT PORTD
#define ON_PIN_REG PIND
#define ON_PIN PD6 //Pin, der auf high gezogen werden muss, um Schaltung in Betrieb zu halten
#define RST_PIN PD7 //Pin, der auf low gezogen wird, wenn der Einschalt-Taster gedrückt wird
//Bauteile
#define PART_NONE 0
#define PART_DIODE 1
#define PART_TRANSISTOR 2
#define PART_FET 3
#define PART_TRIAC 4
#define PART_THYRISTOR 5
#define PART_RESISTOR 6
#define PART_CAPACITOR 7
//Ende (Bauteile)
//Spezielle Definitionen für Bauteile
//FETs
#define PART_MODE_N_E_MOS 1
#define PART_MODE_P_E_MOS 2
#define PART_MODE_N_D_MOS 3
#define PART_MODE_P_D_MOS 4
#define PART_MODE_N_JFET 5
#define PART_MODE_P_JFET 6
//Bipolar
#define PART_MODE_NPN 1
#define PART_MODE_PNP 2
struct Diode diodes[6];
uint8_t NumOfDiodes;
struct {
unsigned int hfe[2]; //Verstärkungsfaktor
//unsigned int uBE[2]; //B-E-Spannung für Transistor
uint8_t b,c,e; //Anschlüsse des Transistors
}trans;
unsigned long lhfe; //Verstärkungsfaktor
uint8_t PartReady; //Bauteil fertig erkannt
uint8_t PartMode;
uint8_t tmpval, tmpval2;
[/code]
با کمال تشکرp]
دیدگاه