- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Prog läuft nicht >>> ISR(TIM1_COMPA) ok?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    133

    Prog läuft nicht >>> ISR(TIM1_COMPA) ok?

    Hallo zusammen.
    Versuche mich gerade an Timer-Interrupt. uC-Schaltung läuft nicht, kein Blinken.
    Warnung vom Compiler;
    'TIM1_COMPA' appears to be a misspelled signal handler, missing __vector prefix [-Wmisspelled-isr]

    Wo liegt der Fehler?

    Code:
    #define F_CPU 1000000UL	  // int.Takt als Macro übernehmen
    #include <avr/interrupt.h>	 // Interrupt einbinden, damit Interrupt funktioniert
    
    ISR(TIM1_COMPA)	         // Interrupt Service Routine (Seite 48), sobald Vergleichswert OSR1A erreicht wird
    {
      PORTB ^= (1<<PB0);	        // LED blinkt
    }
    
    int main(void)
    {
      DDRB |= (1<<PB0);	      // LED als Ausgang
    
      TCCR1B |= (1<<WGM12) | (1<<CS11);	// Timer1 (16bit), CTC-Mode, Prescaler=8
      TIMSK1 |= (1<<OCIE1A);  // Interrupt für Timer1, Interrupt auslösen sobald Vergleichswert erreicht wird
      OCR1A = 62500;             // OCRx = (Wunschzeit bis 1 Interrupt * f_CPU/Prescaler) - 1 // 500ms*1 000 000/8=62500 // bei 100ms=12499
      sei();                           // Interrupt´s werden gestartet und läuft im Hintergrund
    
      while(1)
      {
    
      }
    }
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    .. Versuche mich gerade an Timer-Interrupt .. Warnung vom Compiler .. missing __vector prefix .. Wo liegt der Fehler? ..
    Der Fehler liegt wohl da, wo er vom Compiler angemeckert wird:

    Dein Aufruf der ISR (für tiny84??) :
    Code:
    ISR(TIM1_COMPA)             //
    Mein Aufruf der ISR (für mega328P) :
    Code:
    ISR(TIMER2_COMPA_vect)             //
    Ok, ok, Du hast also wohl (immer noch) den tiny84 und den C-Compiler am Laufen, dort heißt der Interrupt-Vektor wirklich "TIM1_COMPA" - aber die ISR will halt noch den Zusatz: "-vect". Sprich: die ISR wird mit "ISR(TIM1_COMPA-vect)" gecodet. Die Initialisierung habe ich aber nicht controlliert und das alles auch nicht ausprobiert.

    Viel Erfolg.
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    133
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Mein Aufruf der ISR (für mega328P) :
    Code:
    ISR(TIMER2_COMPA_vect) //
    Hallo OberAllgeier, im Datenblatt des ATTiny84 finde ich nur TIM1_COMPA als Timer/Counter1 Compare Match A (Seite 4.
    Klicke auf die Grafik für eine größere Ansicht

Name:	TIM1_COMPA.jpg
Hits:	2
Größe:	82,0 KB
ID:	34221
    Es gibt keinen TIM1_COMPA_xxx oder TIMER1_COMPA_vect.
    Daher meine Unverständniss (Hilflosigkeit) bzgl. der Warnmeldung.
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    .. im Datenblatt des ATTiny84 finde ich nur TIM1_COMPA als Timer/Counter1 Compare Match A .. keinen TIM1_COMPA_xxx oder TIMER1_COMPA_vect ..
    Du heilige Kuh, woher hast Du nur das "TIM1_COMPA_xxx" ? ? ?

    Versuch einfach meine Empfehlung von oben:
    Zitat Zitat von oberallgeier Beitrag anzeigen
    .. dort heißt der Interrupt-Vektor wirklich "TIM1_COMPA" - aber die ISR will halt noch den Zusatz: "-vect". Sprich: die ISR wird mit "ISR(TIM1_COMPA-vect)" gecodet ..
    ohhh, Mist, nein. Natürlich ist der Bindestrich falsch, das müsste ne Fehlermeldung geben, weil der Compiler das wohl als Subtraktionsoperator interpretiert. Also bitte im Code:
    Code:
    ISR(TIM1_COMPA_vect)
    ISR(TIM1_COMPA_vect)
    und keine Angst, der Controller explodiert nicht, selbst wenn mal der Code falsch sein sollte.

    Und bitte: welches Atmel-Studio benutzt Du? Was bedeutet in Deiner Signatur "Atmel-ICE ?"
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    133
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Du heilige Kuh, woher hast Du nur das "TIM1_COMPA_xxx" ? ? ?
    xxx soll als Platzhalter für irgend etwas stehen. Daher habe ich im Datenblatt nach "TIM1_COMPA_" gesucht und nichts gefunden - also auch kein "_vect", oder "_vector"...
    Hmmm? Macht es tatsächlich Sinn, Registereinträge zu verwenden, die nicht im Datenblatt vor kommen?

    Habe meine Signatur geändert AtmelStudio7.x (x steht hier für Sonstige Unter-Unter-Unter-Versionen .
    Mein Programmer/Debugger läuft wie ein ICE, Atmel nennt den tatsächlich auch Atmel-ICE.
    http://ww1.microchip.com/downloads/e..._UserGuide.pdf
    Geändert von frabe (14.06.2019 um 08:04 Uhr)
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    .. Signatur geändert AtmelStudio7.x (x steht hier für Sonstige Unter-Unter-Unter-Versionen ..
    Signatur ist VIEL schöner *gg*. Allerdings bei den "x", den Unter-Unter-Versionen gibts dann doch Unterschiede da könnte es besser sein die aktuelle "build"-Ziffer zu nehmen. Aber das ist dann wirklich eher ne Nebensache.

    .. Mein Programmer/Debugger läuft wie ein ICE, Atmel nennt den tatsächlich auch Atmel-ICE ..
    Ach je, die gestrige Frage nach dem "Atmel-ICE" war Blödsinn. Lag vielleicht daran, dass ich zu schwer und zu lange geklettert war - und das in der prallen Sonne . . . Ich hatte vor Jahr(hundert)en selbst mit nem ICE gearbeitet (eher gespielt) und sollte den Unterschied zwischen ICE ( I Cähhh Eh ) der Bahn und ICE ( sprich: "eiß" - In-Circuit Emulator ) eigentlich schon dauernd parat haben. Ich schiebs mal darauf, dass ich bei nem "Anfänger" keinen ICE ( "eiß" ) vermutete.

    So, zur Sache.
    Ich habe mal ein neues Projekt im Studio 7 (meines : 7.1931) aufgemacht, ein GCC C Executable Projekt. Auswahl des Devices: ATtiny84 - und schon präsentiert das Studio7 die Seite [main.c]. Da gleich mal ne ISR angelegt - einfach Deinen Code
    Code:
    ISR(TIM1_COMPA)             // Interrupt Service Routine (Seite 48), sobald Vergleichswert OSR1A erreicht wird
    {
      PORTB ^= (1<<PB0);     // LED blinkt
    }
    eingefügt, - siehe hier :

    ......Bild hier  

    Kaum hatte ich nach dem !! bereits vom Studio 7 vorgeschlagenen !! "ISR(TIM1_COMPA" nen Unterstrich eingetiuppt, kam schon die Ergänzung "vect" - wie es oben gezeigt ist.

    Prima - funktioniert einwandfrei mit TIM1_COMPA_vect ! ..
    Prima. Dann wärs das ja. Und zur Logik - das wurde bereits erklärt. Es gibt eben Unterschiede zwischen Datenblatt-Informationen und den Wünschen bzw. Vorstellungen des Compilers . . . Dazu siehe die Informationen zum Compiler mal hier (die nongnu-site) oder bei Microchip (aktueller Atmelhersteller/-vertreiber) selber !
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    133
    Zitat Zitat von oberallgeier Beitrag anzeigen
    ISR(TIM1_COMPA_vect)
    und keine Angst, der Controller explodiert nicht, selbst wenn mal der Code falsch sein sollte.
    Prima - funktioniert einwandfrei mit TIM1_COMPA_vect !
    Gibt es eine Logik, warum das nicht im Datenblatt steht?
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    872
    Sicher. Die DBs einiger Tiny-Typen sind so alt, da gab es den GCC für AVR noch gar nicht.
    Im einzig damals verfügbaren Assembler hätte auch ein jmp auf ein beliebig benanntes Label gereicht.

    Wie oben geschrieben: Im Zweifelsfall (Warnungen/Fehler) liest der Compiler nicht das DB, sondern die io-Headerdateien.


    Nachtrag: Hab ich für die ISR-Benamsung auch zu Anfang nicht über die Header rausgesucht, sondern bin stattdessen über die Seite
    https://www.nongnu.org/avr-libc/user...nterrupts.html gegangen. Da gibt's ne entsprechende Tabelle, die allerdings seit geraumer Zeit nicht mehr gepflegt wird.
    Geändert von Holomino (14.06.2019 um 15:27 Uhr)

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von frabe Beitrag anzeigen
    Versuche mich gerade an Timer-Interrupt. uC-Schaltung läuft nicht, kein Blinken.
    Warnung vom Compiler;
    'TIM1_COMPA' appears to be a misspelled signal handler, missing __vector prefix [-Wmisspelled-isr]
    Hallo,
    welcher µC, welcher Compiler/IDE?
    Womöglich hilft dies weiter: http://privatfrickler.de/avr-gcc-nam...toren-fur-isr/

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Zitat Zitat von frabe Beitrag anzeigen
    ...
    | Sprache: C | AtmelStudio | Atmel-ICE | Favorit-uC: ATtiny84 | Status: Anfänger |
    Du hast ja mit Deiner Signatur wirklich eine gute Beschreibung Deiner Person und der forumspezifischen Umgebung. Trotzdem so einen oder andern Wunsch oder Hinweis. Atmel-Studios gibts etliche; ich habe AVR Studio 4 (genauer 4.18.700) und Atmel Studio 7.0.1931 am laufen. Da gibts schon (teils kleine, teils größere) Unterschiede. Und ne Frage: was ist ne Atmel-ICE ? Ist das vielleicht ne IDE ?
    Klingt pingelig - nur, ich finde Deine Idee/Signatur a) wirklich super aber b) etwas nicht wirklich gaaanz deutlich/verständlich.

    Schönen Abend.
    Ciao sagt der JoeamBerg

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Diamex Prog-S funktioniert nicht
    Von Der Big F. im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 17.01.2013, 10:58
  2. Prog läuft mit internen Oszillator - mit externem Quarz nich
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 08.10.2009, 21:13
  3. [läuft+Code] Servotest an ATtiny13 läuft nicht
    Von oberallgeier im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 18.10.2007, 16:49
  4. Warum läuft mein Prog nicht?
    Von Elmar.Rieke im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 3
    Letzter Beitrag: 25.01.2006, 08:07
  5. Antworten: 3
    Letzter Beitrag: 15.08.2005, 16:41

Berechtigungen

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

LiFePO4 Speicher Test