mikrocontroller.net

Forum: Compiler & IDEs Code Problem: Fehler im Code? Compiler will nicht


Autor: Christian Rutschmann (bqzero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halli Hallo

Habe ein Problem mit meinem Code. Finde den Fehler nicht. Meiner Meinung
nach stimmt der Code so wie er ist, aber der compiler ist anderer 
Meinung. Bin noch nicht sehr erfahren mit C und Micro's. wäre für jede 
Hilfe dankbar.
übrigends ich verwende das myAVR Workpad. Einen Atmega8515
#include <avr/io.h> //Controllerspezifikationenen
#include <stdlib.h> //Standard Library
#ifndef F_CPU
#define F_CPU 3686400UL // Quarz mit 3.6864 Mhz
#endif
#include <util/delay.h> //Verzögerungen
//-------------------------------------------------------------------------
//Diverses
//-------------------------------------------------------------------------
int anzahllichter;//Anzahl muss durch 8 teilbar sein, dann -1 rechnen zB. 16-->15
int reihenfolge[31];//Gleicher Wert wie anzahllichter
int licht[31];//Gleicher Wert wie anzahllichter
DDRA=0b11111111;//Ausgaenge
DDRB=0b11111111;//Ausgaenge
DDRC=0b11111111;//Ausgaenge
DDRD=0b11111111;//Ausgaenge
DDRE=0b00000000;//Eingaenge
licht[0]=(1<<PA0);
licht[1]=(1<<PA1);
licht[2]=(1<<PA2);
licht[3]=(1<<PA3);
licht[4]=(1<<PA4);
licht[5]=(1<<PA5);
licht[6]=(1<<PA6);
licht[7]=(1<<PA7);
licht[8]=(1<<PB0);
licht[9]=(1<<PB1);
licht[10]=(1<<PB2);
licht[11]=(1<<PB3);
licht[12]=(1<<PB4);
licht[13]=(1<<PB5);
licht[14]=(1<<PB6);
licht[15]=(1<<PB7);
licht[16]=(1<<PC0);
licht[17]=(1<<PC1);
licht[18]=(1<<PC2);
licht[19]=(1<<PC3);
licht[20]=(1<<PC4);
licht[21]=(1<<PC5);
licht[22]=(1<<PC6);
licht[23]=(1<<PC7);
licht[24]=(1<<PD0);
licht[25]=(1<<PD1);
licht[26]=(1<<PD2);
licht[27]=(1<<PD3);
licht[28]=(1<<PD4);
licht[29]=(1<<PD5);
licht[30]=(1<<PD6);
licht[31]=(1<<PD7);
//-------------------------------------------------------------------------
//Zufallsfunktion
//-------------------------------------------------------------------------
int zufall(int zahlenrange)
{
  //Funktion liefert ganzzahlige Werte zwischen 0 und zahlenrange
  //Werte sind einmalig. Und lassen sich als Zufallszahl verwenden.
  int rand1;
  int rand2;
  int rand3=0;
  int randz;
  int randy=0;
  int werte[zahlenrange];
  int nr[zahlenrange];
  //Zufallszahlen generieren
  for(rand1=0;rand1<=zahlenrange;rand1++)
  {
    srand(TCNT0);
    werte[rand1]=rand()%100;
    for(randz=0;randz<=zahlenrange;randz++)
    {
      if(nr[randz]!=werte[rand1])
      {
        randy++;
      }
    }
    if(randy<1)
    {
      nr[rand1]=werte[rand1];
    }
  else
    {
      rand1--;
    }
  }
  //Reihenfolge festlegen.
  for(rand1=0;rand1<=zahlenrange;rand1++)
  {
    for(rand2=0;rand2<=zahlenrange;rand2++)
    {
      if(rand1!=rand2)
      {
        if(nr[rand1]<nr[rand2])
        {
          rand3+=1;
        }
      }
    }
    reihenfolge[rand1]=rand3;
    rand3=0;
  }
}
//-------------------------------------------------------------------------
//Hauptprogramm
//-------------------------------------------------------------------------
int main(void)
{
  int z;
  int y;
  int licht[anzahllichter];
  int tag=10; //Sekunden
  int uebergang=3; //Sekunden
  int nacht=10; //Sekunden
  TCCR0|=(1<<CS00);
  TCCR0|=(1<<CS02); //Countergeschwindigkeit 1/1024 der CPU Frequenz ca 3600Hz

  while(1)
  {
    //TAG
    for(z=0;z<=1;z++)
    {
      PORTA=0b11111111;
      _delay_ms(10*tag);
    }
    //Uebergang
    for(z=0;z<=1;z++)
    {
      zufall(anzahllichter);
      for(y=0;y<=anzahllichter;y++)
      {
        if(y<=7)
        {
          PORTA=licht[reihenfolge[y]];
        }
        if(7<y<=15)
        {
          PORTB=licht[reihenfolge[y]];
        }
        if(15<y<=23)
        {
          PORTC=licht[reihenfolge[y]];
        }
        if(23<y<=31)
        {
          PORTD=licht[reihenfolge[y]];
        }
        _delay_ms(10*uebergang/(anzahllichter+1));
      }
    }
    //Nacht
    for(z=0;z<=1;z++)
    {
      PORTA=0b00000000;
      _delay_ms(10*nacht);
    }
  }
}

Danke schon mal für jede Hilfe

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int licht[31]
legt ein Array von 31 Integer-Variablen an, und zwar 
licht[0]...licht[30].
licht[31] gibt es nicht! Immer dran denken: Bei der Deklaration wird die 
Anzahl der Array-Elemente angegeben. Die Zählung beginnt aber mit 
dem Index 0.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if(7<y<=15)
Und sowas geht in C gar nicht! Wenn überhaupt, dann
if((y > 7) && (y <= 15))

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auweia! Da ist aber einiges im Argen. Bitte schau Dir mal ein C-Tutorial 
an. Ein Array kann nicht zur Laufzeit mit variabler Länge deklariert 
werden! Das da geht gar nicht:
int werte[zahlenrange];
int nr[zahlenrange];

Abgesehen davon ist es bei solchen Anfragen unsinnig, zu erzählen, dass 
der Compiler Fehlermeldungen ausgibt, ohne den Wortlaut der 
Fehlermeldungen ebenfalls anzugeben. Oder willst Du uns hier mit 
heiteren Ratespielchen beglücken?

Autor: Christian Rutschmann (bqzero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry hab die Fehlermeldung vergessen.
Hier:
test.cc:35  35: error: expected unqualified-id before "volatile"
 35: error: expected `)' before "volatile"
 35: error: expected `)' before "volatile"
test.cc:36  36: error: expected unqualified-id before "volatile"
 36: error: expected `)' before "volatile"
 36: error: expected `)' before "volatile"
test.cc:37  37: error: expected unqualified-id before "volatile"
 37: error: expected `)' before "volatile"
 37: error: expected `)' before "volatile"
test.cc:38  38: error: expected unqualified-id before "volatile"
 38: error: expected `)' before "volatile"
 38: error: expected `)' before "volatile"
test.cc:39  39: error: expected unqualified-id before "volatile"
 39: error: expected `)' before "volatile"
 39: error: expected `)' before "volatile"
test.cc:40  40: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:41  41: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:42  42: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:43  43: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:44  44: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:45  45: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:46  46: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:47  47: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:48  48: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:49  49: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:50  50: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:51  51: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:52  52: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:53  53: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:54  54: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:55  55: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:56  56: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:57  57: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:58  58: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:59  59: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:60  60: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:61  61: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:62  62: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:63  63: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:64  64: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:65  65: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:66  66: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:67  67: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:68  68: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:69  69: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:70  70: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:71  71: error: expected constructor, destructor, or type 
conversion before '=' token
=' token
test.cc:61  61: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:62  62: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:63  63: error: expected constructor, destructor, or type 
conversion before '=' token
test.cc:64  64: error: e

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
_delay_ms(10*nacht);
Und das geht auch schief. Schau Dir die Dokumentation der 
Bibliotheksfunktionen an! Da steht, dass die _delay_XX-Funktionen 
erstens in ihrer maximalen Verzögerungszeit begrenzt sind (ion 
Abhängigkeit vom CPU-Takt) und außerdem, dass sie nur dann korrekt 
funktionieren, wenn die übergebenen Werte zur Compilezeit bekannt 
(konstant) sind und wenn die Optimierung des Compilers eingeschaltet 
ist!

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, C ist nicht BASIC.  Ausführbarer Code kann in C nur innerhalb
einer Funktion erscheinen, nicht ,,einfach so'' auf globaler Ebene.

Wenn du vor all deine Initialisierungen ein
static void init(void){
und dahinter eine
}
schreibst und als erstes in main()
init();
aufrufst, dann compiliert das Ganze anstandslos.

Du hast die Benutzungshinweise zu _delay_ms() aber nicht beachtet,
das wird so nicht sinnvoll funktionieren (sondern viel zu langsam
werden): diese Funktion kann nur mit einer zur Compilezeit bekannten
Anzahl von Millisekunden sinnvoll arbeiten.  Besser noch, nimm einen
Timer für die Verzögerung.

Die Erzeugung eines random seed durch Auslesen eines Zählers allein
bringt dir keinen Zufall, sondern mit hoher Wahrscheinlichkeit stets
wieder dasselbe.  Der Controller ist halt eine Maschine, und wenn er
sonst durch nichts beeinflusst wird, arbeitet er die gleiche
Befehlssequenz halt auch immer in der gleichen Zeit ab.  Du brauchst
folglich für echten Zufall noch irgendein anderes physikalisches
Ereignis, das nicht vorhersagbar ist.  Das kann eine Bediener-
Interaktion sein, es kann aber auch von der Taktfrequenz eines zweiten
Timers abgeleitet sein, der nicht starr mit dem Hauptoszillator
gekoppelt ist.  Wenn du den ATmega8515 von einem Quarz betreibst (so
klingt dein F_CPU), dann könntest du dafür indirekt den
1-MHz-RC-Oszillator benutzen.  Dieser wird für das Timing der
EEPROM-Schreibfunktion herangezogen.  Wenn du also misst, wie viele
CPU-Takte (Quarz) das Schreiben einer EEPROM-Zelle benötigt, so wird
diese Zahl geringfügig variieren (Betriebsspannung, Temperatur), das
kannst du dann als random seed benutzen.  Vorsicht aber, eine
EEPROM-Zelle hat nur eine begrenzte Lebensdauer, wenn du das zu häufig
machst, machst du sie damit kaputt (was aber natürlich für den
gewünschten Zweck egal wäre).

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Rutschmann wrote:
> Sorry hab die Fehlermeldung vergessen.
Neee, jetzt korrigier erst mal die o.g. Sachen. Dann compilierst Du das 
neu und schickst dann nochmal das was übrig bleibt.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes M. wrote:

>
> if(7<y<=15)
> 
> Und sowas geht in C gar nicht!

Der Compiler beklagt sich nicht darüber, also geht es. ;-)  Es wird
aber sehr wahrscheinlich nicht das tun, was der Dichter uns damit
sagen wollte...  Es wird zuerst 7 mit y verglichen.  Das Ergebnis ist
entweder 0 oder 1, das wird dann auf <= 15 verglichen.  Das Ergebnis
ist dann immer wahr.

Wenn man die Warnungen einschaltet, sagt der Compiler das auch:
foo.c: In function 'zufall':
foo.c:104: warning: no return statement in function returning non-void
foo.c: In function 'main':
foo.c:138: warning: comparisons like X<=Y<=Z do not have their mathematical meaning
foo.c:142: warning: comparisons like X<=Y<=Z do not have their mathematical meaning
foo.c:146: warning: comparisons like X<=Y<=Z do not have their mathematical meaning

Autor: Christian Rutschmann (bqzero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab nun die Dinge korrigiert.
#include <avr/io.h> //Controllerspezifikationenen
#include <stdlib.h> //Standard Library
#ifndef F_CPU
#define F_CPU 3686400UL // Quarz mit 3.6864 Mhz
#endif
#include <util/delay.h> //Verzögerungen
//-------------------------------------------------------------------------
//Diverses
//-------------------------------------------------------------------------
static void init(void)
{
  int anzahllichter=32;//Anzahl muss durch 8 teilbar sein
  int reihenfolge[32];//Gleicher Wert wie anzahllichter
  int licht[32];//Gleicher Wert wie anzahllichter
  DDRA=0b11111111;//Ausgaenge
  DDRB=0b11111111;//Ausgaenge
  DDRC=0b11111111;//Ausgaenge
  DDRD=0b11111111;//Ausgaenge
  DDRE=0b00000000;//Eingaenge
  licht[0]=(1<<PA0);
  licht[1]=(1<<PA1);
  licht[2]=(1<<PA2);
  licht[3]=(1<<PA3);
  licht[4]=(1<<PA4);
  licht[5]=(1<<PA5);
  licht[6]=(1<<PA6);
  licht[7]=(1<<PA7);
  licht[8]=(1<<PB0);
  licht[9]=(1<<PB1);
  licht[10]=(1<<PB2);
  licht[11]=(1<<PB3);
  licht[12]=(1<<PB4);
  licht[13]=(1<<PB5);
  licht[14]=(1<<PB6);
  licht[15]=(1<<PB7);
  licht[16]=(1<<PC0);
  licht[17]=(1<<PC1);
  licht[18]=(1<<PC2);
  licht[19]=(1<<PC3);
  licht[20]=(1<<PC4);
  licht[21]=(1<<PC5);
  licht[22]=(1<<PC6);
  licht[23]=(1<<PC7);
  licht[24]=(1<<PD0);
  licht[25]=(1<<PD1);
  licht[26]=(1<<PD2);
  licht[27]=(1<<PD3);
  licht[28]=(1<<PD4);
  licht[29]=(1<<PD5);
  licht[30]=(1<<PD6);
  licht[31]=(1<<PD7);
}
//-------------------------------------------------------------------------
//Zufallsfunktion
//-------------------------------------------------------------------------
int zufall(int zahlenrange)
{
  init();
  //Funktion liefert ganzzahlige Werte zwischen 0 und zahlenrange
  //Werte sind einmalig. Und lassen sich als Zufallszahl verwenden.
  int rand1;
  int rand2;
  int rand3=0;
  int randz;
  int randy=0;
  int werte[32];//Gleicher Wert wie anzahllichter
  int nr[32];//Gleicher Wert wie anzahllichter
  //Zufallszahlen generieren
  for(rand1=0;rand1<zahlenrange;rand1++)
  {
    srand(TCNT0);
    werte[rand1]=rand()%100;
    for(randz=0;randz<zahlenrange;randz++)
    {
      if(nr[randz]!=werte[rand1])
      {
        randy++;
      }
    }
    if(randy<1)
    {
      nr[rand1]=werte[rand1];
    }
  else
    {
      rand1--;
    }
  }
  //Reihenfolge festlegen.
  for(rand1=0;rand1<zahlenrange;rand1++)
  {
    for(rand2=0;rand2<zahlenrange;rand2++)
    {
      if(rand1!=rand2)
      {
        if(nr[rand1]<nr[rand2])
        {
          rand3+=1;
        }
      }
    }
    reihenfolge[rand1]=rand3;
    rand3=0;
  }
}
//-------------------------------------------------------------------------
//Hauptprogramm
//-------------------------------------------------------------------------
int main(void)
{
  init();
  int z;
  int y;
  int tag=10; //Sekunden
  int uebergang=3; //Sekunden
  int nacht=10; //Sekunden
  TCCR0|=(1<<CS00);
  TCCR0|=(1<<CS02); //Countergeschwindigkeit 1/1024 der CPU Frequenz ca 3600Hz

  while(1)
  {
    //TAG
    for(z=0;z<=1;z++)
    {
      PORTA=0b11111111;
      _delay_ms(10);
    }
    //Uebergang
    for(z=0;z<=1;z++)
    {
      zufall(anzahllichter);
      for(y=0;y<=anzahllichter;y++)
      {
        if(y<=7)
        {
          PORTA=licht[reihenfolge[y]];
        }
        if((7<y)&&(y<=15))
        {
          PORTB=licht[reihenfolge[y]];
        }
        if((15<y)&&(y<=23))
        {
          PORTC=licht[reihenfolge[y]];
        }
        if((23<y)&&(y<=31))
        {
          PORTD=licht[reihenfolge[y]];
        }
        _delay_ms(10);
      }
    }
    //Nacht
    for(z=0;z<=1;z++)
    {
      PORTA=0b00000000;
      _delay_ms(10);
    }
  }
}

Bekomme nun einige Meldungen. Habe das Gefühl das diese Sache mit
static void init(void)
nicht funktioniert.
Meldungen wie folgt:
test.cc  In function `int zufall(int)': 
test.cc:124  124: error: `reihenfolge' was not declared in this scope 
test.cc  In function `int main()': 
test.cc:153  153: error: `anzahllichter' was not declared in this scope 
test.cc:158  158: error: `licht' was not declared in this scope 
 158: error: `reihenfolge' was not declared in this scope 
test.cc:162  162: error: `licht' was not declared in this scope 
 162: error: `reihenfolge' was not declared in this scope 
test.cc:166  166: error: `licht' was not declared in this scope 
 166: error: `reihenfolge' was not declared in this scope 
test.cc:170  170: error: `licht' was not declared in this scope 
 170: error: `reihenfolge' was not declared in this scope 

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
> Johannes M. wrote:
>
>>
>> if(7<y<=15)
>> 
>> Und sowas geht in C gar nicht!
>
> Der Compiler beklagt sich nicht darüber, also geht es. ;-)  Es wird
> aber sehr wahrscheinlich nicht das tun, was der Dichter uns damit
> sagen wollte...
Das meinte ich eigentlich damit. Ich bin eben kein Compiler und sehe 
auch Fehler, die nicht syntaktischer Natur sind;-) Aber wie ein Gedicht 
sieht das ganze eigentlich nicht aus...

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Rutschmann wrote:
> Hab nun die Dinge korrigiert.

> Bekomme nun einige Meldungen. Habe das Gefühl das diese Sache mit
>
static void init(void)
> nicht funktioniert.
Jörg hat ja auch geschrieben, Du sollst die Initialisierungen (also 
die Zuweisungen) mit static void init(void) Klammern und nicht die 
Variablendklarationen! So wie Du es jetzt da stehen hast, sind all die 
Variablen funktionslokal in init() und dementsprechend in den anderen 
Funktionen unbekannt. Die Deklarationen müssen natürlich global bleiben!

Autor: Christian Rutschmann (bqzero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mit deiner Beschreibung einwenig mühe. Wie sollte das dann 
aussehen?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int anzahllichter=32;//Anzahl muss durch 8 teilbar sein
int reihenfolge[32];//Gleicher Wert wie anzahllichter
int licht[32];//Gleicher Wert wie anzahllichter
bleiben vor init() auf globaler Ebene stehen.

Du solltest dir ein gutes C-Buch zulegen oder einen Einsteigerkurs
C im Internet aufsuchen.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Rutschmann wrote:
> Habe mit deiner Beschreibung einwenig mühe. Wie sollte das dann
> aussehen?
Meinst Du meinen Beitrag?

Also, Langversion:
Jede Variable hat einen Gültigkeitsbereich (Scope). Außerhalb des 
Gültigkeitsbereiches ist die Variable unbekannt und kann demzufolge dort 
nicht verwendet werden. Wenn eine Variable innerhalb einer Funktion 
deklariert wird, dann ist sie auch nur innerhalb der Funktion gültig. 
Wenn eine Variable mehreren Funktionen zur Verfügung stehen soll, dann 
muss sie global deklariert werden, also außerhalb jeglicher Funktion 
(und Deklarationen sind praktisch das einzige, was in C außerhalb von 
Funktionen erlaubt ist!). Du hattest ZUweisungen an Variablen 
außerhalb einer Funktion stehen, und das ist in C nicht zulässig! Das 
war das, worauf Jörg Dich hingewiesen hat. Mit Deiner "Lösung" hast Du 
allerdings nicht nur die Zuweisungen, sondern auch die 
Variablendeklarationen in die Funktion init() verfrachtet, mit dem 
Effekt, dass die Variablen jetzt nur noch innerhalb der Funktion init() 
bekannt sind, und nicht mehr da, wo Du sie verwenden willst. Wenn Du 
init() aufrufst, werden die Variablen deklariert und initialisiert, aber 
mit der schließenden Klammer "}" am Ende von init() hören die Variablen 
schon wieder auf, zu existieren.

Autor: Christian Rutschmann (bqzero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay jetzt funktionierts. danke für eure hilfe. weisst du einen kurs den 
du empfehlen kannst? oder ein buch. wie gesagt bin anfänger auf 
unterster stufe.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kernighan & Ritchie: Programmieren in C

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.