fh-stefan
01.07.2005, 14:31
Hallo,
ich habe eine Problem.
Ih benutze AVR Mega32 und zum programieren CodeVisionAVR.
In meinem Programm soll µC und Sensor(dazwiechen ADA-Modul) über RS232 unterhalten.
Eigentlich klapt es prima, aber wenn es keine Verbindung zwieschen beiden stellt, hängt meine Programm. Ich möchte in Programm realisieren, wenn es kein Antwrot von Sensor kommt, muss eine Fehlermeldung auf LCD ausgegeben werden.
void GetDataAdam (char *sensor, char *data) //Variablen "sensor" und "data" werden übergeben
{
int probe1, probe2; // Definition integer-Variable
do
{
do
{
PORTD.2=1; // LTC485 wird angeschaltet
PORTD.5=1; // LTC485 auf "Senden" schalten
delay_ms(100); // kurz warten...
printf("%s",sensor); // Abfrage Senden, ADAM Eingang x Adresse 0xHEX //("#01x<CR>")(x steht für Sensornummer)
delay_ms(3); // kurz warten...
PORTD.5=0; // LTC485 auf "Empfangen" schalten
gets(data,9); // Daten vom seriellen Port in Variable Datax //kopieren (>+00.000<CR>") --> maximal 9 Zeichen
PORTD.2=0; // LTC485 wird abgeschaltet
probe1=(data[2]-0x30); // zweite Zahl vor den Komma der Sensordaten ablesen
probe2=(data[3]-0x30); // erste Zahl vor den Komma der Sensordaten ablesen
}
while( probe1!=0 && probe1!=1 ); //Überprüfen ob die Daten von Solarsensor richtig abgelesen wurde(zweite Zahl vor den Komma)
}
while(probe2>=9 && probe2<=0 ); //Überprüfen ob die Daten von Solarsensor richtig abgelesen wurde(erste Zahl vor den Komma)
}
Ich habe schon was gelesen, dass ich mit Interrupt was machen kann, aber wie, habe ich keine Ahnung(ich bin noch Anfänger). Oder giebt es andere Möglichkeit.
Dank voraus.
ich habe eine Problem.
Ih benutze AVR Mega32 und zum programieren CodeVisionAVR.
In meinem Programm soll µC und Sensor(dazwiechen ADA-Modul) über RS232 unterhalten.
Eigentlich klapt es prima, aber wenn es keine Verbindung zwieschen beiden stellt, hängt meine Programm. Ich möchte in Programm realisieren, wenn es kein Antwrot von Sensor kommt, muss eine Fehlermeldung auf LCD ausgegeben werden.
void GetDataAdam (char *sensor, char *data) //Variablen "sensor" und "data" werden übergeben
{
int probe1, probe2; // Definition integer-Variable
do
{
do
{
PORTD.2=1; // LTC485 wird angeschaltet
PORTD.5=1; // LTC485 auf "Senden" schalten
delay_ms(100); // kurz warten...
printf("%s",sensor); // Abfrage Senden, ADAM Eingang x Adresse 0xHEX //("#01x<CR>")(x steht für Sensornummer)
delay_ms(3); // kurz warten...
PORTD.5=0; // LTC485 auf "Empfangen" schalten
gets(data,9); // Daten vom seriellen Port in Variable Datax //kopieren (>+00.000<CR>") --> maximal 9 Zeichen
PORTD.2=0; // LTC485 wird abgeschaltet
probe1=(data[2]-0x30); // zweite Zahl vor den Komma der Sensordaten ablesen
probe2=(data[3]-0x30); // erste Zahl vor den Komma der Sensordaten ablesen
}
while( probe1!=0 && probe1!=1 ); //Überprüfen ob die Daten von Solarsensor richtig abgelesen wurde(zweite Zahl vor den Komma)
}
while(probe2>=9 && probe2<=0 ); //Überprüfen ob die Daten von Solarsensor richtig abgelesen wurde(erste Zahl vor den Komma)
}
Ich habe schon was gelesen, dass ich mit Interrupt was machen kann, aber wie, habe ich keine Ahnung(ich bin noch Anfänger). Oder giebt es andere Möglichkeit.
Dank voraus.