Show Posts
|
|
Pages: [1] 2 3 ... 13
|
|
1
|
International / Deutsch / Re: KSQ PWM Signal Summt...
|
on: May 07, 2013, 04:25:46 am
|
Steuerst du die KSQ's mit einem PWM Signal oder analog an? Weil, du hast ja was von alalog write geschrieben.
Hallo Gerald, nur zur Info und weil es immer wieder mal falsch interpretiert wird: analogWrite() erzeugt trotz des Namens ein PWM-Signal mit variablem Ein-/Aus-Verhältnis. Erst nach einem RC-Glied (Tiefpass) erhält man daraus einen analogen Spannungswert.
|
|
|
|
|
2
|
International / Deutsch / Re: Abfrage eines char-array nach einer "Zeichenkette"
|
on: April 29, 2013, 02:29:35 pm
|
Aber dazu muss ich meinen char array mit einer "/0" terminieren oder?
Unbedingt! Die ganzen Funktionen für C-Strings (char-Array) funktionieren nur mit einem ordentlich abgeschlossenen ('\0') char-Array. Sonst rauschen sie hemmungslos über das Ende hinaus...  Ah ich hab gerade dein Beispiel gesehen. Da brauch ich gar keinen Pointer mehr?
Den Pointer brauchst du nur, wenn du wissen willst, ab welcher Stelle die beiden Strings übereinstimmen. Ansonsten (wenn keine Übereinstimmung da ist), hat der Pointer den Wert NULL, was nie eine gültige Adresse für einen Zugriff ist.
|
|
|
|
|
5
|
International / Deutsch / Re: Arduino IDE und externer Editor
|
on: April 11, 2013, 01:57:36 pm
|
Es gibt Leute, die benutzen Eclipse oder ein Visual Studio (Express ist gratis) mit Arduino plugin anstelle der IDE. Hauptsächlich aus solchen Gründen, denke ich.
Ach ja: ich hab vergessen zu erwähnen, daß ich Windoofs-User bin...
Dann nehmen wir doch direkt das Atmel Studio 6. Da wird die grafische Oberfläche des Microsoft Visual Studio (ohne C#-, C++ oder Visual Basic Compiler und die ganzen anderen .NET-Sachen) als ganzheitliches Paket ohne spezielle Plugins benutzt, um die AVR-Toolchain mit Compiler, Assembler, Linker, Make, Debugger (Simulator) usw. aufzurufen und vor allem hat man einen hervorragenden Editor mit Syntax-Highlighting, Codevervollständigung, Intellisense, und vielen anderen schicken Features.
|
|
|
|
|
6
|
International / Deutsch / Re: embedded processor auslesen?
|
on: April 11, 2013, 03:19:04 am
|
Ob eine Atmel-Studio Version das Auslesen ggf. auch unterstützt, bin ich überfragt. Aber vielleicht kennt sich ja jemand damit aus, ob man das Auslesen einer Hex-Datei mit Atmel-Studio vielleicht auch nur mit einem Mausklick hinbekommt.
Nee, ein paar Mausklicks mehr sind es schon: Menüpunkt "Tools" -> "Device Programming" -> "AVRISP mkII" anwählen (oder sonst einen Programmer aus dem Hause Atmel) -> Button "Apply" drücken -> Menüpunkt "Memories" anwählen -> Button "Read" -> Dateiname und Pfad für HEX-Datei auswählen -> Button "Speichern" -> fertig! Ähnlich geht es auch für das Auslesen des Fuses und der Lockbits. Nur werden die halt nicht in eine Hex-Datei geschrieben sondern nur angezeigt. Das ganze funktioniert natürlich nur mit einem von Atmel unterstützten Programmer (aus dem Hause Atmel). Dafür spielt das Atmel-Studio aber perfekt mit den Atmel-Programmern zusammen (auch beim Brennen, Fuse setzen, usw.) und zur Entwicklung von Programmen ist es ein vielfaches besser als die Arduino-IDE (für mich persönlich). Aber das hängt natürlich von den gewünschten Funktionen und der Lernbereitschaft ab. Ansonsten stelle ich mir natürlich die Frage: was soll's? Wenn du das Programm auslesen kannst (was wahrscheinlich blockiert ist, weil es der Hersteller nicht möchte!) kannst du relativ einfach das Programm in einen anderen Controller des gleichen Typs brennen. Sinn macht das aber nur, wenn die sonstige Beschaltung um den 2. Controller identisch ist oder was willst du sonst mit dem 2. Controller machen? Wenn du das Programm ansehen oder ändern willst, wären die weiteren Schritte: Schreiben eines PC-Programms, das das Hex-File liest und in die entsprechen Assembler-Befehle umsetzt (je nach Programmieraufwand dafür, mehr oder minder gut) oder finden eines passenden (und möglichst kostenlosen) Disassemblers in den Weiten des Internets. Verstehen des Assembler-Programms! Ggfs. ändern des Programms in Assembler-Sprache. Das Brennen des geänderten Programms in den Controller ist dann "Peanuts". Wie schon bereits erwähnt: Aus der Hex-Datei mit vertretbarem Aufwand ein brauchbares C-Programm zu bekommen ist nahezu unmöglich! Wolfgang
|
|
|
|
|
8
|
International / Deutsch / Re: Intel Hex Format
|
on: March 24, 2013, 05:06:59 am
|
Bei Arduinos liegt der Vorteil darin, dass nur eine Textdatei für avrdude erzeugt werden muss, und kein Nativer Code wie bei einem "echten" Compiler, z.B. gcc.
Die Datei im Intel-Hex Format, die über avrdude in den Controller geflasht wird, ist zwar eine ASCII-Datei aber nichtsdestotrotz enthält sie die einzelnen AVR-Maschinenbefehle für dein Programm (nur eben nicht als Binärdaten, sondern als ASCII-Zeichen mit ein wenig "Drumherum" wie Checksumme, Speicheradresse im Flash, usw.). Und diese Maschinenbefehle müssen erst einmal sinnvoll aus der "eigenen" Programmiersprache erzeugt werden. Da kommt man nicht drumherum. Dagegen ist der Intel-Hex-Kram nur "Peanuts".
|
|
|
|
|
9
|
International / Deutsch / Re: Intel Hex Format
|
on: March 23, 2013, 03:00:33 pm
|
Ich würde gerne ein Programm schreiben, welches mir Code für den Arduino erzeugt, ohne die IDE bzw. fertige Programme zu nutzen. Soll eine kleine Übung zum PC-Programmieren für mich sein und ich würde gerne Versuchen, eine eigene Programmiersprache zu entwerfen, welche evtl. auch über das Internet compilieren kann, ohne Software installiert zu haben.
OK, dafür kann es Sinn machen. Kleine Frage: Im wievielten Semester des Informatikstudiums hat man die Vorlesungen über Compilerbau?  Wenn du noch keine weiteren Informationen hast, hier vielleicht etwas für den Einstieg: http://vhb.fh-regensburg.de/co/
|
|
|
|
|
10
|
International / Deutsch / Re: Intel Hex Format
|
on: March 23, 2013, 02:33:46 pm
|
ich wollte fragen, ob es genaue Spezifikationen für das Intel HEX-Format gibt, um "per Hand" zu programmieren. Das ganze soll dann für den AtMega328 funktionieren.
Ja, z.B hier: http://de.wikipedia.org/wiki/Intel_HEXIch bin neugierig! Was verstehst du unter "per Hand" programmieren und wofür soll das gut sein?
|
|
|
|
|
11
|
International / Deutsch / Re: Funktion mit Wertrückgabe ?
|
on: March 15, 2013, 03:03:56 pm
|
Hallo, oh Mann, ich Idiot. Jetzt wo Du das sagst, klar, wofür habe denn globale Variablen verwendet. Na dann brauche ich keine Rückgabewerte, logisch.  Ich denke mal es hätte niemanden daran gehindert die Funktion so zu programmieren das man auch mehrere Rückgabewerte verwenden kann. Ich meine, übergeben kann man soviel man braucht an die Funktion. Nur beim rausrücken wird gespart. Das könnte vieles vereinfachen. Die Einschränkung verstehe ich nicht. Hallo,, wenn du noch was lernen möchtest, dann schau doch mal in google oder einen C++-Lehrbuch zu dem Thema "Referenzen" nach. damit kannst du die Verwendung von Pointern bei der Rückgabe von mehreren Werten vermeiden. Z.B. hier http://de.wikipedia.org/wiki/Referenzparameter unter dem Stichwort "Referenzparameter in Form von Referenzen". Manche Leute sehen die Verwendung von globalen Variablen zur Parameterübergabe (oder überhaupt) als ganz schön "bah, bah" an  Man kann damit bei größeren Programmen nämlich ganz schnell den Überblick verlieren, wer wo etwas verändert. Gruß Wolfgang [Edit]Mist, da war jurs wohl schneller als ich und sogar noch ausführlicher
|
|
|
|
|
14
|
International / Deutsch / Re: PWM Ausgabe
|
on: February 18, 2013, 11:44:37 am
|
Wo kann ich mir eigentlich die Konfiguration von Arduino ansehen, die er bei loop und setup scheinbar aufruft.
Bei loop() und setup() passiert nichts, was du nicht selber reinschreibst. Ansonsten wird vor dem Aufruf von setup() die Funktion init() aufgerufen. Den Code dafür findest du, wie in meinem obenstehenden Posting schon erwähnt, in der Datei "...\Arduino\arduino-1.0.3\hardware\arduino\cores\arduino\wiring.c" ab ca. Zeile 189. Da werden im wesentlichen die Interrupts freigegeben, die Timer konfiguriert und der Analog-Digital-Wandler ein bißchen konfiguriert.
|
|
|
|
|
15
|
International / Deutsch / Re: PWM Ausgabe
|
on: February 18, 2013, 10:25:13 am
|
Hi, ich hab zwei Programme, jedoch ist mir nicht klar warum das eine Funktioniert und das andere nicht. [...] !! Der Unterschied besteht nur im setup{},loo{} bzw main{} !! [...] Vielleicht hat ja von euch einer ne idee...
Ich hätte mal 'ne Idee: Im ersten Programm kümmerst du dich ja anscheinend um alles selbst: eigenes main(), nicht das von der Arduino-IDE bereitgestellte main() verwendet und kein Aufruf von setup() oder loop(). Ist nicht schlimm, wenn man weiß, was man macht. Im zweiten Fall scheinst du aber das main() der Arduino-IDE aufzurufen (Datei main.cpp - reinschauen schadet nicht  ). Da wird (für dich verborgen) eine Funktion init() aufgerufen (zu finden in der Datei "wiring.c" - reinschauen macht klug). Und in dieser Funktion werden schon vorab einige Bits in den Registern des Timers 1 (TCCR1A, TCCR1B) gesetzt. Und du 'ODER'st jetzt im 2. Programm deine eigenen Bits noch zusätzlich rein. Die bisherigen bleiben aber gesetzt. In deinem ersten Programm sind die Register ja alle noch 'jungfräulich' auf 0 gesetzt, im 2. Beispiel aber nicht mehr. Setze doch mal versuchsweise im 2. Programm am Anfang von setup() die beiden Register TCCR1A, TCCR1B auf 0. setup() wird ja nach init() aufgerufen und beschreibt die Register neu. Vielleicht funktioniert dann auch das 2. Programm? Als Konsequenz kann es dann natürlich sein, dass bestimmte Funktionen aus der Arduino-Core-Library nicht mehr funktionieren. Viel Erfolg beim Test und teile mal mit, ob es daran gelegen hat. Gruß Wolfgang
|
|
|
|
|