- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: Probleme mit Interrupt!

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2005
    Beiträge
    103

    Probleme mit Interrupt!

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo!

    ich verwende einen PIC16F877, und ich möchte damit einen servo ansteuern. ich habe ein c programm geschriebn aber iregendwie funktioniert das nicht so wirklich wie ich mir das vorstelle!! (servo zuckt nur)

    ich sende vom PC über die serielle Schnittstelle ein zeichen zum pic, je nachdem welches zeichen das ist soll der servo ganz nach links drehen oda in die mittelstellung oda ganz nach rechts drehen.
    es soll ein interrupt ausgelöst werden wenn der pic etwas über RS232 empfängt!
    kann mir bitte jemand sagen wo der fehler liegt!
    oder mach ich das komplett falsch?? bitte um vorschläge , anmerkungen etc.
    Code:
    ++++++++++++++++++++++++++++++++++++++++++
    #include <16F877a.h>
    #include <stdlib.h>
    #use delay (clock=4000000)
    #fuses XT, NOWDT, NOPROTECT, NOLVP
    #use RS232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
    
    
    long position = 1000;
    char empfangen;
    
    // interrupt service routine
    #INT_RDA NOCLEAR
    long RS232_isr()
    {
       empfangen = getc();
       if(empfangen == 'a')
          position = 1000;
       else if(empfangen == 's')
          position = 1500;
       else if(empfangen == 'd')
          position = 2000;
       printf("\f\rServo Position: %ld", position);
       return position;
    }
    //*****************************
    void main (void)
    {
       int8 i;
       output_low(PIN_C2);
       enable_interrupts(GLOBAL);
       enable_interrupts(INT_RDA);
    
       while(true)
       {      
          output_high(PIN_C2);
          delay_us(position);
          output_low(PIN_C2);
          delay_us(19000);   
       }
    }
    ++++++++++++++++++++++++++++++++++++++++++
    Geh', macht doch CODE-Tags rein ! (PicNick)


    ich danke schon im Voraus

    Mfg doolitle

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    16.05.2004
    Beiträge
    304

    Re: Probleme mit Interrupt!

    Code:
    void serial_isr() {
       empfangen=getc();
    }
    
    void main() {
    
       enable_interrupts(int_rda);
    ....
    while(1)
    {
    ...
    }

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress