Forum: Compiler & IDEs Tiny12 mit GCC programmieren


von Paul H. (powl)


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?
1
#include <avr/io.h>
2
#include <stdint.h>
3
#include <util/delay.h>
4
5
#define    red    PB2
6
#define    green  PB1
7
#define    yellow  PB0
8
#define    blue  PB4
9
10
#define    button  PB3
11
12
int main(void)
13
{
14
  PORTB = (1 << button);
15
  DDRB = (1 << red) | (1 << green) | (1 << yellow) | (1 << blue);
16
17
  while(1)
18
  {
19
    if(bit_is_set(PORTB, red))
20
  {
21
    PORTB &= ~((1 << red) | (1 << green) | (1 << yellow) | (1 << blue));
22
  }
23
  else
24
  {
25
    PORTB |= (1 << red) | (1 << green) | (1 << yellow) | (1 << blue);
26
  }
27
28
    _delay_ms(100);
29
  }
30
}

lg PoWl

von Peter D. (peda)


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

von Martin T. (mthomas) (Moderator) Benutzerseite


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.

von Bluehorn (Gast)


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?

von Paul H. (powl)


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

von Rolf Magnus (Gast)


Angehängte Dateien:

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.

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.