www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu meinem Blinker


Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die LEDs auf der STK500 leuchten andauernd, aber wieso versteh ich nicht
;**********************************Header**************************************
;Projektname:
;Name des Erstellers:
;Zuletzt aktualisiert:
;
;*****************************Initialisierungen********************************
.include "m16def.inc" ;Definitionsdatei des Mega16

;Stack init***********
  ldi r16, High(Ramend)
  out SPH, r16

  ldi r16, Low(Ramend)
  out SPL, r16

;*****************Deklarierete Funktionen und Subroutinen**********************

;*************************Variablendeklarationen*******************************

;*****************************Ein-Ausgänge*************************************
  ldi r16, 255
  out DDRB, r16 ;Portb als Ausgabeport

  ldi r16, 0
  out DDRA, r16 ;Porta als Eingabeport
  ldi r16, 255
  out PORTA, r16 ;Pullups für Eingagsport A aktivieren

;*****************************Hauptprogramm************************************
Hauptprogramm:
  ldi r16, 255
  out PORTB, r16

  call Zwischen

  ldi r16, 0
  out PORTB, r16

  call Zwischen
JMP Hauptprogramm 

;***********************Unterprogramme/Funktionen******************************
Zwischen:
  ldi r16, 255

Warte:
  dec r16
  cpi r16, 0
  brne Warte
  ldi r16, 255


Weiter2:
  dec r16
  cpi r16, 0
  brne Weiter2
ret 

Autor: Axel Krüger (axel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ähm fehlt da nicht noch ein .ORG xxxx vor der Stackpointer 
initialisierung?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du schaust nicht genau hin ;-)

Die blinken etwa im Kilohertztakt ;-)

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja aber wieviele Warte Schleifen muss ich denn jetz noch hingeben
wie dumm ist das, gibt es da keine andere möglichkeit?

Autor: dom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wärs denn mit nem timer???

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:
> ja aber wieviele Warte Schleifen muss ich denn jetz noch hingeben

Mut du ausrechnen :-)

> wie dumm ist das, gibt es da keine andere möglichkeit?

Doch natürlich.
Aber lass dir Zeit. Das lernst du schon noch
(Der Weg führt über Timer)

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit welchem Takt betreibst du das STK500? Es kann sein, dass es für das 
Auge schlichtweg zu schnell schaltet. Im AVR-Studio kannst du den Takt 
des STK auf ein paar kHz absenken, dann könnte sich was andern.

Bei 3,7 MHz dauern 255 Takte etwa 0,06ms (1/3700000 * 255 = 6,9*10^-5 s) 
Durch die Sprünge und so weiter wird die Schaltzeit noch etwas länger, 
aber ich denke du bist einfach zu langsam das zu sehen ;-)

Ich hoffe ich habe mich nicht verrechnet (ich bin nich so doll in asm)

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Näh zu langsam!

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

Bewertung
0 lesenswert
nicht lesenswert
Hubert schrieb:
> Mit welchem Takt betreibst du das STK500? Es kann sein, dass es für das
> Auge schlichtweg zu schnell schaltet. Im AVR-Studio kannst du den Takt
> des STK auf ein paar kHz absenken, dann könnte sich was andern.

Nicht!
Das gibt Ärger beim ISP flashen.

Auch wenn du im Prinzip recht hast ... wenn er das tut jagst du ihn in 
das nächste Problem rein.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warten entweder über einen mindestens 24-bitigen Zähler oder über einen 
der eingebauten Timer.

Was für einen Prozessortakt verwendest du?

Bei angenommenen 1 MHz (der langsamste intern) dauert deine Warteroutine 
in etwa 256*3 + 256*3 Takte, als ungefähr 1500 us oder 1,5 ms.
Jetzt läuft dein Programm grad so:
Leds an
1,5 ms warten
Leds aus
1,5 ms warten

;;;;;;;

Du kannst dir z.B mit 3 Registern einen 24-bit-Delay bauen, der dann bis 
zu 16 sec verzögert (bei 1 MHz)


;im r16 ist der wert in 16tel Sekunden
;benötigt werden zusätzlich r0 und r1
delay:
  clr r0
  clr r1

delay_loop:
  dec r0
  brne delay_loop
  dec r1
  brne delay_loop
  dec r16
  brne delay_loop
 ret

;hier werden r16  256  256 Takte durchlaufen ;-)

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Malpunkte zwischen den letzten Zahlen -.-

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>ja aber wieviele Warte Schleifen muss ich denn jetz noch hingeben
>wie dumm ist das, gibt es da keine andere möglichkeit?

Für längere Warteschleifen mußt du die verschachteln:

       clr r16
aaa:   clr r17
bbb:   dec r17
       brne bbb
       dec r16
       brne aaa


Für längere Delays muss man u.U. eine dritte Schleife benutzen. Suche 
mal im Netz nach 'avrdelayloop'. Damit kannst solche Delays generieren 
lassen. Etwas fortgeschrittene Programmierer nehmen allerdings einen 
Timer.

MfG Spess

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Studio meckert doch wenn der Takt zu langsam ist - Aber so kann man 
sich eine Vorstellung von der Schnelligkeit des AVR machen. Oder ISP 
geschwindigkeit anpassen.

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

Bewertung
0 lesenswert
nicht lesenswert
Flo schrieb:
> Malpunkte zwischen den letzten Zahlen -.-

Nimm die Leerzeichen raus, dann interpretiert die Fornesoftware das 
nicht mehr als Fettdruck

  r16*256*256

(ICh weiß, das ist lästig. Ich finds auch doof)

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja ok timer hört sich schon mal gut an, jedoch habe ich gedacht, dass 
ein timer bis maximal 1 Register zählen kann und das wären ja dann wohl 
wieder die 255
ich möcht jetzt aber auch nicht den Hardwaretimer dazu verwenden, in 
Bascom muss ich das ja auch nicht

aber ich habe keine idee, wie ich so einen "timer realisieren könnte"
gibts da ein paar vorschläge?

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

Bewertung
0 lesenswert
nicht lesenswert
Hubert schrieb:
> Das Studio meckert doch wenn der Takt zu langsam ist - Aber so kann man
> sich eine Vorstellung von der Schnelligkeit des AVR machen. Oder ISP
> geschwindigkeit anpassen.

Der ISP Takt darf max, 1/4 der µC Frequenz sein. Wenn er Pech hat, kann 
er den µC danach über ISP überhaupt nicht mehr ansprechen, sondern muß 
über High-Voltage Programming gehen. Hatten wir vor kurzen hier im 
Forum. Ein Schlauberger hat die CPU Frequenz soweit runtergedreht, dass 
es keine ISP Einstellung mehr gab, mit der er ihn hätte ansprechen 
können :-)

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also im AVR Tutorial hatte ich das damals (bevor ich auf C umgestiegen 
bin) verstanden. Und danach: Trial 'n' Error!

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber das STK wird doch über die Serielle Schnittstelle angesprochen. Hat 
nix mit ISP zu tun. Und wenns nichtmehr geht den TAkt wieder hochdrehen 
ohne ISP bis ISP wieder geht.

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:
> naja ok timer hört sich schon mal gut an, jedoch habe ich gedacht, dass
> ein timer bis maximal 1 Register zählen kann und das wären ja dann wohl
> wieder die 255

Der Sekundenzeiger deiner Uhr kann auch nur bis 59 zählen, und trotzdem 
kannst du damit Minuten, Stunden, ja sogar Tage stoppen. Wie machst du 
das?

> aber ich habe keine idee, wie ich so einen "timer realisieren könnte"
> gibts da ein paar vorschläge?

Ganz ehrlich:
Auch wenn ich ein großer Verfechter von Timern bin: Du solltest 
verstehen, warum deine kurze Schleife viel zu schnell abgearbeitet wird, 
was du dagegen tun kannst und vor allen Dingen, wie du ausrechnen 
kannst, wie lange ein bestimmtes Code Stück braucht.
Genau das ist nämlich einer der Vorteile von Assembler: Du hast 
Kontrolle über jeden einzelnen Taktzyklus (na ja ... fast)

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

Bewertung
0 lesenswert
nicht lesenswert
Hubert schrieb:
> Aber das STK wird doch über die Serielle Schnittstelle angesprochen.

Ach?
Wusste gar nicht das das STK den Chip über die serielle Schnittstelle 
programmiert  :-)

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Ach?
>>Wusste gar nicht das das STK den Chip über die serielle Schnittstelle
>>programmiert  :-)

Witzig, das hier Moderatoren so nen Mist schreiben. Ich habe nicht 
gesagt das der Chip über die Sreielle Schnittstelle programmiert wird. 
Das STK500 wird über den Comport angesprochen, ob da ein AVR im Sockel 
steckt oder nicht.

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz ehrlich:
Auch wenn ich ein großer Verfechter von Timern bin: Du solltest
verstehen, warum deine kurze Schleife viel zu schnell abgearbeitet wird,
was du dagegen tun kannst und vor allen Dingen, wie du ausrechnen
kannst, wie lange ein bestimmtes Code Stück braucht.
Genau das ist nämlich einer der Vorteile von Assembler: Du hast
Kontrolle über jeden einzelnen Taktzyklus (na ja ... fast)

ich habe wirklich schon viele aufgaben außerhalb assembler gemeistert, 
ich weiß aber echt nich wie ich das mach, mir fehlt einfach der 
Denkansatz
geht jetz der TImer über den alle hier sprechen ganz anders vom coding 
her, oder besteht da ein ähnlichkeit?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein Timer ist ein nebenläufiger Zähler, der über einen Prescaler 
(Vorteiler) mit einem geringeren Takt versotgt werden kann als der 
Prozessor läuft. Bei bestimmten Ereignissen wie einem Zählwertüberlauf 
(Overflow) oder einem erfolgreichen Vergleich mit einem anderen Wert 
(Compare-Match) kann ein Interrupt ausgelöst werden, also eine 
Programmunterbrechung.
In dieser Unterbrechung kannst du dann z.B. peridische Dinge tun, wie 
eine Zeitvariable hochzählen und ähnliches. Danach wird das 
Hauptprogramm fortgesetzt.

Einfach mal im Tutorial unter Timer schauen, oder im Datenblatt ein 
bisschen Schmökern. ;-)

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:

> ich habe wirklich schon viele aufgaben außerhalb assembler gemeistert,
> ich weiß aber echt nich wie ich das mach, mir fehlt einfach der
> Denkansatz

Es ist ganz einfach.
Überschlagsmässig kannst du davon ausgehen, dass jeder Befehl im AVR 
einen Taktzyklus braucht. Branch Befehle brauchen 2 Takte, wenn die 
Bedinung zutrifft
Zwischen:
  ldi r16, 255

Warte:
  dec r16                1 Takt
  cpi r16, 0             1 Takt
  brne Warte             2 Takt

Das heist: Ein Durchlauf durch die Schleife dauert 4 Takte. Durch r16 
machst du 255 Durchläufe durch die Schleife. Macht 255 mal 4 = 1020 
Takte.

Agenommen dein µC läuft mit 1Mhz. WIe lange dauert das dann?
Nun 1Mhz heist, dein µC hat in 1 Sekunde 1 Million Takte zur Verfügung. 
Du brauchst nur 1020. Diese 1020 Takte dauern daher

             1 Mio            1 Sekunde
             1020              x
           -----------------------------
                   1020 * 1
              x = ---------- = 0.00102 Sekunden
                   1000000

Solange dauert es daher, bis dein µC die Schleife 255 mal abgearbeitet 
hat. (Bei einer Taktfrequenz von 1Mhz)

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
em geringeren Takt versotgt werden kann als der
Prozessor läuft. Bei bestimmten Ereignissen wie einem Zählwertüberlauf
(Overflow) oder einem erfolgreichen Vergleich mit einem anderen Wert
(Compare-Match) kann ein Interrupt ausgelöst werden, also eine
Programmunterbrechung.


in Bascom sag ich aber auch nur

Do

Led an
wait 1

Ledaus
wait1

loop

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:

> in Bascom sag ich aber auch nur

Du musst dich jetzt entscheiden:
Soll dir BASCOM in Zukunft weiterhin alles abnehmen oder willst du 
selber für deine Verfehlungen verantwortlich sein und endlich mal deinem 
µC auf die Beinchen schauen, was der so treibt :-)

Man kann beides tun. So wie man Auto fahren kann, ohne sich um die 
Details des Motors kümmern zu müssen. Aber Autoschrauber wird man nur 
dann, wenn man einen Lötkolben am richtigen Ende anfassen kann und einen 
eine defekte Batterie nicht sofort die Schweißperlen auf die Stirn 
treibt weil man nicht weiß wo man die suchen muss ... und was zum Teufel 
macht die Batterie in meinem Auto und wie sieht die eigentlich aus.

Oder glaubst du, dass BASCOM was anderes macht um 1 Sekunde zu warten 
:-)

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:

> ich habe wirklich schon viele aufgaben außerhalb assembler gemeistert,
> ich weiß aber echt nich wie ich das mach, mir fehlt einfach der
> Denkansatz

Es ist ganz einfach.
Überschlagsmässig kannst du davon ausgehen, dass jeder Befehl im AVR
einen Taktzyklus braucht. Branch Befehle brauchen 2 Takte, wenn die
Bedinung zutrifft

Das heißt

Zwischen:
  ldi r16, 255

Warte:
  dec r16                1 Takt
  cpi r16, 0             1 Takt
  brne Warte             2 Takt


Das heist: Ein Durchlauf durch die Schleife dauert 4 Takte. Durch r16
machst du 255 Durchläufe durch die Schleife. Macht 255 mal 4 = 1020
Takte.

Agenommen dein µC läuft mit 1Mhz. WIe lange dauert das dann?
Nun 1Mhz heist, dein µC hat in 1 Sekunde 1 Million Takte zur Verfügung.
Du brauchst nur 1020. Diese 1020 Takte dauern daher

             1 Mio            1 Sekunde
             1020              x
           -----------------------------
                   1020 * 1
              x = ---------- = 0.00102 Sekunden
                   1000000

Solange dauert es daher, bis dein µC die Schleife 255 mal abgearbeitet
hat.





 

ist mir schon klar, es ging mir nur darum es auch vernünftig 
anzuschreiben in assembler

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>in Bascom sag ich aber auch nur
>Do
>Led an
>wait 1
>
>Ledaus
>wait1
>loop

BASCOM ist wie 'Hotel Mama'.

MfG Spess

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:

> ist mir schon klar, es ging mir nur darum es auch vernünftig
> anzuschreiben in assembler

Wo liegt jetzt das Problem?
Du willst vielleicht eine Verzögerung von insgesamt 0.2 Sekunden.

0.00102 Sekunden hast du schon. Wenn du daher diese Konstruktion

  0.2 / 0.00102 = 196

mal ausführst, hast du die 0.2 Sekunden

Zwischen:

  ldi r17, 196

Warte1:
  ldi r16, 255

Warte:
  dec r16 
  cpi r16, 0
  brne Warte

  dec r17
  cpi r17, 0
  brne Warte1


OK. stimmt nicht ganz genau, weil natürlich die Bearbeitung von r17 auch 
seine Zeit braucht.

Du brauchst noch längere Zeiten?
Nun du hast noch r18, r19, r20 ..... und du kannst noch genügend viele 
Schleifen immer weiter drumherum bauen.

Wenn man 60 mal 1 Sekunde wartet, hat man in Summe auch 1 Minute 
gewartet :-) Will man 1 Stunde warten, dann wartet man eben 60 Minuten, 
wobei jede einzelne der Warteminuten dadurch entsteht, dass man 60 mal 1 
Sekunde wartet.
Eigentlich ganz einfach und stellt dich im realen Leben vor keinerlei 
Probleme.
BASCOM macht letzten Endes auch nichts anderes. Nur rechnet sich BASCOM 
eben still und heimlich aus, wie oft welche Teile wiederholt werden 
müssen, damit 1 Sekunde Wartezeit entsteht. Jetzt weißt du wie's gemacht 
wird. Vorher hast du dich nicht darum gekümmert :-)

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 

Zwischen:
  ldi r16, 255
  ldi r17, 255

Warte:
  dec r16
  cpi r16, 0
  brne Warte

  dec r17
  cpi r17, 0
  brne Warte
ret  

aber hier habe ich auch 2* (255*4) Taktzyklen und das müsste dann 
2040/1Mio = 2ms lang sein und trotzdem ist der Unterschied deutlich zu 
erkennen

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:

> aber hier habe ich auch 2* (255*4) Taktzyklen und das müsste dann
> 2040/1Mio = 2ms

Moment.
Bis jetzt war alles mehr oder weniger hypothetisch, weil du bisher deine 
Taktrequenz nicht bekant gegeben hast.

Und ausserdem wird der innerste Teil nicht  2*255 mal abgearbeitet, 
sondern 255*255 mal:
Das letzte Codestück zählt r16 von 255 bis 0 runter. Und das r17=255 mal

> lang sein und trotzdem ist der Unterschied deutlich zu
> erkennen

Welcher Unterschied?

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und ausserdem wird der innerste Teil nicht  2*255 mal abgearbeitet,
>sondern 255*255 mal

was wieso jetz=?

ok das hier

//
        dec r16
  cpi r16, 0
  brne Warte

//
kommt zwar beim 2ten Teil auch immer wieder vor aber das sind trotzdem 
nicht 255²

>Welcher Unterschied?
das Blinken

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:

> kommt zwar beim 2ten Teil

welchen 2ten Teil. Die Schleifen sind jetzt ineinander geschachtelt!

Du hast den Code hier
Zwischen:
  ldi r16, 255
  ldi r17, 255

Warte:
  dec r16
  cpi r16, 0
  brne Warte

  dec r17
  cpi r17, 0
  brne Warte
ret  

Ich markiere dir mal die Schleifen und rücke etwas ein
Zwischen:
  ldi r16, 255
  ldi r17, 255

Warte:              ; <---+<--+
    dec r16         ;     |   |
    cpi r16, 0      ;     |   |
    brne Warte      ; ----+   |
                              |
  dec r17           ;         |
  cpi r17, 0        ;         |
  brne Warte        ; --------+


wenn r17 um 1 runtergezählt wurde und noch nicht bei 0 angelangt ist, 
beginnt r16 erneut von 255 bis wieder 0 runterzuzählen. Daraufhin wird 
r17 wieder um 1 erniedrigt und r16 macht wieder seinen 255-er Drchlauf 
usw. usw. In Summe wird alse r16 insgesammt 255 mal (durch r17) von 255 
auf 0 runtergezählt.  256*256

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> beginnt r16 erneut von 255 bis wieder 0 runterzuzählen

aber wieso?? der Registerinhalt ist doch schon 0, würde der jetzt weiter 
runterzählen ist die Zahl dann negativ
ich sag ja dem register nicht, dass sein wert wieder 255 ist, oder macht 
er das automatisch wenn er 0 ist, dass er dann sozusagen bei 
über/unterlauf wieder auf der anderen seite beginnt zu zählen--> sprich:
wenn der zähler nicht weiter kann, geht er in den AUsgangszustand

Autor: AVRuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Zur Frage: wenn ich ein Register, das Null ist, dekrementiere, gibt es 
einen Unterlauf, und der Wert im Register ist danach 255.

Und noch so am Rande: bei dem Code

>Warte:
>  dec r16
>>  cpi r16, 0
>  brne Warte
>
>  dec r17
>>  cpi r17, 0
>  brne Warte
>ret

kann man sich die Zeile "cpi ... , 0" sparen, da das "dec" das Zero-Flag 
bei Null setzt und daher direkt der Branch ("brne") folgen kann.

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

Bewertung
0 lesenswert
nicht lesenswert
Andy11 schrieb:
>> beginnt r16 erneut von 255 bis wieder 0 runterzuzählen
>
> aber wieso?? der Registerinhalt ist doch schon 0, würde der jetzt weiter
> runterzählen ist die Zahl dann negativ

der kann nicht negativ werden. Auf dieser Ebene gibt es so erst mal kein 
Vorzeichen. Nach 0 kommt wieder 255.

> ich sag ja dem register nicht, dass sein wert wieder 255 ist

nein.
aber wenn r16 0 ist und du machst einen dec drauf, dann ist r16 danach 
255

Genauso umgekehrt 255 + 1 -> 0

so schlecht war das mit der Uhr da weiter oben gar nicht :-) Nach 59 
kommt 0. Das geht immer so rundum.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>aber wieso?? der Registerinhalt ist doch schon 0, würde der jetzt weiter
>runterzählen ist die Zahl dann negativ.

Nein. du fängst wieder mit $FF an.

MfG Spess

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Riesiges Dankeschön an alle hier, hier kriegt man ja schneller antworten 
als im Bascom forum :)

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.