Microcontroller programieren

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 9 2024  23:31:24      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


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: 13354
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
Zur Homepage von LeoLöwe reloaded ICQ Status  

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
ICQ Status  

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
ICQ Status  


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: 7143


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();
}


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


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 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 36 Beiträge verfasst
© x sparkkelsputz        Besucher : 182091508   Heute : 5990    Gestern : 6155    Online : 617        28.9.2024    23:31
0 Besucher in den letzten 60 Sekunden         ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0412709712982