Forum: Compiler & IDEs illegal opcode mul for mcu attiny2313


von Wallbaum (Gast)


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

von A.K. (Gast)


Lesenswert?

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

von Jörg Wunsch (Gast)


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).

von Torben Wallbaum (Gast)


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

von Jörg Wunsch (Gast)


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.

von Torben (Gast)


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

von Jörg Wunsch (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.