mikrocontroller.net

Forum: Compiler & IDEs Tiny12 mit GCC programmieren


Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich habe hier einen Tiny12, schon schön verpackt und eingebaut (ohne 
Platine verdrahtet, den krig ich nicht mehr raus).

Nun wollte ich ihn komfortabel mit GCC programmieren und musste mit 
Erschrecken feststellen, dass der Controller vom GCC garnicht 
untertstützt wird. Das ist sehr ärgerlich da er aufgrund seiner Größe 
und des Preises für einfache kleine Steueraufgaben prädestiniert ist. 
Und eben bei sowas einfachem möchte ich nicht mit Assembler 
rumprogrammieren, weil ich es satt habe mich um die korrekte 
Beschreibung von Schleifen und if-then-else-Anweisungen zu kümmern ohne 
mich aufs Wesentliche konzentrieren zu dürfen.

Wenn ich ihm sage es sei ein ATtiny13 der ja zumindest mal pinkompatibel 
ist, funktioniert es nicht.

Gibt es ne Möglichkeit dem GCC den Umgang mit dem Tiny12 beizubringen?
#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>

#define    red    PB2
#define    green  PB1
#define    yellow  PB0
#define    blue  PB4

#define    button  PB3

int main(void)
{
  PORTB = (1 << button);
  DDRB = (1 << red) | (1 << green) | (1 << yellow) | (1 << blue);

  while(1)
  {
    if(bit_is_set(PORTB, red))
  {
    PORTB &= ~((1 << red) | (1 << green) | (1 << yellow) | (1 << blue));
  }
  else
  {
    PORTB |= (1 << red) | (1 << green) | (1 << yellow) | (1 << blue);
  }

    _delay_ms(100);
  }
}

lg PoWl

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul Hamacher wrote:
> Das ist sehr ärgerlich da er aufgrund seiner Größe
> und des Preises für einfache kleine Steueraufgaben prädestiniert ist.

Ist denn der ATtiny13 (1,15€) so dermaßen viel teurer?

Findest Du es überhaupt sinnvoll, für nen MC zu entwickeln, der schon 
lange abgekündigt ist?


> Gibt es ne Möglichkeit dem GCC den Umgang mit dem Tiny12 beizubringen?

Nein, und da er abgekündigt ist, wird das auch nicht mehr passieren.


Peter

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie geht das schon. Zumindest hier beschrieben: 
http://lightner.net/avr/ATtinyAvrGcc.html
Ist aber eine ziemliche Bastelei und lohnt der Aufwand eher nicht.

Autor: Bluehorn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte ja mal GCC Tiny13-Code generieren lassen (kann der das? hätte 
ich nicht gedacht...), und sich das Resultat angucken. Vielleicht ist es 
ja eine Kleinigkeit, die der nicht verkraftet. Tiny12 hat m.W. keinen 
"echten" Stack, sondern speichert die letzten 3 Rücksprungadressen über 
eine Art Hardwarestack. Vielleicht ist das da Problem?

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, wenn man dem compiler sagt, dass er die variablen in registern 
anlegen soll und den codeteil rausnimmt indem er versucht einen stack im 
sram anzulegen.

mal gucken. habe echt keine Lust auf Assembler :-S

Autor: Rolf Magnus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
> Nun wollte ich ihn komfortabel mit GCC programmieren und musste mit
> Erschrecken feststellen, dass der Controller vom GCC garnicht
> untertstützt wird.

Das liegt daran, daß er kein RAM hat und daher auch keinen klassischen 
Stack. Das macht es für den Compiler ziemlich schwierig.

> Das ist sehr ärgerlich da er aufgrund seiner Größe und des Preises für
> einfache kleine Steueraufgaben prädestiniert ist.

Der Tiny13 hat genau dieselbe Größe (*) und zumindest bei Reichelt auch 
genau denselben Preis.

(*) Es gibt den Tiny13 als SSI-/SSU-Version auch in einem noch kleineren 
Gehäuse, siehe Bild. Da sieht man statt des Tiny12 zwar einen Tiny11, 
aber die gibt es beide in denselben Gehäuseformen.

> Und eben bei sowas einfachem möchte ich nicht mit Assembler
> rumprogrammieren,

Gerade bei sowas einfacham ist Assembler noch überschaubar. Dein 
gepostetes Programm kann man ja praktisch direkt 1:1 in Assembler 
umsetzen.

> weil ich es satt habe mich um die korrekte Beschreibung von Schleifen
> und if-then-else-Anweisungen zu kümmern ohne mich aufs Wesentliche
> konzentrieren zu dürfen.

Dann darfst du eben keinen Tiny12 einsetzen. Der ist für C eigentlich 
nicht geeignet.

> Wenn ich ihm sage es sei ein ATtiny13 der ja zumindest mal
> pinkompatibel ist, funktioniert es nicht.

Das liegt daran, daß es eben kein ATtiny13 ist. Der Tiny13 hat RAM.

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.