www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP PSK 31 Modlulation im Mikrocontroller


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: marc (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Kennt jemand das PSK31 Verfahren zu Datenübertragung über einen 
Analogkanal?

http://de.wikipedia.org/wiki/PSK31

Ich frage mich, ob man dieses Prinzip in einem Atmega8 oder ähnlichem 
implemetieren könnte.
Nach einiger Überlegung bin ich der Meinung, dass es geht, wenn man 
Tricks wie Abtastratenreduktion usw. anwendet.

Mir ist noch unklar, wie die Zeichenkodierung funktioniert.
Irgendwie muss man sich auf die Phase synchronisieren um zu erkennen, ob 
eine 1 oder eine 0 übertragen wird. Daher meine Vermutung: die 
Information kann eigenlich nur im Phasenwechsel kodiert sein.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Gibt es schon, ein ATmega als PSK31-Decoder und Encoder mit einem 
inzwischen nicht mehr lieferbarem Display von Pollin:

http://www.aatis.de/content/aatis-bei-der-ham-radio-2008
"...Am gleichen Stand werden Workshops zum Aufbau eines einfachen und 
preisgünstigen PSK31-Controllers angeboten, so dass Sende- und 
Empfangsbetrieb ohne Einsatz eines PCs oder Notebooks durchgeführt 
werden kann. Der Transceiver muss dabei eine Abstimmung von 10Hz 
ermöglichen. Es wird nur eine PC-Tastatur mit deutschem Zeichensatz 
benötigt. Jeweils bis zu zwölf Interessenten können täglich um 9.30 Uhr 
und um 13.30 Uhr unter Anleitung diese Schaltung aufbauen."

Autor: marc (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Klingt interessant. Schade, dass es nicht mehr Informationen gibt: Ist 
ein externer AD-Wandler eingebaut? Ist die Schaltung wirklich 
mimimalistisch, also nur Atmega und Display?
Vor allen Dingen: wie ist die Signalverarbeitung umgesetzt? Ist 
tatsächlich ein I/Q Mischer implementiert?

Noch eine andere Frage: kann man mit einem Weltempfänger auf irgendeinem 
Band solche Signale empfangen?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
So sieht die Schaltung und das Blockdiagramm aus. Es gibt einen Artikel 
dazu im Praxisheft 18.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Anscheinend kann ich nicht nachträglich eine zweite Datei anhängen, hier 
das Blockdiagramm aus dem Artikel.

Autor: guest (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
PSK31 ist im Internet ausführlichst bis ins letzte Detail dokumentiert.
Einfach nach "PSK31" googeln und lesen. :-)

Kostenlose PSK31-Software auf dem PC installieren, SSB-Weltempfänger mit
der Soundkarte verbinden, PSK31-Frequenz einstellen. Fertsch! :-)

Autor: marc (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Christoph,

vielen Dank für die Unterlagen. Beim Durchsehen des Schalplans meine ich 
Optimierungsmöglichkeiten zu erkennen:

Den R2R DAC könnte man durch eine einfach PWM mit RC-Tiefpass ersetzen. 
Das würde Bauteile spaaren. Ausserdem könnte man den nachfolgenden 
Verstärker weglassen und statt dessen eine AGC im Eingangszweig 
implementieren.

Auf der Softwareseite ist mir noch nicht ganz klar, warum da eine FFT 
implementiert ist. Um die Phase zu bestimmen, ist die nicht notwendig, 
oder?

marc

Autor: Bernd Wiebus (berndwiebus) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo marc.

> Den R2R DAC könnte man durch eine einfach PWM mit RC-Tiefpass ersetzen.
> Das würde Bauteile spaaren.

Vorsicht! PSK31 soll auch schmalbandig sein. Wenn Du irgendwelche 
Artefakte, Nichtlinearitäten oder gar Reste vom Takt auf dem Signal 
hast, funktioniert Deine Übertragung möglicherweise noch, aber Du störst 
andere mit dem breitbandigen Störnebel, und letztlich wird Deine 
Leistungsbilanz auch mies. In Bezug auf Linearität des Audiozuges ist 
PSK31 relativ anspruchsvoll.


Also an dem Punkte GUT FILTERN!


> Auf der Softwareseite ist mir noch nicht ganz klar, warum da eine FFT
> implementiert ist. Um die Phase zu bestimmen, ist die nicht notwendig,
> oder?

Es gibt PSK 31 Phasenumtastung mit 180 Grad, aber eben auch mehrfach mit 
90 Grad.
Ersteres ist langsamer, aber störfester, zweites empfindlicher aber 
schneller, weil du eine höhere Anzahl von Zuständen überträgst bei 
gleichem Takt.
Es gibt auch noch Varianten mit schnellerem oder langsamerem Takt.
Ausserdem willst Du eventuelle Frequenzabweichungen noch ausgleichen 
können.....
FET könnte Dir dafür die Parameter liefern.

Die Problematik solcher Stand allone Lösungen ist meist die 
Abstimmanzeige....oder Du brauchst eine NF-AFC. Die wird aber 
möglicherweise von benachbarten  Stationen (insbesondere wenn sie 
breitbandig sind) schon beinflusst.


Mit freundlichem Gruß: Bernd Wiebus alias dl1eic

http://www.dl0dg.de

Selbsterkenntnis ist der erste Schritt zur Depression.
Jeder echte Wettbewerb ist ruinös. Darum beruht jede funktionierende 
Wirtschaft auf Schiebung.

Autor: marc (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
>> Den R2R DAC könnte man durch eine einfach PWM mit RC-Tiefpass ersetzen.
>> Das würde Bauteile spaaren.

>Vorsicht! PSK31 soll auch schmalbandig sein. Wenn Du irgendwelche
>Artefakte, Nichtlinearitäten oder gar Reste vom Takt auf dem Signal

In einem Beispiel für ein PSK31 Signal habe ich eine Signalfrequenz von 
1600Hz gesehen. Wenn man eine PWM Frequenz von 32Khz nimmt und einen 
doppelten RC Tiefpass nachschaltet dürfte der Noise flor deutlich 
kleiner 46dB sein. Ich würde vermuten, dass das sogar eine besseres 
Ergebnis als beim R2R DAC mit seinen toleranzbehafteten Widerständen 
ist.

Autor: Bernd Wiebus (berndwiebus) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo marc.

> In einem Beispiel für ein PSK31 Signal habe ich eine Signalfrequenz von
> 1600Hz gesehen. Wenn man eine PWM Frequenz von 32Khz nimmt und einen
> doppelten RC Tiefpass nachschaltet dürfte der Noise flor deutlich
> kleiner 46dB sein. Ich würde vermuten, dass das sogar eine besseres
> Ergebnis als beim R2R DAC mit seinen toleranzbehafteten Widerständen
> ist.

Das ist Richtig. Du must halt nur darauf achten. PSK31 ist eben nicht in 
dem Sinne "digital", als das Du meinst, Du hättest auf unterster Ebene 
nur mit "High/Low" zu tun.

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic

http://www.dl0dg.de

Selbsterkenntnis ist der erste Schritt zur Depression.
Jeder echte Wettbewerb ist ruinös. Darum beruht jede funktionierende
Wirtschaft auf Schiebung.

Autor: marc (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Um die Schwächen und Stärken des Verfahrens besser zu verstehen, möchte 
ich das ganze simulieren.
Für die Simulation benutze ich Octave ( die freie Version von Matlab ).

Ich habe die Modulation des Sendesignals modelliert. Die 
Modulationsfrequenz und Baudrate kann mit den Variblen verändert werden.

Als nächstes ist das Kanalmodell an der Reihe. Dort weiß ich noch nicht, 
wie es realistischerweise aussehen sollte. Ich werde wohl mit einem 
einfachen Rauschoffset beginnen.
% modulation frequency [Hz ]
fmod=1000;
% sample frequency of the system [Hz]
fs=20000;
% bit rate ( Baud [1/s])
baud=31;

%bits to be transmitted
bits=[0 1 0 1];

bittime=1/baud;
sendtime=length(bits)*bittime;

% samples n
n=1:sendtime*fs;

phases=[];
onebitsamples=bittime*fs;

% phase 180 degree
phase180=fs/fmod/2;

% generate phase vektor
for bitcount=1:length(bits)
  for kk=1:onebitsamples
        phases=[phases bits(bitcount)*phase180];
  endfor
endfor

%plot(phases);

envelope=abs(sin(pi*baud/fs*n));
signal=sin(2*pi*fmod/fs*(n+phases));
modulatedSignal=envelope.*signal;

plot(modulatedSignal);
grid on

Autor: marc (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hier mein erster Versuch für den Demodulator:

Das Empfangssignal wird mit der Modulationsfrequenz gemischt
signalMixed=modulatedSignal.*exp(i*2*pi*fmod/fs*n); 
und danach mittels eines einfache RC-Tiefpassmodels gefiltert.
Der einpolige Filter wird deshalb verwedet, weil er sich auf einem 
Atmega8 mit einer Addion und einem Schiebebefehl realisieren lässt und 
damit sehr wenig Rechenzeit verbraucht.
Im Diagramm sieht man den Realteil und den Imaginärteil des 
ungefilterten und gefilterten Signals.
Wie man sieht, findet sich die Modulationsinformation im Imaginärteil 
des Signals wieder ( durch die Berechnung sind die Vektoren 
synchronisiert, das ist in Wirklichkeit nicht gegeben ).
Allerdings sind die Ripple auf den gefilterten Signalen noch ziemlich 
groß, deshalb bin ich mir nicht sicher, ob nicht deutlich bessere Filter 
notwendig sind.
Hat jemand eine Idee für einen recheneffizienten Tiefpass?


Folgende Einstellungen wurden verwendet
% modulation frequency [Hz ]
fmod=1000;
% sample frequency of the system [Hz]
fs=20000;
% bit rate ( Baud [1/s])
baud=250;

%bits to be transmitted
bits=[0 1 1 0 1];


Kode für Mischer und Tiefpassfilter
%############# demodulation ###################################

signalMixed=modulatedSignal.*exp(i*2*pi*fmod/fs*n);

%corner frequency of lowpass
fg=200;
%simple RC-lowpass
a=2*pi*fg/fs;
B=a;
A=[1 a-1];
% filter signal with IIR-Filter ( RC-low pass modell )
signalFiltered=filter(B,A,signalMixed);

subplot(2,1,1)
plot(real(signalMixed));
hold on
plot(real(signalFiltered),'g');
hold on
subplot(2,1,2)
plot(imag(signalMixed));
hold on
plot(imag(signalFiltered),'g');
hold on
grid on


Autor: marc (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Um das Signal noch besser zu Filtern, habe ich einen Moving Average 
Filter und den RC-Tiefpass kombiniert. Die Länge des Moving Average 
Filters entspricht genau der halben Modulationsfrequenz, dadurch wird 
das heruntergemischte Modulationssignal ideal unteredrückt, da sich 
genau an der Stelle der Modulationsfrequenz die Nullstelle des Moving 
Average Filters befindet. Das Ergebnis ist super, wie in den Diagrammen 
zu sehen :-)

Zur Rückgewinnung des Signals habe ich einfach die Phase aus dem I und Q 
Anteil berechnet und siehe da: Die Phase zeigt sich als sehr stabil.
% phase plotten ( rote Farbe )
plot(angle(signalFiltered),'r');

Um zu testen, wie gut das Verfahren funktioniert, habe ich dem 
Nutzsignal ein weises Rauschen mit der selben Amplitude überlagert ( 
2tes Bild ). Die Phase zeigt sich trotz der Störungen weiterhin ziemlich 
stabil.
modulatedSignal=modulatedSignal+(rand(1,length(modulatedSignal))-0.5);

Jetzt muss ich überlegen, wie ich aus dem roten Signal die Bits wieder 
zurückgewinnen kann. Wenn man sich das rote Signal ansieht, scheint das 
kein Problem zu sein. Man sieht ja deutlich, wenn die rote Linie ( Phase 
) oben oder unten ist. Aber einen Algorithmus dazu zu entwerfen, der 
dies Unterscheidung trifft, scheint mir nicht so einfach.

Autor: marc (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hier mal ein reales Signal (aus dem Internet ) durch den "octave 
Demodulator" geschickt.

Seltsamerweise liegt die Modulationsfrequenz wohl bei ca.954Hz. 
Zumindest habe ich die Mischfrequenz so gewählt. Allerdings sieht man, 
dass die Frequenz nicht haargenau stimmt, weil im unteren Diagramm die 
Phase ( rot ) langsam nach unten davon läuft. Warum die Funker in diesem 
Fall eine so ungerade Modulationsfrequenz gewählt haben, ist mir ein 
Rätsel.

Für diesen Fall müsste man wohl noch einen "Tracker" einbauen, der das 
langsame Weglaufen der Phase korrigiert.

Auf jeden Fall kann man im roten Phasendiagramm super die BITs erkennen.


Programmkopf zum laden des Signals
% psk31 signal von: http://www.pci-card.com/PSK31_BPSK.wav

[Y,FS,BITS]=wavread("PSK31_BPSK.wav");

modulatedSignal=Y(2000:6000)';

% modulation frequency [Hz ]
fm=954;
% sample frequency of the system [Hz]
fs=FS;
% bit rate ( Baud [1/s])
baud=31;

bittime=1/baud;
onebitsamples=bittime*fs;

n=1:length(modulatedSignal);


Autor: p_31 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Autor: p_31 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Autor: Gerrit Buhe (gbuhe)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Marc,

die Trägerfrequenz und selbst die Symbolrate des PSK31-Signales wird 
immer "krumm" sein, da die Taktbasis der beteiligten Rechner - ob 
Mikrocontroller oder PC - immer leicht unterschiedlich ist.
Zum Ausgleich ist eine Trägerfrequenz- und Symboltaktrückgewinnung in 
der Signalverarbeitung vorzunehmen. Auf den Folien 106 und 107 folgender 
Präsentation findest Du etwas Information dazu:

http://www.unidsp56.de/data/DigitaleDatenuebertrag...

Im Falle dieser einfachen BPSK und angesichts der gwünschten niedrigen 
Komplexität, kann die Symboltaktrückgwinnung deutlich vereinfacht 
werden, indem die Symbolmitte bei der betragsmäßig größten Amplitude 
angenommen wird (genügend Überabtastung vorrausgesetzt). Selbst bei der 
QPSK erhöht man damit schon die BER (Bit Error Rate), weil die größten 
Amplituden nicht zum Symbolabtastzeitpunkt auftreten, sondern durch das 
"Überschwingen", bedingt durch die Pulsformung zur 
Bandbreitenreduzierung. Bei der BPSK hat sich die einfache Variante aber 
durchaus bewährt.

Die Simulation mit Octave (oder Alternativen) ist absolut der beste Weg, 
so ein PSK31-Modem zu entwickeln. Ich würde als Datensequenz eine PRBS 
(Pseudo Random Bit Sequence) einsetzen, z.B. eine PRBS9 (9 Bit 
Schieberegister). So kannst Du später den empfangenen Bitstrom in ein 
identisches Schieberegister einspeisen und die BER feststellen. Diese 
ist die wichtigste Metrik zur Beurteilung von in die Signalverarbeitung 
eingebrachten Verbesserungen oder Vereinfachungen. So kannst Du dann 
beurteilen, wie viel dB Signalrauschabstand für eine gegebene BER mehr 
nötig sind, wenn z.B. die Frequenzrückgewinnung sehr einfach anstatt 
komplex implementiert wird, usw.

Weiterhin viel Erfolg und viele Grüße!

Gerrit, DL9GFA

Autor: marc (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Gerrit,

vielen Dank für Deine Antwort und Deine auführlichen Folien ( sieht nach 
viel Arbeit aus). Die Folien finde ich ganz gut weil sie das Thema 
Signalverarbeitung ziemlich umfangreich behandeln.

>Im Falle dieser einfachen BPSK und angesichts der gwünschten niedrigen
>Komplexität, kann die Symboltaktrückgwinnung deutlich vereinfacht
>werden, indem die Symbolmitte bei der betragsmäßig größten Amplitude
>angenommen wird (genügend Überabtastung vorrausgesetzt)

Daran habe ich auch schon gedacht, aber ich bin noch im Zweifel: Ich 
nehme an dass in einem Funkkanal auch ordentlich Amplitudenschwankungen 
vorhanden sein können. Ich bin mir auch nicht ganz sicher, ob bei PSK31 
zwischen 2 gleichen Symbolen die Amplitude auf 0 geregelt wird ( der 
Einfachheit habler habe ich es in der Senderoutine so gemacht ).

Gerade vorher kam mir die Idee, dass ein "matched Filter" vor dem 
Mischer ja ideal sein müsste um Störungen zu unterdrdrüken. Mit meine 
Simulationsroutinen konnte ich ein Rauchen mit 10 facher Stärke auf das 
Nutzsignal legen und die Phase war immer noch einigermaßen gut 
detektierbar. Das Interessante: Bei der Ausgabe des Signals auf die 
Soundkarte ist bei Rauschfaktor 10 das eigentlich Signal schon gar nicht 
mehr hörbar.

Gruß,
marc

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Das man das PSK-modulierte Signal nicht mehr hören kann, ist normal. 
Kannste bei Phil Karn dich schlau machen.

Du ersparst dir viel Kopfschmerzen, wenn du dein Signal mit einem 
Komparator jeglicher Amplitude befreist und DPSK verwendest.

Autor: marc (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
>Kannste bei Phil Karn dich schlau machen.
Meinst Du hier?
http://www.ka9q.net/dsp.html

Autor: Gerrit Buhe (gbuhe)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Marc,

bei der Symbolsynchronisation anhand der maximalen Amplitude betrachtet 
man vorzugsweise nur ein kleines zeitliches Fenster um den genauen 
Erwartungswert des Symbolabtastzeitpunktes herum. Wenn das 
Amplitudenmaximum systematisch immer etwas später kommt, erhöht man den 
Periodenzähler, der das nächste Abtastfenster vorhersagt. Wenn das 
Maximum früher kommt, erniedrigt man den Zähler. Der Zähler schwankt 
schlußendlich +/-1 um den idealen Abtastwert herum. Das ist der 
sogenanne "early/late"-Ansatz. Er ist auch auf Mikrocontrollern leicht 
implementiert und die Performance ist auch sehr gut. Ggf. hilft eine AGC 
mit langsamer Zeitkonstante (>>Tsymbol=32ms), die Amplitudenwerte in 
einem geeigneten Fenster zu halten.


> Ich bin mir auch nicht ganz sicher, ob bei PSK31
> zwischen 2 gleichen Symbolen die Amplitude auf 0 geregelt wird ( der
> Einfachheit habler habe ich es in der Senderoutine so gemacht ).

Nein, wenn eine '1' gesendet wird, verändert sich die Phase nicht und 
die Amplitude geht nicht in Richtung Null. Eine größere Anzahl von '1' 
in direkter Folge wird durch die Kodierung allerdings vermieden. Viele 
Nullen können ohne weiteres auftreten (z.B. wenn kein Zeichen gesendet 
wird), aber das führt zu lauter 180°-Änderungen, die hervorragend zur 
Synchronisation taugen.


> Gerade vorher kam mir die Idee, dass ein "matched Filter" vor dem
> Mischer ja ideal sein müsste um Störungen zu unterdrdrüken.

Ja, das Matched Filter ist das optimale Filter hinsichtlich 
Signal-Rausch-Abstand.

> Simulationsroutinen konnte ich ein Rauchen mit 10 facher Stärke auf das
> Nutzsignal legen und die Phase war immer noch einigermaßen gut
> detektierbar. Das Interessante: Bei der Ausgabe des Signals auf die
> Soundkarte ist bei Rauschfaktor 10 das eigentlich Signal schon gar nicht
> mehr hörbar.

Immer wenn die Gesamtrauschleistung in der abgehörten Bandbreite höher 
ist als die Nutzsignalleistung des PSK31-Signales, kann man letzteres 
nicht heraushören. Dank des schmalen Bandpaß- bzw. Tiefpaß-Filters 
(Matched Filter), das auf die PSK31-Bandbreite optimiert ist, wird die 
Rauschbandbreite in der Signalverarbeitung deutlich reduziert und das 
SNR des Nutzsignales wächst so weit, daß eine Auswertung möglich wird. 
Bei Bandbreitenverhältnissen von 2.4kHz (SSB-Filter des Empfängers) zu 
60Hz (Auswertebandbreite des PSK31-Signals) hat man z.B. einen Gewinn an 
Rauschunterdrückung von 16dB (10*log10(2400/60)).

Viele Grüße!

Gerrit, DL9GFA

Autor: Gerrit Buhe (gbuhe)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Marc,

mir ist aufgefallen, daß Du oben mit genau 31 Symbolen pro Sekunde 
rechnest. Die Symbolrate bei PSK31 ist aber 31.25 Symbole pro Sekunde, 
also genau 32ms pro Symbol.
Wenn Du Dich also wunderst, warum Deine Symboltaktrückgewinnung immer 
hinterher rennt, liegt es vielleicht daran ;o).

Gute Nacht!

Gerrit, DL9GFA

Autor: Jan (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Nanu, Thread eingeschlafen?

Gibt es schon Neuigkeiten bzgl. des Demodulators? Bin sehr interessiert.

Autor: DG8NCY (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo? Gehts hier nicht weiter?? Das wäre sehr sehr schade!!!
Leider kommt man ja bei AATIS schlecht an Bausätze ran, das hier hat 
nach einer hoffnungsvollen Alternative ausgesehen...

Autor: p_31 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
NUE-PSK, open source

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net