Microcontroller programieren Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Microcontroller programieren |
|
|
|
|
BID = 575173
Fiech Gelegenheitsposter
Beiträge: 63 Wohnort: Wr. Neustadt
|
|
Hi ich habe da mal eine Basic Frage.
Ich bin in einer HTL 2Klasse und wir haben noch nichts mit Microcontroller gemacht aber mich würde dieses Thema interessieren. Also meine Frage in welcher Programmiersprache werden µ-Controller programmiert. Und wenn möglich verratet mir auch noch ein Programm in dem man die programmieren kann.
|
|
BID = 575175
Kleinspannung Urgestein
Beiträge: 13359 Wohnort: Tal der Ahnungslosen
|
|
Wie wärs,wenn du dir mal die oben angepinnten Links in diesem Unterforum durchliest?
Oder war lesen und denken auch noch nicht dran?
Ansonsten werfe ich mal Assembler,Bascom und Ponyprog in den Raum.
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein) |
|
BID = 575190
LeoLöwe reloaded Schreibmaschine
Beiträge: 1407 Wohnort: Meine
|
Kommt natürlich auf den Controller drauf an, wenn du möchtest kannst du google mal mit WinAVR, AVR Studio, yaap, Atmel AVRISP mkII füttern. Danach weißt du schonmal, wie man ein in C geschriebenes Programm in einen Atmega bekommt
_________________
We now return you to your regularly scheduled nonsense.
|
BID = 575197
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Hallo
Also ich will da mal nicht so sein, schließlich sind Foren zum schreiben da:
Die Programmiersprache:
Meiner Meinung nach ist es sinnvoll Microcontroller in C zu programmieren. Es ist relativ leicht zu lernen und liefert vergleichsweise schnellen Code. Soll das Programm besonders schnell und kompakt sein führt wohl an Assemlber kein Weg vorbei. Ist die Anforderung komplizierter und ein 'größerer' Microcontroller verfügbar verliert man mit C allerdings schnell den Überblick. In solchen Fällen empfiehlt es sich wohl eine objektorientierte Sprache wie C++ zu verwenden.
Natürlich gibt es Compiler für alle möglichen Sprachen (wobei ich aber nicht ganz verstehe wozu man einen Microcontroller in BASIC programmieren sollte ?)
Falls du vor hast dich in Zukunft mehr mit Computern, Programmieren, etc auseinander zu setzen ist es sicher kein Fehler sich mit C beschäftigt zu haben, deshalb und aus oben genannten Gründen:
C
Falls du noch keine Programmiersprache kannst, ist es sicher sinnvoll zuerst nur kleine Programme für den Computer zu schreiben und die Microcontroller zunächst zu vergessen, das ist sonst wohl zuviel auf einmal. (Ja, das ist einfacher, am Anfang zumindest)
Falls du schon Erfahrung in C oder einer anderen Sprache hast, rate ich dir einfach mal ein kleines Board auf Experimentierplatine zu bauen (zb mit ATmega16) oder gleich fertig zu kaufen.
Wie geht jetzt das Programmieren:
Zunächst schreibt man das Programm einfach auf dem Computer in einem Editor oder einer Entwicklungsumgebung, dann kompiliert man das Programm (für C zum Beispiel avr-gcc), wobei man natürlich angeben muss welchen Controllertyp man verwendet. Das kompilierte Programm muss dann noch auf den Controller ünertragen werden, dazu braucht es einen Programmieradapter (den man dann zb. am Parallelport anschließt) und eine 'Programmiersoftware' (zb. Ponyprog) wobei der Name etwas trickreich ist, weil damit ja eigentlich nicht ein Programm geschrieben, sondern nur zum Zielsystem übertragen wird.
Die gesamte Hardware, also Controllerboard und Programmieradapter kann man sowohl fertig kaufen als auch selber bauen, was natürlich günstiger, für einen Anfänger etwas knifflig, aber dafür umso lehrreicher ist.
Was die Software betrifft, sehe ich keinen Grund dafür Geld aus zu geben, da es tolle Editor, Compiler und Programmiersoftware für Windows und Linux als Freeware gibt.
So das war jetzt ziemlich viel Stoff, noch mehr gibt es zb. hier:
http://www.mikrocontroller.net/articles/AVR-Tutorial
noch Fragen?
mfg Fritz
_________________
|
BID = 575229
Fiech Gelegenheitsposter
Beiträge: 63 Wohnort: Wr. Neustadt
|
Danke schonmal für die Antworten.
@ffeichtinger: In der Schule lernen wir C# aber bei dem Tempo. Also bring ich mir zu Hause selber einiges bei mit Internet und Büchern.
|
BID = 575296
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
C-Sharp auf Mikrocontrollern? Da wäre es mal nett zu erfahren, welchen Mikrocontroller bzw. welche Art du im Visier hast. Bei den AVR von Atmel würde ich nicht über einfaches C hinaus gehen, auch wenn Bascom ganz passable Ergebnisse zeigt.
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 575317
Fiech Gelegenheitsposter
Beiträge: 63 Wohnort: Wr. Neustadt
|
Ich weiß C# is Objekt orientiert aber ich glaube wir steigen dann in der 4. auf C um
|
BID = 575332
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Offtopic :
| Macht man das nicht normalerweise anders herum? Erst mit den Grundbausteinen einer Programmiersprache in C anfangen, also Schleifen, Bedingungen, Unterfunktionen, Variable usw. und dann später auf objektorientiert umsteigen?
|
Also für die einfachen Controller, die hier meist programmiert werden sind objektorientierte Sprachen jedenfalls nicht besonders geeignet. Da sind die Favoriten auch Assembler, Basic (Bascom) und C (cool, ABC )
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 575348
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ich würde auch sagen, dass nur C und direkt in Assembler wirklich sinnvoll ist. Warum das so ist, habe ich bereits mehrfach woanders geschrieben und eine Diskussion C vs. Basic ist hier nicht nötig.
Objektorientiert geht auch auf µC wie den AVRs, nur kann er eben keinen Code aus dem RAM ausführen, was unnötige Klimmzüge im generierten Code nachsichzieht. Daher ist C++, wenn auch durchaus möglich, weniger sinnvoll.
Für andere Architekturen bzw. Systeme, die Programme auch aus dem RAM ausführen können und einfach auch wesentlich mehr Speicher besitzen würde ich zu C++ greifen.
C# kenne ich garnicht und würde mich vermutlich auch nur aufregen... Ist das nicht so ein .NET-Gefummel?
_________________
|
BID = 575352
Jornbyte Moderator
Beiträge: 7178
|
Zitat :
| Ist das nicht so ein .NET-Gefummel? |
Ja ist es. Bei den Atmegas ist ANSI-C angesagt. Die neue Xmega-Serie vertägt auf Grund des Flash und Ram C++. Assembler ist für das Grundlagenverständnis unumgänglich.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 575783
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Also ich persöhnlich kenne C# nicht, kann mir aber vorstellen, dass es eine Weitereintwicklung von C++ durch Microsoft ist, was natürlich bedeuten würde, dass kein freier Compiler verfügbar ist
Ich schließe mich der Meinung der anderen Schreiber hier an in dem ich sage: C# ist wohl (noch) nicht für Microcontroller geeignet. Ich weiß nicht wie weit du gelernt hast die objektorientierten Konzepte von C# zu nutzen. Ich vermute aber, dass die Syntax von C# im wesentlichen immer noch der von C entspricht, wie es ja auch bei Java ist.
Nicht nur deshalb halte ich es für sinnvoll sich zuerst mit C zu beschäftigen. Hier zb. mal ein Tutorial:
http://www.schellong.de/c.htm
Zitat :
| Also bring ich mir zu Hause selber einiges bei mit Internet und Büchern. |
Das ist gut, diesen Ansatz solltest du auch in Zukunft verfolgen. Wichtig ist aber nicht nur das Lesen, sondern auch das Schreiben von Code.
Poste doch mal ein paar Programme, wie ihr sie in der Schule gemacht habt.
mfg Fritz
_________________
|
BID = 575826
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Hallo,
C-Sharp ist dafür schlichtweg nicht geeignet; erstens, weil es eine Microsoftentwicklung ist und zweitens, weil es objektorientiert ist und sehr viel Overhead produziert! Zudem muss sich mal ein freier Compiler für die Zielarchitektur finden lassen... Man könnte sozusagen auch gleich in C++ kodieren, dafür gibt es wenigstens freie Compiler; der avr-gcc kann das. Nur werden einige Sachen, die C++ grade ausmachen nicht unterstützt, z.B. Exceptions und die Standardbibliothek. Allein diese würde den gesamten Programmspeicher bei weitem (!) völlig belegen. Sie haben einfach zu wenig Speicher und Ressourcen. Zudem kann ich schlicht und ergreifend nicht nachvollziehen, wozu man auf so kleinen Kerlchen wie den AVRs objektorientiert kodieren können muss, dafür nimmt man größere Prozessoren/µC, wie die ARMs oder andere.
Dazu kommt noch, dass der C#-Compiler die Symbole vermutlich nicht belässt, wie sie der Programmierer verwendet hat, so wie das noch in C geht. Selbst C++ verstümmelt die Symbole...
_________________
[ Diese Nachricht wurde geändert von: DonComi am 30 Dez 2008 14:03 ]
|
BID = 575843
Fiech Gelegenheitsposter
Beiträge: 63 Wohnort: Wr. Neustadt
|
Ich möchte mal was klarstellen ich hatte nie vorgehabt µC mit C# zu programieren.
@ffeichtinger: Wenn ich was poste was wir in der Schule gemacht haben glaubt ihr ich bin in der 1. Klasse, da machen wir Umfang, Flächenberechnung,... also poste ich lieber was das ich selber zu Hause geschrieben habe(Hat aber sicher noch kleine Feler die ich nur nicht gefunden hab wenn ihr welche findet postet sie mal.)(Das mit dem Design ist neu und noch nicht ganz fertig, aber dir grundfunktion funktioniert)
Grundfunktion: Wenn man oben einen Pfad eingibt und in den Feldern darunter zusuchende Zeichen und ersetzende zeichen eingibt kann man in der liste auswählen welche man ändern möchte.
|
BID = 575862
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Hallo
Danke für die Datei, aber eigentlich habe ich gemeint du sollst einen Quellcode von dir posten.
mfg Fritz
_________________
|
BID = 575878
Fiech Gelegenheitsposter
Beiträge: 63 Wohnort: Wr. Neustadt
|
Achso Hier:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace Suchen_Ersetzen_Dateiname
{
public partial class FormSuchenUndErsetzen : Form
{
string Pfad, Ersetzen, Dateiname, Suchen, Zeichen = @"\ / : * ? > < |", PfadDatei,anzString;
bool Hinweis=false;
int anz;
public FormSuchenUndErsetzen()
{
InitializeComponent();
StreamReader myReader = File.OpenText("Pfade.txt"); //Lezten ausgewählten Pfad in Combobox schreiben
try
{
anz = Convert.ToInt32(myReader.ReadLine());
}
catch
{
MessageBox.Show("Fehler mit der Datei \"Pfade.txt\". Programm konnte Pfade nicht laden.", "Hinweis");
return;
}
for (; anz != 0; anz--)
{
PfadDatei = myReader.ReadLine();
if (!(PfadDatei == null))
{
comboBoxPfad.Items.Add(PfadDatei);
}
}
myReader.Close();
}
private void getFiles(string path, string mask) //Suchen von Dateien (beginn)
{
Application.DoEvents();
try
{
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileInfo file in dir.GetFiles(mask))
{
listBoxDatein.Items.Add(file.Name);
Pfad = file.FullName;
}
foreach (DirectoryInfo di in dir.GetDirectories())
getFiles(di.FullName, mask);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message); //Suchen von Dateien (ende)
}
}
private void buttonErsetzen_Click(object sender, EventArgs e)
{
string neuerDateiname;
if (textBoxErsetzen.Text == "") //Ersetzen Eingaben prüfen
{
MessageBox.Show("Bitte ein Ersatzzeichen eingeben", "Hinweiß");
return;
}
if (checkBoxAlleDatein.Checked == true) //Alle ersetzen? Ja/Nein
{
for (int einträge = listBoxDatein.Items.Count; einträge != 0; --einträge)
{
listBoxDatein.SetSelected(0, true); //Ersten Eintragmakieren
Dateiname = listBoxDatein.SelectedItems[0].ToString(); //Selektierten Eintrag Dateiname zuweisen
Pfad = comboBoxPfad.Text + @"\" + Dateiname; //Pfad + Dadeinamen erstellen
neuerDateiname = Dateiname.Replace(Suchen, Ersetzen); //Neuen Dateinamen erstellen
FileInfo FI = new FileInfo(Pfad );
File.Move(Pfad, FI.Directory.ToString()+@"\"+ neuerDateiname); //Umbenennen
int index = listBoxDatein.SelectedIndices[0]; //Index von selektiertem eintrag bestimmen
listBoxDatein.Items.RemoveAt(index); //Selektierten Eintrag löschen
}
}
else
{
if (listBoxDatein.SelectedItems.Count > 0)
{
Dateiname = listBoxDatein.SelectedItems[0].ToString(); //Selektierten Eintrag Dateiname zuweisen //Selektierten Eintrag Dateiname zuweisen
Pfad = comboBoxPfad.Text + @"\" + Dateiname; //Pfad + Dadeinamen erstellen
neuerDateiname = Dateiname.Replace(Suchen, Ersetzen); //Neuen Dateinamen erstellen
FileInfo FI = new FileInfo(Pfad);
File.Move(Pfad, FI.Directory.ToString() + @"\" + neuerDateiname); //Umbenennen
int index = listBoxDatein.SelectedIndices[0]; //Index von selektiertem eintrag bestimmen
listBoxDatein.Items.RemoveAt(index); //Selektierten Eintrag löschen
}
else
{
MessageBox.Show("Bitte eine Datei auswählen", "Hinweis");
return;
}
}
}
private void buttonSuchen_Click(object sender, EventArgs e)
{
string Datei,Dateityp;
if (textBoxSuchen.Text == "") //Suchen Eingaben prüfen
{
MessageBox.Show("Bitte ein zu suchendes Zeichen eingeben", "Hinweis");
return;
}
if (comboBoxPfad.Text == "-Bitte den Pfad eingeben-") //Pfad überprüfen
{
MessageBox.Show("Bitte Pfad eingeben", "Hinweis");
return;
}
if (comboBoxFilter.Text == "-Bitte Dateityp auswählen-")
{
MessageBox.Show("Bitte einen Datenyp oder 'Alle Datein' auswählen", "Hinweis");
return;
}
else
{
if (comboBoxFilter.Text == "Alle Dateitypen")
{
Dateityp = ".*";
}
else
{
Dateityp = comboBoxFilter.Text;
}
}
Suchen = textBoxSuchen.Text; //Suchen das zu suchende Zeichen zuweißen
Ersetzen = textBoxErsetzen.Text;//Ersetzen das Ersatz Zeichen zuweißen
Pfad = comboBoxPfad.Text+@"\"; //Pfad den Durchsuchten Pfad zuweißen
listBoxDatein.Items.Clear(); //Listbox löschen
Datei = "*" + Suchen + "*"+Dateityp;
Hinweis = true;
getFiles(Pfad,Datei); //Suche strarten
if (listBoxDatein.Items.Count < 1)
{
MessageBox.Show("Die Suche ist abgeschlossen. Es liegen keine Ergebnisse vor.", "Hinweis");
}
}
private void textBoxErsetzen_TextChanged(object sender, EventArgs e)
{
if (textBoxErsetzen.Text == @"\" || textBoxErsetzen.Text == "/" || textBoxErsetzen.Text == ":" || textBoxErsetzen.Text == "*" || textBoxErsetzen.Text == "?" || textBoxErsetzen.Text == ">" || textBoxErsetzen.Text == "<" || textBoxErsetzen.Text == "|")
{
MessageBox.Show("Folgendezeichen dürfen im Dateinamen nicht vorkommen: "+Zeichen);
}
}
private void textBoxSuchen_TextChanged(object sender, EventArgs e)
{
if (textBoxSuchen.Text == @"\" || textBoxSuchen.Text == "/" || textBoxSuchen.Text == ":" ||textBoxSuchen.Text == "?" || textBoxSuchen.Text == ">" || textBoxSuchen.Text == "<" || textBoxSuchen.Text == "|")
{
MessageBox.Show("Folgendezeichen dürfen im Dateinamen nicht vorkommen: " + Zeichen);
}
}
private void scließenToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 5 Beiträge verfasst © x sparkkelsputz Besucher : 182403494 Heute : 3269 Gestern : 7426 Online : 418 26.11.2024 11:50 7 Besucher in den letzten 60 Sekunden alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0836989879608
|