www.mikrocontroller.net

Forum: Compiler & IDEs illegal opcode mul for mcu attiny2313


Autor: Wallbaum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe den neuen ATtiny 2313 und wollte ein Nibbel
auslesen und in eine Variable speichern.
Die Variable soll mal 9 genommen werden und in OCR0a geschrieben
werden.
Ich bekomme folgende fehlermeldung (illegal opcode mul for mcu
attiny2313).
Wenn ich die Variable 9 mal Plus nehme habe ich das Problem nicht.
Hier ist der Code
if bit_is_set (PINB,0)
    PINB_V += 1;
    if bit_is_set (PINB,1)
    PINB_V += 2;
    if bit_is_set (PINB,2)
    PINB_V += 4;
    if bit_is_set (PINB,3)
    PINB_V += 8;
    PINB_V *= 9;
    OCR0A = PINB_V;
dieser Code produziert den fehler.
if bit_is_set (PIND,0)
    PIND_V += 1;
    if bit_is_set (PIND,1)
    PIND_V += 2;
    if bit_is_set (PIND,2)
    PIND_V += 4;
    if bit_is_set (PIND,3)
    PIND_V += 8;
    OCR0B = (PIND_V + PIND_V + PIND_V + PIND_V + PIND_V + PIND_V + 
PIND_V
+ PIND_V  + PIND_V);
dieser Code geht aber warum?
Mfg. Torben

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil der Tiny2313 keinen Multiplier hat. Das weiss der Compiler aber
nicht. Mit -mmcu=at90s2313 uebersetzen.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
War ein Bug, ist inzwischen dahingehend repariert, dass der ATtiny2313
mittlerweile vom CPU-Kern her wirklich wie ein AT90S2313 behandelt
wird (bis auf die erweiterten IO-Möglichkeiten).

Autor: Torben Wallbaum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Danke es geh ja auch so wie in meinem Code aber ich benutze Winavr
und es gibt noch keine neue Version mit der Libc 1.2.1
Bitte noch eine kurze Mail wie ich den Winavr updaten kann.
Mfg. Torben

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, es gibt einen privaten Port der 1.2.1 für WinAVR.  Steht als
Announcement ganz oben im GCC-Forum von avrfreaks.net.

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe die Libc 1.2.1 instaliert aber das Problem ist damit
nicht weg.
Es kommen beim Compilieren nur noch mehr fehler.
Weitere Hilfe währe nicht schlecht.
Mfg. Torben

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Errm, ja, du brauchst natürlich nicht nur die Bibliothek, sondern du
musst auch den Compiler und Binutils patchen. :-/

Abhilfe für jetzt erstmal: deklarier' den Chip als AT90S2313
gegenüber
dem Compiler.

Die nächste WinAVR-Version wird sich wohl auch nicht mehr so lange
hinziehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.