Inline Assembler ATtiny1617

OP #6175404
Hallo,

Bis jetzt habe ich eine WS2812B Kette mit einem ATTiny2313 betrieben.
Bei dem AT2313 habe ich die Ansteuerung der LED's per inline Assembler 
realisiert
1
                // define 1 for WS2812B
2
    asm volatile (
3
      "sbi %[port], %[bit] \n\t"
4
      ".rept %[onCycles] \n\t"
5
      "nop \n\t"
6
      ".endr \n\t"
7
      "cbi %[port], %[bit] \n\t"
8
      ".rept %[offCycles] \n\t"
9
      "nop \n\t"
10
      ".endr \n\t"
11
      ::
12
      [port]    "I" (_SFR_IO_ADDR(PORTA)),
13
      [bit]    "I" (0x02),
14
      [onCycles]  "I" (NS_TO_CYCLES(T1H) -2),
15
      [offCycles] "I" (NS_TO_CYCLES(T1L) - 2)
16
    );

Mein Problem ist nun, dass ich eine Steuerung für den ATtiny1617 
realisieren möchte, mein Problem ist nun jedoch, dass der Kompiler die 
Port Addressen nicht finden kann. Das Projekt habe ich via AtmelStart 
erstellt. Wo finde ich zu diesem Thema die Port definition oder 
weiterführende Links?
Moderator Persönliche Seite #6175507
Markus W. schrieb:
> dass der Kompiler die Port Addressen nicht finden kann

Was heißt das konkret?

Wenn ich mir die Architektur der neuen ATtinys ansehe, dann wirst du 
wohl auf die regulären Ports nicht mehr per IN/OUT/SBI/CBI zugreifen 
können, da sie alle höhere Adressen haben. Im unteren IO-Adressbereich 
sind dagegen diese VPORTs angesiedelt, und du müsstest dann das von dir 
gewünschte Peripheral auf einen solchen virtual port mappen – Abschnitt 
16.6.
(Firma: www.harerod.de) Persönliche Seite #6176658
Jörg W. schrieb:
...
> Wenn ich mir die Architektur der neuen ATtinys ansehe, dann wirst du
> wohl auf die regulären Ports nicht mehr per IN/OUT/SBI/CBI zugreifen
> können, da sie alle höhere Adressen haben. Im unteren IO-Adressbereich
> sind dagegen diese VPORTs angesiedelt, und du müsstest dann das von dir
> gewünschte Peripheral auf einen solchen virtual port mappen – Abschnitt
> 16.6.
Bei Verwendung entsprechender C Bibliotheken merkt man das erstmal nicht 
am Programmieraufwand. Allerdings sind die Zugriffe erstaunlich 
aufwändig, was Kompilat und Laufzeit angeht.
Meine ersten Programme für die 1er-Serie habe ich komplett in 
Maschinensorache geschrieben und leise geflucht, weil der 
Portierungsaufwand für einfache Dinge groß war. Kompensiert wird das 
etwas durch die potentiell höheren Taktraten und das Plus an Speicher.
Die neuen AVRs haben so viel Peripherie an Board, dass der Designer 
indirekten Zugriff einführen musste.
Die neuen AVRs sind richtig schicke und billige low-power Chips. Machen 
sich gut als Manager-Baustein für komplexe Boards mit anderen 
Controllern oder in stand-alone Anwendungen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.