Programmabbruch mit Terminalprogramm
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  Schnittstellen (CCS)  |  Programmabbruch mit Terminalprogramm « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Programmabbruch mit Terminalprogramm  (Gelesen 2250 mal)
 
Sascha
Newbie
*
Offline Offline

Beiträge: 46


Profil anzeigen
« am: November 11, 2009, 10:06:26 »

Hallo liebe Gemeinde,
ich hätte da mal wieder eine Frage. Nachdem ich ein Pic, in diesem Fall ein 16f876, mittels Terminalprogramm über Rs232 programmiert und gestartet habe, dass laufende Programm mittels Terminalprogramm abbrechen. Dies möchte ich machen, um Daten die er aufgezeicht hat auszulesen.   
Hier könnte ich mal einen Denkanstoß gebrauchen.

Viele Grüße Sascha
Gespeichert
Coltfisch
Sr. Member
****
Offline Offline

Beiträge: 496



Profil anzeigen WWW
« Antworten #1 am: November 11, 2009, 10:58:20 »

Hallo Sascha,

das ist eigentlich nicht weiter wild. Der folgende Code zeigt, wie man dies über einen UART-RX-Interrupt (#int_rda) und eine Flag-Variable lösen könnte (CCS C spezifisch).

Code: (c)
.
.
.

int1 flag = false;

#int_rda
void rda_isr(void)
{
   if(getc() == 'x')  // Programmabbruch, wenn ein 'x' empfangen wird
   {
      flag = true;
   }
}


void main()
{
   .
   .
   .
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_RDA);     
   .
   .
   .

   while(1)
   {
      // hier das normale "Messprogramm" abarbeiten
      ..................
     
      // prüfen, ob das Abbruch-Flag gesetzt ist
      if(flag == true)
      {
          // jetzt die Messdaten ausgeben
          ..................
          flag = false;
      }
   }
}


Gruß
Daniel

Gespeichert
Sascha
Newbie
*
Offline Offline

Beiträge: 46


Profil anzeigen
« Antworten #2 am: November 12, 2009, 12:51:41 »

Simpel einfach und funktioniert ..

Vielen dank.

Gruß Sascha
Gespeichert
Sascha
Newbie
*
Offline Offline

Beiträge: 46


Profil anzeigen
« Antworten #3 am: April 12, 2010, 14:26:55 »

Hallo ich noch einmal,
harmoniert der RDA Interrupt mit irgendwas  nicht? Ich habe ein kleines Programm geschrieben, in dem ich ein paar Zahlen über RS232 einlese. Aktiviere ich nun den RDA Interrupt geht alles sehr langsam und ich muss Enter manchmal 4 mal drücken bis er es verstanden hat?


Gruß Sascha   


Code:
   setup_adc_ports( ALL_ANALOG );
   setup_adc(adc_clock_internal);
   setup_spi(FALSE);
   setup_counters(RTCC_INTERNAL,WDT_18MS);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   disable_interrupts(INT_EXT);
   ext_int_edge(L_TO_H);
   Setup_CCP1 (CCP_COMPARE_RESET_TIMER);
   setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1 ); // Interner Takt, 1:1
   CCP_1=50000; // alle  Zyklen
   enable_interrupts(INT_CCP1);
   disable_interrupts(INT_TIMER1);
   enable_interrupts(global);
 //  enable_interrupts(INT_RDA);
   set_timer1 ( 0 );
Gespeichert
Coltfisch
Sr. Member
****
Offline Offline

Beiträge: 496



Profil anzeigen WWW
« Antworten #4 am: April 12, 2010, 14:48:21 »

harmoniert der RDA Interrupt mit irgendwas  nicht?
Gut möglich, dass er sich mit einem der anderen Interrupts beisst (da deren Abarbeitungsdauer und Eintrittshäufigkeit zu hoch ist), aber das kann man aus dem Codeschnipsel nicht ersehen.

Gruß
Daniel
Gespeichert
Sascha
Newbie
*
Offline Offline

Beiträge: 46


Profil anzeigen
« Antworten #5 am: April 12, 2010, 14:53:14 »

Hallo Daniel,
ich enable die RDA jetzt nach der Eingabe, danach ist mit der 232 nicht mehr so viel los dann geht es.

Danke Gruß Sascha

Gespeichert
Coltfisch
Sr. Member
****
Offline Offline

Beiträge: 496



Profil anzeigen WWW
« Antworten #6 am: April 12, 2010, 15:40:26 »

ich enable die RDA jetzt nach der Eingabe, danach ist mit der 232 nicht mehr so viel los
Ich weiß zwar nicht genau, was Du damit meinst, aber wenn es hilft ist ja gut. Ich vermute aber trotzdem, dass irgendwas mit den Interrupts ungünstig abläuft. Was passiert in dem CCP-Interrupt?
Gespeichert
Sascha
Newbie
*
Offline Offline

Beiträge: 46


Profil anzeigen
« Antworten #7 am: April 13, 2010, 09:09:26 »

Da erzeuge ich eine Sekunde.
Gruß Sascha
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.036 Sekunden mit 18 Zugriffen.
 
Top! Top!