www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probelme bei einem Programm


Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich stecke wie ja bekannt noch in den Anfängen des Ganzen hier.

ICh wollte jetzt folgendes Programm basteln, aber ich finde einfach
keinen Befehl, mit dem ich es hinbekomme bzw wie ich das Programm
zusammen basteln soll... vielleicht könnte ja einer das fertige
Programm mit einer zeilenweisen Erklärung reinstellen, dass wäre
natürlich super, dann könnte ich mir das mal genau ansehen...

Programm soll folgende Funktion haben: S1 and not S2 and S3 = H1

Hoffe ihr könnt mir helfen!

Gruß
Dominik

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Controller? Programmiersprache?

if (S1 && (!S2) && S3)
 {
  H1 = 1;
 }
 else
 {
  H1 = 0;
 }

Das war C...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmiere das mit AVR Studio und dann will ich es auf dem STK 500
testen!

Ja C und SPS-Sprache kann ich ja, nur ich habe zur Zeit noch derbe
Probleme mit den Befehlen für den MC. Hab mir jetzt schon sone 2
seitige Liste mit allen Befehlen besorgt...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du sagst, was genau S1..3 und H1 sind, dann kannst Du sicher besser
geholfen werden...

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sind S1 bis S3? Bitkonstanten? Dann müsstest du die Zugehörigkeit
mit in die Abfrage bringen:
if ((PINB &(1<<S!) && (!(PINB &(1<<S2)) && (PINB &(1<<S3))
{
 ...
}
wenn Port B (Eingang) abgefragt werden soll

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub' ich hab' 'ne Klammer vergessen:
if ((PINB &(1<<S!) && (!(PINB &(1<<S2)) && (PINB &(1<<S3)))

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups:
if ((PINB &(1<<S!)) && (!(PINB &(1<<S2))) && (PINB &(1<<S3)))

jetzt aber!

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hiesige AVR-GCC-Tutorial hast du dir schon angeguckt, oder?
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry.. mit S1 S2 und S3 meinte ich Taster, also die Taster auf dem
STK500 und mit H1 die LED1...

komme aus der "grob" Elektrik g

In SPS Sprache wäre das ja nen Kinderspiel...

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In SPS Sprache wäre das ja nen Kinderspiel...

Eine SPS hat hier auch schon irgendwer mit einem AVR umgesetzt.

Zum "STK500-Problem":
Wie hast du die Flachbandkabel angeschlossen; sprich: Welcher Port ist
mit den Tastern verbunden und welcher mit den LEDs?

Die Taster des STK500 sind übrigens low-aktiv (gedrückt = 0V) und die
LEDs leuchten auch nur, wenn man eine 0 am entsprechenden Port
ausgibt.

Ist das dein allererstes Programm?
Dann würde es sich anbieten erst mal die LEDs leuchten zu lassen, dann
blinken und dann ein Lauflicht zu programmieren.
Dann kann man mit den Tastern rumspielen.
Das einfachste Programm ist sowieso:

PORTA = PINB;

(natürlich in ein C-Programm verpackt).

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Habe die LEDs schonmal leuchten lassen mit dem Programm S1 and S2
=H1..
War aber auch schon ein schwieriges Unterfangen!

Also die Taster stecken auf Port D und die LEDs auf Port C

Danke schonmal vorab für die gute Hilfe hier...

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if ((!(PIND &(1<<1))) && (PIND &(1<<S2)) && (!(PINB &(1<<S3)))
{
 PORTC &= ~(1<<1);
}
else
{
 PORTC |= (1<<1);

Und das schön ein C-Programm verpacken.
Die Klammern mußt du vielleicht noch mal durchzählen...

Autor: Karl-heinz Domnick (kalledom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es müssen Brücken von den Tastern (Pfosten SWITCHES) zu den Eingängen
des µC (Pfosten PORTA...PORTD) und eine Drahtbrücke von den LEDs
(Pfosten LEDS) zum Ausgang des µC (Pfosten PORTA...PORTD) gesteckt
werden.

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wieso in einem C Programm?

Habe bisher immer so programmiert

include "4433def.inc"     ;bzw. 2333def.inc

         ldi r17, 0xFF
         out DDRC, r17     ;Port B durch Ausgabe von 0xFF ins
                           ;Richtungsregister DDRB als Ausgang
konfigurieren
         ldi r17, 0x00
         out DDRA, r17     ;Port D durch Ausgabe von 0x00 ins
                           ;Richtungsregister DDRD als Eingang
konfigurieren
loop:
         in r17, PINA      ;an Port D anliegende Werte (Taster) nach
r16 einlesen
         out PORTC, r17    ;Inhalt von r16 an Port B ausgeben
         rjmp loop         ;Sprung zu "loop:" -> Endlosschleifede"
-> Endlosschleife


Das war jetzt nen Beispiel aus dem AVR Studio!

Diese programmstruktur bräcuhte ich!

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wieso in einem C Programm?
>Ja C und SPS-Sprache kann ich ja

Solche Aussagen lassen darauf schliessen.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum sagste nicht gleich, dass Du in Assembler programmierst? Dann
hätten sich viele Leute viel Arbeit sparen können. Stattdessen erzählst
Du was von C un SPS...

In Deinem Beispiel schreibst Du
> in r17, PINA  ;an Port D anliegende Werte (Taster) nach r16 einlesen
> out PORTC, r17    ;Inhalt von r16 an Port B ausgeben
Überlege bitte mal, ob Du wirklich weißt, was Du willst. Und wenn ja,
dann sorge dafür, dass Programm und Kommentar sich nicht widersprechen.
Bringt Dich selber wahrscheinlich auch durcheinander...

Also, wenn S1..3 an den Pins 1..3 von Port D hängen, dann könnte das so
aussehen:

loop:
in r16, PIND
andi r16, 0b00001110 ;Pins maskieren, Bits 1..3
cpi r16, 0b00001010  ;Vergleich mit Maske "S1 && !S2 && S3"
breq led_ein    ;Springe zu "LED einschalten"
sbi portc, 0    ;LED an PORTC.0 aus
rjmp loop

led_ein:
cbi portc, 0    ;LED an PORTC.0 ein
rjmp loop

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und ins aktuelle AVRStudio lässt sich der AVR-gcc problemlos
integrieren...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry... hätte ich besser mal dran denken sollen...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wer das Programm von johnny mal testen und meld mich dann gleich
nochmal...

Danke schonmal für eure Hilfe... die Erklärungen dahinter bringen mir
schon ne ganze Menge!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, die Taster sind beim STK500 in meiner Erinnerung ja Low-aktiv.
Muss also unten heißen

;...
andi r16, 0b00001110 ;Pins maskieren, Bits 1..3
cpi r16, 0b00000100  ;Vergleich mit Maske "S1 && !S2 && S3"
;...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Studio eingegeben und laut dem Studio sind 7 Fehler drin

Hier mal Das Programm..

include "4433def.inc"

         ldi r16, 0xFF  ;PortC als Ausgang konfigurieren
         out DDRC, r16


loop:
in r16, PIND
andi r16, 0b00001110   ;Pins maskieren, Bits 1..3
cpi r16, 0b00000100    ;Vergleich mit Maske "S1 && !S2 && S3"
breq led_ein        ;Springe zu "LED einschalten"
sbi portc, 0        ;LED an PORTC.0 aus
rjmp loop

led_ein:
cbi portc, 0        ;LED an PORTC.0 ein
rjmp loop



Ich verzweifel langsam noch.. sich das selber beizubringen ist nicht so
einfach wie ich mir das gedacht habe!

Danke für eure Geduld...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleine Ursache, aber grosse Wirkung... Hab den fehler gefunden der zu
den problemen geführt hat..

der . vor include hat gefehlt.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wie es oben steht, bekomme ich 2 Fehler. Wenn ich den fehlenden Punkt
vor dem include reinmache, assembliert er fehlerfrei...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programm ist nun auf dem Board...und läuft

Kann ich eigentlich die Taster nur hexadezimal maskieren oder auch
anders?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
binäre Schreibweise:
0b00000100

hexadezimale Schreibweise:
0x04

dezimale Schreibweise:
4

Das sollte man sich aussuchen können.

Falls du dich demnächst mit den im AVR integrierten Bausteinen (Timer,
USART etc) beschäftigst, solltest du dir gleich die
(1<<xyz)-Schreibweise angewöhnen, wobei xyz für die Bit-Bezeichnung
steht. Das erhöht die Lesbarkeit ungemein. Die BitBezeichnungen findet
man im Datenblatt. Da gibt es meist auch Codebeispiele in asm und C.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso hexadezimal? In meinem Beispiel sind sie binär maskiert... Du
kannst selbstverständlich anstelle von "0b00001010" auch "0x0a"
oder "10" schreiben, aber besonders anschaulich ist das glaub ich
nicht. Du willst das Programm ja später auch noch lesen können.

Wenn Du mit den Portpin-Definitionen aus der 4433def.inc arbeitest,
kannst Du aber auch die C-Notation nehmen, die in den anderen
Beispielen oben angegeben ist, also anstelle von "0b00001010" "(1 <<
PIND3)|(1 << PIND1)" schreiben...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhh.. das sind so details mit denen ich mich noch intensiv beschäftigen
muss... habe lange nichts mit den verschiedenen Zahlensystemen
gemacht.. merke das ich schwer eingerostet bin...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch ne blöde Frage.. wie ist denn die Wertigekit der einzelnen Taster?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sind acht Taster. Ein Byte hat acht Bit.
Die Taster sind durchnummeriert. Entweder von 0 bis 7 oder von 1 bis 8
(ich vermute mal von 0 bis 7).
Benutzt man jetzt die Nummer (0..7) des Tasters, hat man den Exponenten
der Wertigkeit zur Basis 2.
Bei der binären Darstellung steht links das Bit mit dert höchsten
Wertigkeit und rechts das mit der niedrigsten (2^0 = 1).

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verstehst Du unter "Wertigkeit"? Wenn ein Taster an Pin 3 von Port
D hängt, dann ist seine "Wertigkeit" 2^3, also 8, wenn es das ist, was
Du meinst...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Güte, heute klappt das mit dem "gleichzeitig-posten" aber ganz
hervorragend...

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau die gleiche wie die Bits, die sie im Program repräsentieren
wenn du das Byte vom Port einliest an dem die Taster hängen.

  0b00000000
    ^^^^^^^^
    |||||||1
    ||||||2
    |||||4
    ||||8
    |||16
    ||32
    |64
    128

Aber das interssiert eigentlich niemanden wirklich, da man
solche Dinge sowieso nicht dezimal angibt (ausser man ist
Masochist).

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei ich schneller bin...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rahul:
Meinste net, dass das alphabetisch geht? "i" kommt dummerweise vor
"j". Sollte mich vielleicht in Zukunft "Alfons" nennen...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
´´Habe gerade mal versucht auf PIN A einzulesen, da gibt er mir folgende
Fehlermeldung... liegts an mir oder am Board?

Recicht es für "in r16, PIND" einfach "in r16, PINA" zu schreiben
oder muss noch mehr geändert werden?


Building project...
C:\Dokumente und Einstellungen\Phil>del "C:\Dokumente und
Einstellungen\Phil\test0409.lst"
C:\Dokumente und Einstellungen\Phil\test0409.lst konnte nicht
gefunden werden
C:\Dokumente und Einstellungen\Phil>"C:\Programme\Atmel\AVR
Tools\AvrAssembler\avrasm32.exe" -fI  -o "C:\Dokumente und
Einstellungen\Phil\test0409.hex" -d "C:\Dokumente und
Einstellungen\Phil\test0409.obj" -e "C:\Dokumente und
Einstellungen\Phil\test0409.eep" -I "C:\Dokumente und
Einstellungen\Phil" -I "C:\Programme\Atmel\AVR
Tools\AvrAssembler\Appnotes" -w  -m "C:\Dokumente und
Einstellungen\Phil\test0409.map" "C:\Dokumente und
Einstellungen\Phil\test0409.asm"
AVRASM: AVR macro assembler version 1.76.4 (Aug  6 2004 07:02:13)
Copyright (C) 1995-2004 ATMEL Corporation
Creating   'C:\Dokumente und Einstellungen\Phil\test0409.eep'
Creating   'C:\Dokumente und Einstellungen\Phil\test0409.hex'
Creating   'C:\Dokumente und Einstellungen\Phil\test0409.obj'
Creating   'C:\Dokumente und Einstellungen\Phil\test0409.map'
Assembling 'C:\Dokumente und Einstellungen\Phil\test0409.asm'
Including  'C:\Programme\Atmel\AVR
Tools\AvrAssembler\Appnotes\4433def.inc'
C:\Dokumente und Einstellungen\Phil\test0409.asm(8) : error :
Undefined variable referenced
Assembly complete with 1 error
Deleting   'C:\Dokumente und Einstellungen\Phil\test0409.eep'
Deleting   'C:\Dokumente und Einstellungen\Phil\test0409.obj'
Deleting   'C:\Dokumente und Einstellungen\Phil\test0409.hex'
Deleting   'C:\Dokumente und Einstellungen\Phil\test0409.map'



Jetzt blicke ich wenigstens schonmal bei dem ZTahlensystem wieder
durch! Mühsam ernährt sich das Eichhörnchen! ;-)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der 4433 hat keinen Port A...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was kann ich denn machen um den Port a benutzen zu können? Weil so ist
das ja mist!

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[OT]
l kommt auch noch vor m...
Meinst du, Andreas hat hier noch einen Beitragsnamensortieralgorithmus
mit eingebaut?

>Mühsam ernährt sich das Eichhörnchen! ;-)
Kennst du "Hammy"? Cola trinken verhilft manchmal zur höheren
Geschwindigkeit.
[/OT]

@Problem: Ich vermute es licht daran, dass dein Controller gar keinen
Port A hat. (Gibt's das?)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du Port A benutzen willst, musst Du Dir einen Controller kaufen,
der einen hat (Mega16, 32, 8515, 8535... nur um ein paar Beispiele zu
nennen)...

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Mega16 war zumindest bei meinem "letzten"* STK500 dabei.

(*) das für die Firma.

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich weiss nicht ob das jetztw as aussagt, aber ich habe nen
AT90S8515 auf dem Board stecken!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann hast Du ein älteres STK500. Der 90S8515 hat aber auch nen Port A.
Wenn Du allerdings die 4433def.inc einbindest, kann das mit dem 8515
nicht klappen. Dann musst Du schon die 8515def.inc einbinden...

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann hast du die falsche Inklude-Datei

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

So habe mal ein bisschen rumgetestet und hoffentlich endlich
verstanden.

Jetzt hätte mal ne andere Frage..

Habe 2 Seiten mit verschiedenen befehlen von ATMEL.
Als Beispiel nehme ich mal das ANDI.

Auf dem Blatt steht dann da: ANDI / Rd, K  / Logical AND Register and
Constant / RD < Rd * K

Verstehe nicht wie man das Rd < Rd * K liest bzw. was es bedeutet.
Wofür steht das Mal Zeichen und so..etwas schwer zu erklären..

Hoffe ihr versteht was ich meine...

Gruß
Dominik

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halte dich einfach an die Beschreibung.
Das '*' ist einfach nur ein Symbol, das für UND benutzt
wurde und hat an dieser Stelle nichts mit Multiplikation
zu tun. So was wird in der Mathematik gerne gemacht: Irgendwelche
Symbole muss man ja nehmen, um eine Operation zu kennzeichnen.
Da kann man auch vertraute Symbole benutzen, solange man nur
definiert, was jedes Symbol bedeuten soll.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dominik:
Drücke mal in AVR-Studio die F1-Taste während der Cursor (im Editor)
auf einem ASM-Befehl steht.

Bit- & Bytebruch...
...HanneS...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ATMEL hat in Datenblättern und im Instruction Set Manual bei
Verknüpfungen eine etwas gewöhnungsbedürftige Notation für die
logischen Operatoren:

+                     entspricht ODER
+ mit Kreis drumrum   entspricht EXKLUSIV-ODER
dicker Punkt          entspricht UND

Hoffe, das hilft Dir weiter.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hat schon seinen Sinn.

Wenn ich 2 Zahlen addiere, dann ist das Ergebnis wahr, wenn eine der
beiden wahr ist (= ODER)

Wenn ich 2 Zahlen multipliziere, dann ist das Ergebnis nur dann wahr,
wenn beide wahr sind (= UND).


Heutige Logiksprachen (Abel) können aber auch richtig addieren und
multiplizieren, daher wird dort & für UND und # für ODER genommen.


Peter

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:
Klar ist das logisch, und ich persönlich komme damit gut klar, aber die
Notation ist in meiner Erfahrung eher ungebräuchlich...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich folgende Anweisung bzw Operation verstehen?

BREQ:   if (Z=1) then PC<PC+k+1

Arbeite gerade die Liste der Operationen durh um sie zu verstehen und
hier bin ich mir nicht ganz klar...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Zero-Flag (Z) gesetzt, dann addiere zum aktuellen Stand des
Programmzählers (Program Counter, PC) den Wert k und eine 1.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei bei den Branch-Befehlen meist das Lebel angegeben wird, zu dem
gesprungen werden soll. Den Offset dazu berechnet der Assembler
alleine.

Einige ASM-Quelltexte auf relativ niedrigem Niveau (also gut zum Lernen
für den Einsteiger) findest Du z.B. hier:
http://www.hanneslux.de/avr/divers/index.html

Bit- & Bytebruch...
...HanneS...

Autor: Dominik F. (dominik1202)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mhh.. also so langsam blicke ich endlich durch...aber das is sicher nur
subjektiv und beim nächsten Programm häng ich wieder in den Seilen...
mhh.

Wer bietet mir live Nachhilfe? Gegen Bezahlung? g

Problem wird einfach sein, dass ich es bis nächstes Jahr recht gut
können muss und das am besten schnell...

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.