- 3D-Druck Einstieg und Tipps         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 28

Thema: Interrupts - von der Vektortabelle zur ISR Definition

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Anzeige

    Powerstation Test
    Wahrscheinlich ist dir dein µC schlicht und einfach abgestürzt

    Übrigens bringt es nichts, in einer INT0-ISR den INT0 zu deaktivieren, zu warten, und dann wieder zu aktivieren. Das zugehörige INT0-Flag wird dennoch gesetzt. Du kannst den INT0 einfach aktiv lassen, und am Ende der ISR das Flag löschen (durch Schreiben einer 1).

    Übrigens wird dein Code besser lesbar, wenn du ihn einrückst...

    Um den Wert aus einem Port zurücklesen (wie du es versuchst), liest man wieder PORTx und nicht PINx. PINx liest den Input, der dich aber gar nicht nicht interessiert in dem Beispiel...

    Wenn du einen sin() durch varieren deiner Zeitbasis erhalten willst, dann müssen die Zeitstückchen nicht sinusförmig sein, sindern proportional zu C+1/sin'(x) sein, also i.w. cosec().

    Zitat Zitat von izaseba
    signal.h gilt als veraltet (avr 3.4.4) und wird irgendwann aus avr-gcc raufliegen, man soll nur die interrupt.h benutzen.
    Momentan braucht man sie noch.
    In avr/interrupt.h werden zB die Makros sei() und cli() definiert.
    In avr/signal.h werden zB die Makros SIGNAL und INTERRUPT definiert.
    Disclaimer: none. Sue me.

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo Sprinter,

    hier ist der Inhalt meiner signal.h :
    Code:
    /* Copyright (c) 2002,2005 Marek Michalkiewicz
       All rights reserved.
    
       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:
    
       * Redistributions of source code must retain the above copyright
         notice, this list of conditions and the following disclaimer.
    
       * Redistributions in binary form must reproduce the above copyright
         notice, this list of conditions and the following disclaimer in
         the documentation and/or other materials provided with the
         distribution.
    
       * Neither the name of the copyright holders nor the names of
         contributors may be used to endorse or promote products derived
         from this software without specific prior written permission.
    
      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
      AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
      LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
      SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
      INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
      CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
      ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
      POSSIBILITY OF SUCH DAMAGE. */
    
    /* $Id: signal.h,v 1.11 2005/11/04 22:55:15 joerg_wunsch Exp $ */
    
    #ifndef _AVR_SIGNAL_H_
    #define _AVR_SIGNAL_H_
    
    #warning "This header file is obsolete.  Use <avr/interrupt.h>."
    
    #endif /* _AVR_SIGNAL_H_ */
    Also hier nix Makros für sei und cli, die sind in die interrupt.h gewandert...
    Die signal.h brauch ich auch nicht mehr einzubinden
    Es kann ja auch sein, daß Winavr noch nicht so weit ist, ich arbeite ja mit Linix, wie oben schon geschrieben 3.4.4

    Sollte das wirklich so sein, daß Winavr die noch braucht, halte ich lieber den Mund, bevor ich die Leute hier verunsichere
    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    15.04.2006
    Beiträge
    18
    Negativ, ich will nicht den Sinus durch variieren der Zeitbasis erhalten.
    Ergebniss wäre wenn z.B. ein RC Glied angeschlossen wäre ein synthetischer
    relativ sauberer Sinus (Sauberer als einfach nur ein ausschalten...)

    Aber das sind plänkeleien wie die Sache ob ich über den verzögerten PIN oder über Port rücklese, was wichtig ist, Interrupt & Timers im PWM Betrieb sollte
    eigentlich funzen??

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Interrupt & Timers im PWM Betrieb sollte
    eigentlich funzen??
    Und wer hat gesagt, daß es nicht funktioniert?

    Was mir zu Sinusgenerierung einfällt hier es ist zwar eine Assemblerbibel, aber vielleicht ganz brauchbar...

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    @uC: Ja.

    @izaseba: Und hier meine:
    Code:
    /* Copyright (c) 2002, Marek Michalkiewicz
       All rights reserved.
    
       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:
    
       * Redistributions of source code must retain the above copyright
         notice, this list of conditions and the following disclaimer.
       * Redistributions in binary form must reproduce the above copyright
         notice, this list of conditions and the following disclaimer in
         the documentation and/or other materials provided with the
         distribution.
    
      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
      AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
      LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
      SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
      INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
      CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
      ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
      POSSIBILITY OF SUCH DAMAGE. */
    
    /* $Id: signal.h,v 1.6.2.1 2003/10/09 17:26:14 troth Exp $ */
    
    #ifndef _AVR_SIGNAL_H_
    #define _AVR_SIGNAL_H_
    
    /** \name Macros for writing interrupt handler functions */
    
    /*@{*/
    
    /** \def SIGNAL(signame)
        \ingroup avr_interrupts
    
        \code#include <avr/signal.h>\endcode
    
        Introduces an interrupt handler function that runs with global interrupts
        initially disabled.  */
    
    #ifdef __cplusplus
    #define SIGNAL(signame)					\
    extern "C" void signame(void);				\
    void signame (void) __attribute__ ((signal));		\
    void signame (void)
    #else
    #define SIGNAL(signame)					\
    void signame (void) __attribute__ ((signal));		\
    void signame (void)
    #endif
    
    /** \def INTERRUPT(signame) 
        \ingroup avr_interrupts
    
        \code#include <avr/signal.h>\endcode
    
        Introduces an interrupt handler function that runs with global interrupts
        initially enabled. This allows interrupt handlers to be interrupted. */
    
    #ifdef __cplusplus
    #define INTERRUPT(signame)				\
    extern "C" void signame(void);				\
    void signame (void) __attribute__ ((interrupt));	\
    void signame (void)
    #else
    #define INTERRUPT(signame)				\
    void signame (void) __attribute__ ((interrupt));	\
    void signame (void)
    #endif
    
    /** \def EMPTY_INTERRUPT(signame) 
        \ingroup avr_interrupts
    
        \code#include <avr/signal.h>\endcode
    
        Defines an empty interrupt handler function. This will not generate
        any prolog or epilog code and will only return from the ISR. Do not
        define a function body as this will define it for you.
        Example:
        \code EMPTY_INTERRUPT(SIG_ADC);\endcode */
    
    #ifdef __cplusplus
    #define EMPTY_INTERRUPT(signame)                \
    extern "C" void signame(void);                  \
    void signame (void) __attribute__ ((naked));    \
    void signame (void) {  __asm__ __volatile__ ("reti" ::); }
    #else
    #define EMPTY_INTERRUPT(signame)                \
    void signame (void) __attribute__ ((naked));    \
    void signame (void) { __asm__ __volatile__ ("reti" ::); }
    #endif
    
    
    
    /*@}*/
    
    #endif /* _AVR_SIGNAL_H_ */
    Disclaimer: none. Sue me.

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    @Sprinter,
    und jetzt ?
    Deine ist über 2 Jahre älter als meine.
    Ich hab nur das geschrieben, was in der signal.h drin steht, und die Warnung, die der Kompiler ausgibt, wenn man damit arbeitet, und das was man hier
    nachlesen kann.
    Du hast in Deinem Wikiartikel (sei Dir dafür gedankt) geschrieben, man soll keine Warnungen ignorieren, Jörg Wünsch hat mal in einem anderem Forum geschrieben, man soll nicht mit jahrealten Versionen arbeiten, und hinterher meckern, wenn was nicht klappt.
    Du weißt was Du tust, aber manche Leute nicht.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Ja stimmt, es ist echt blöde, wenn sich dauernd unnötigerweise die API ändert. Das nervt!

    Die Wikiartikel könnte man anpassen, zB mit #if versehen. Aber die Quellen werden dadurch schlechter lesbar -- vor allem für Neulinge.
    In der 4-er Version hat sich noch mehr geändert...

    Zu meiner Schande muss ich gestehen, daß ich recht träge bin, was Neuinstallationen von Software angeht. Meine Version von GCC geht fehlerfrei und macht exzellenten Code.
    Disclaimer: none. Sue me.

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Ja stimmt, es ist echt blöde, wenn sich dauernd unnötigerweise die API ändert. Das nervt!
    Da hast Du vollkommen recht, andererseits sollen wir froh sein, daß es Leute gibt, die überhaupt daran arbeiten und sich gedanken machen, und das für Lau.

    Für die Wiki würde vielleicht helfen wenn man dick, auf http://www.nongnu.org/avr-libc/user-manual/index.html hinweist, von wegen auf neue Versionen hinweisen usw.

    In der 4-er Version hat sich noch mehr geändert...
    Gott sei dank ist sie noch nicht stable, ich will nicht darüber nachdenken, wie lange mein Rechner braucht um alles umzukompilieren...

    Zu meiner Schande muss ich gestehen, daß ich recht träge bin, was Neuinstallationen von Software angeht.
    das hab ich schön als cronjob wöchentlich laufen...

    schönen Abend noch, Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Zitat Zitat von izaseba
    Zu meiner Schande muss ich gestehen, daß ich recht träge bin, was Neuinstallationen von Software angeht.
    das hab ich schön als cronjob wöchentlich laufen...
    Und der cron ändert auch automatisch die Quellen auf die neuesten Standards? Wow! *verneig*
    Disclaimer: none. Sue me.

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Und der cron ändert auch automatisch die Quellen auf die neuesten Standards? Wow! *verneig*
    ehhh, wo hast Du das her ?

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress