__________________________________________________ _
| Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |
Du heilige Kuh, woher hast Du nur das "TIM1_COMPA_xxx" ? ? ?.. im Datenblatt des ATTiny84 finde ich nur TIM1_COMPA als Timer/Counter1 Compare Match A .. keinen TIM1_COMPA_xxx oder TIMER1_COMPA_vect ..
Versuch einfach meine Empfehlung von oben: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:ISR(TIM1_COMPA_vect)Code: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
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 |
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... Signatur geändert AtmelStudio7.x (x steht hier für Sonstige Unter-Unter-Unter-Versionen ..
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... Mein Programmer/Debugger läuft wie ein ICE, Atmel nennt den tatsächlich auch Atmel-ICE ..
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 Codeeingefügt, - siehe hier :Code:ISR(TIM1_COMPA) // Interrupt Service Routine (Seite 48), sobald Vergleichswert OSR1A erreicht wird { PORTB ^= (1<<PB0); // LED blinkt }
......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. 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 !Prima - funktioniert einwandfrei mit TIM1_COMPA_vect ! ..
Ciao sagt der JoeamBerg
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)
Lesezeichen