Forum: Mikrocontroller und Digitale Elektronik Einstieg in die µC Welt


von Maximilian K. (imazze)


Lesenswert?

Hallo Leute!


Habe mir vor einen halben Jahr das: "MyAVR Board MK2" gekauft...und habe 
es jetzt wieder in die Hände bekommen.

Programmieren möchte ich in BASCOM

Hätte dann 2 Fragen:
1.: Gibt es zu diesen Thema (µC Programmierung in Bascom) "gute" 
Internetseiten oder Bücher, in denen ich das Programmieren erlernen 
kann!?
2.: Wie Steuere ich am besten eine 7 Segment Anzeige mit einen Atmega 8 
an?
Ich habe schon das Tutorial: "7-Segment-Anzeigen - Eine Ziffer bitte" 
gemacht aber da kommt bei mir irgend ein "wirres Zeug" raus.




Danke


mfg iMazze

von Karol B. (johnpatcher)


Lesenswert?

Maximilian K. schrieb:
> Programmieren möchte ich in BASCOM
Ich möchte hier sicherlich keine (größere) Auseinandersetzung bezüglich 
der verschiedenen Programmiersprachen starten, aber was genau spricht 
denn - in deinen Augen - für BASCOM?

Gerade die Tatsache, dass man BASCOM erst erwerben muss (die 
Demo-Version ist doch recht beschränkt), während man einen ordentlichen 
C-Compiler für umsonst erhalten kann, halte ich für ausschlaggebend.

Es gibt sicherlich genug Leute, welche BASCOM benutzen. Dennoch, so 
behaupte ich, programmieren die meisten hier neben Assembler in C. Das 
zeigen wohl auch die beiden Tutorials, welche es hier gibt. Insofern 
solltest du diese Prämisse vielleicht noch einmal überdenken. 
Insbesondere, wenn du da Programmieren sowieso erst erlernen willst.

Maximilian K. schrieb:
> 1.: Gibt es zu diesen Thema (µC Programmierung in Bascom) "gute"
> Internetseiten oder Bücher, in denen ich das Programmieren erlernen
> kann!?
Die Weblinks des Wikipedia-Artikels 
(http://de.wikipedia.org/wiki/BASCOM) hast du dir schon angesehen?

Maximilian K. schrieb:
> Wie Steuere ich am besten eine 7 Segment Anzeige mit einen Atmega 8
> an?
> Ich habe schon das Tutorial: "7-Segment-Anzeigen - Eine Ziffer bitte"
> gemacht aber da kommt bei mir irgend ein "wirres Zeug" raus.
Das wird unter anderem im Tutorial 
(http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige) 
erklärt und funktioniert auch. Wenn es das bei dir nicht tut, dann hast 
du etwas falsch gemacht.

Bei deiner Fehlerbeschreibung, lässt sich das aber nicht weiter 
einschränken.

I.d.R. speichert man die verschiedenen Muster für die Zahlen 0-9 ab, und 
gibt diese dann entsprechend aus. Die Ansteuerung kann direkt, per 
Multiplexing oder z.B. per Schieberegister geschehen.

von uni k. (unikum)


Lesenswert?

Karol Babioch schrieb:
> Gerade die Tatsache, dass man BASCOM erst erwerben muss (die
> Demo-Version ist doch recht beschränkt), während man einen ordentlichen
> C-Compiler für umsonst erhalten kann, halte ich für ausschlaggebend.

Hallo,
das ist eine ungenaue, irreführende Aussage.
Bascom-Demo ist nur in der Dateigröße eingeschränkt, hat aber sonst 
vollen
Funktionsumfang.

Zur Frage von Maximilian K.:
Ich benutze auch Bascom, habe aber mit Assembler angefangen.
Man lernt damit als Anfänger die Arbeitsweise des µC gründlicher kennen.
Nicht gleich mit 7-Segmentanzeige. Nimm Dir so 3-5 LED und programmiere
Spielereien nach Deiner Phantasie oder nach Lernbeispielen.
Wenn Du das im Griff hast, kannst Du immer noch überlegen, ob Du mit
Assembler weiter machst oder einer Hochsprache Deiner Wahl den Vorzug 
geben willst.

Gruß, unikum.

von Maximilian K. (imazze)


Lesenswert?

Hallo... Soll ich jetzt wohl in C das Programmieren Lernen?
Ich hatte basic gedacht weil ich mit Visual Basic Express schon viel 
gearbeitet habe... Wenn das mit C "einfacher" ist...bräaucht ich dann 
auch irgendwelche Quellen zum "lernen"



mfg
iMazze

von uni k. (unikum)


Lesenswert?

Maximilian K. schrieb:
> Hallo... Soll ich jetzt wohl in C das Programmieren Lernen?
> Ich hatte basic gedacht weil ich mit Visual Basic Express schon viel
> gearbeitet habe...

Wenn Du unbedingt gleich mit Bascom loslegen willst, warum auch nicht, 
ist Deine Entscheidung und Literatur brauchst, versuch es mal hiermit:
http://www.rowalt.de/.

Das Buch hat mir sehr geholfen, zumahl Du auch über die Netzseite einen 
guten Überblick bekommst.

Gruß, unikum.

von Karl (Gast)


Lesenswert?

Für erste Versuche reicht die Demoversion, die den vollen 
Funktionsumfang hat (aber teilweise etwas älter ist als die 
Vollversion). Die Vollversion ist jetzt auch nicht so teuer. Luna wäre 
eine kostenlose Alternative. Für den Einsteiger aber weniger zu 
empfehlen, da sich kaum jemand damit beschäftigt und Foren, Beispiele 
und Literatur rar sind.

Die BASCOM-Hilfe an sich ist schon recht gut und ausführlich und ersetzt 
so manches Buch. Für fast alle Anwendungsfälle gibt es auch schon 
Beispiele im Internet bzw. bei entsprechenden Foren.

Eine Siebensegmentanzeigenziffer ist wohl in allen Sprachen in etwa 
gleich schwer (bzw. leicht) zu programmieren.

von Karol B. (johnpatcher)


Lesenswert?

uni kum schrieb:
> das ist eine ungenaue, irreführende Aussage.
> Bascom-Demo ist nur in der Dateigröße eingeschränkt, hat aber sonst
> vollen
> Funktionsumfang.
Naja, das "nur" halte ich eben für relevant. Erst heute ist jemand damit 
an die Grenzen gestoßen und erhofft sich nun Hilfe bei der Portierung 
nach C, siehe hier (Beitrag "Umsteigen von Bascom auf C").

Außerdem scheint die Demo-Version auch nicht die neuste zu sein, siehe:

Karl schrieb:
> Für erste Versuche reicht die Demoversion, die den vollen
> Funktionsumfang hat (aber teilweise etwas älter ist als die
> Vollversion).

Ich halte solche Bedingungen für unbrauchbar, wenn es um Werkzeuge zur 
Entwicklung von Software geht, vor allem, weil es mit C (oder Assembler) 
komplett und plattformübergreifend umsonst geht.

Maximilian K. schrieb:
> Soll ich jetzt wohl in C das Programmieren Lernen?
Da wird es wohl keine allgemeingültige Antwort geben. Jemand der 
felsenfest davon überzeugt ist, dass Sprache X die einzig richtige Wahl 
ist, hat wohl noch einiges zu lernen.

C ist unter anderem im Bereich der eingebetten Systeme gang und gäbe. 
Die Verfügbarkeit von vielen guten und kostenlosen Werkzeugen ist 
zumindest für mich persönlich ausschlaggebend. Noch dazu ist das alles 
Open-Source.

Maximilian K. schrieb:
> Wenn das mit C "einfacher" ist

"Einfacher" wird wohl immer relativ bleiben. Dennoch halte ich 
persönlich C für "schöner" als Basic, wobei ich sicherlich keine 
sonderliche Expertise in Basic habe. Allerdings schadet es sicherlich 
nicht C zu erlernen. Im Zweifelsfall "kannst" du dann schon zwei 
Programmiersprachen ;). Betrachtet man die Tatsache, dass viele 
"moderne" Sprachen (stark) von C beeinflusst sind (unter anderem C++, 
Java, JavaScript, PHP, etc.), dann kommt man schnell zu dem Schluss, 
dass es im schlimmsten Fall nicht die ineffektivste Möglichkeit war 
seine Zeit zu verschwenden.

Wie bereits gesagt, schadet es auch nicht seine ersten Gehversuche 
direkt mit Assembler zu machen. Dabei dürfte man wohl am Meisten über 
die eigentliche Architektur lernen und ein Verständnis dafür entwickeln 
wie ein solcher Mikrocontroller von "innen" funktioniert. Allerdings, so 
ist zumindest meine Erfahrung, dauert das einfach viel länger bis man da 
brauchbare Ergebnisse erzielt. Das kann mitunter ein wenig demotivieren.

Insofern wäre meine Empfehlung tatsächlich C.

Maximilian K. schrieb:
> bräaucht ich dann
> auch irgendwelche Quellen zum "lernen"

Solltest du dich nun für C oder Assembler entscheiden, so findest du in 
beiden Fällen brauchbare Tutorials im Wiki 
(http://www.mikrocontroller.net/articles/AVR). Dort wird, wie bereits 
gesagt, auch die Ansteuerung von 7-Segment-Anzeigen erläutert.

von blub (Gast)


Lesenswert?

Wenn es C sein soll bitte ERST die Sprache AM PC lernen und sich dann 
mit µP beschäftigen. Beides gleichzeitig führt idR nur zur Verzweifelung 
weil man nicht weiß wo der Fehler liegt. Auf dem PC hat man deutlich 
bessere Debugmöglichkeiten.

von Karol B. (johnpatcher)


Lesenswert?

blub schrieb:
> Beides gleichzeitig führt idR nur zur Verzweifelung
> weil man nicht weiß wo der Fehler liegt.
Und das ist bei Basic bzw. Assembler nicht der Fall?

blub schrieb:
> Auf dem PC hat man deutlich
> bessere Debugmöglichkeiten.
Auch das trifft auf jede x-beliebige Sprache zu ;).

von blub (Gast)


Lesenswert?

Karol Babioch schrieb:
> blub schrieb:
>> Beides gleichzeitig führt idR nur zur Verzweifelung
>> weil man nicht weiß wo der Fehler liegt.
> Und das ist bei Basic bzw. Assembler nicht der Fall?
Naja. Bei Bascom gibt es imho deutlich weniger Fallstricke weil die 
Sprache strikter und "geschwätziger" ist, bei C reicht schon ein 
vergessenes Sonderzeichen und nichts geht wie es soll.

Assembler nimmt eine Sonderstellung ein (es ist im Gegensatz zu den 
anderen beiden keine Hochsprache). Die Syntax ist immer gleich:
mnemonic
mnemonic operand1
mnemonic operand1, operand2
sprungmarke: tu_was
Dazu noch die .equ und .def vom Assembler und fertig, der Rest ist das 
Lernen (durch benutzen) der verschiedenen Mnemonics.

von Karol B. (johnpatcher)


Lesenswert?

blub schrieb:
> Naja. Bei Bascom gibt es imho deutlich weniger Fallstricke weil die
> Sprache strikter und "geschwätziger" ist, bei C reicht schon ein
> vergessenes Sonderzeichen und nichts geht wie es soll.
Mein Compiler beschwert sich über falsche Syntax durchaus (mit 
Zeilennummer und Art des Fehlers). Damit lässt sich ein Syntaxfehler 
schnell finden.

blub schrieb:
> Assembler nimmt eine Sonderstellung ein (es ist im Gegensatz zu den
> anderen beiden keine Hochsprache). Die Syntax ist immer gleich:
Wobei man auch hier Makros und ähnliches definieren kann. Und auch hier 
kann man Syntaxfehler einbauen. Wobei das natürlich nicht ganz so 
einfach ist ;). Allerdings wird auch hier ein guter Assembler 
entsprechende Meldungen ausgeben.

Gegen Fehler in der Programmlogik kann einem letztendlich natürlich kein 
Tool der Welt helfen. Und das völlig unabhängig von der Sprache. 
Insofern halte ich es für stark irreführend hier eine Sprache 
fehleranfälliger als eine andere darzustellen.

Die Aussage aber, dass sich Mikrocontroller i.A. schwieriger debuggen 
lassen als Programme am Computer direkt, würde ich unterschreiben. Eine 
einfache Ausgabe von Inhalten der diversen Variablen ist bei 
Mikrocontrollern nicht so einfach möglich und erfordert im einfachsten 
Falle zumindest ein paar LEDs oder ein LCD (oder ähnliches).

von Coder (Gast)


Lesenswert?

@TS

Wenn du dich jetzt doch für C entscheiden kannst, dann lerne C erstmal 
auf dem PC.

Einfache Konsolenprogramme in C reichen völlig um C zu lernen und für 
die Programmierung der µC in der Programmiersprache C fit zu werden.


Mit diesem Buch würde ich an deiner Stelle anfangen:
http://www.amazon.de/C-Programmieren-Anfang-Helmut-Erlenkötter/dp/3499600749/


Und dann später, sofern du der englischen Sprache mächtig bist, C mit 
diesem Buch vertiefen:
http://www.amazon.de/The-Programming-Language-ansi-Version/dp/8131704947/

von ... (Gast)


Lesenswert?

Karol Babioch schrieb:
> Die Aussage aber, dass sich Mikrocontroller i.A. schwieriger debuggen
> lassen als Programme am Computer direkt, würde ich unterschreiben. Eine
> einfache Ausgabe von Inhalten der diversen Variablen ist bei
> Mikrocontrollern nicht so einfach möglich und erfordert im einfachsten
> Falle zumindest ein paar LEDs oder ein LCD (oder ähnliches).

Dann solltest du dir z.B. in AVR Studio einmal die Funktionen im Menü 
Debug ansehen und das Fenster "Watch". Ein Oszilloskop ist auch ein 
Debuging-Tool, auf das man beim µC nicht verzichten sollte. Auf dem PC 
gibt es ohne besondere Zusätze zum Betriebssystem gar keine Möglichkeit 
Echtzeitabläufe sinnvoll zu implementieren/debuggen.

von Karl (Gast)


Lesenswert?

Karol Babioch schrieb:
> Ich halte solche Bedingungen für unbrauchbar, wenn es um Werkzeuge zur
> Entwicklung von Software geht, vor allem, weil es mit C (oder Assembler)
> komplett und plattformübergreifend umsonst geht.

Man kann es dem Drei-Mann-Team von BASCOM wohl kaum übel nehmen, wenn es 
nicht die allerneueste Version zum Testen zur Verfügung stellt.

Hälst Du eine Software nur für brauchbar, wenn Sie "umsonst" ist? Das 
ist nicht gerade professionell. BASCOM kostet übrigens weniger als 100 
Euro.

Im Hobbybereich hat man die frei Wahl der Programmiersprachen. Wenn er 
BASCOM lernen will, warum nicht. Die paar C-Befehle hat man 
wahrscheinlich genau so schnell gelernt, aber das ganze drumherum ist 
halt für den Hobbyprogrammiereinsteiger etwas mühsamer.

von Karol B. (johnpatcher)


Lesenswert?

... schrieb:
> Dann solltest du dir z.B. in AVR Studio einmal die Funktionen im Menü
> Debug ansehen und das Fenster "Watch". Ein Oszilloskop ist auch ein
> Debuging-Tool, auf das man beim µC nicht verzichten sollte.
Das sind Werkzeuge, die ein Anfänger nicht zu bedienen weiß.

... schrieb:
> Auf dem PC
> gibt es ohne besondere Zusätze zum Betriebssystem gar keine Möglichkeit
> Echtzeitabläufe sinnvoll zu implementieren/debuggen.
Eine einfache Ausgabe von Variablen reicht oft doch schon völlig aus. 
Und dafür brauche ich keine besonderen Zusätze. Klar wird das bei 
zeitlichen Abhängigkeiten und im Kontext von Echtzeitabläufen 
komplizierter, aber ich habe mich in erster Linie auf den Einstieg 
bezogen.

Karl schrieb:
> Man kann es dem Drei-Mann-Team von BASCOM wohl kaum übel nehmen, wenn es
> nicht die allerneueste Version zum Testen zur Verfügung stellt.
Doch? Was spricht denn dagegen?

Karl schrieb:
> Hälst Du eine Software nur für brauchbar, wenn Sie "umsonst" ist?
Gerade im Hobbybereich mit (jugendlichen) Einsteigern, halte ich das 
durchaus für ein Argument. Und den Betrag von 100 Euro kann man sehen 
wie man will. Für jemanden, der das Ganze kommerziell benutzt, ist das 
sicherlich kein Beinbruch. Andererseits kann sich ein Einsteiger daraus 
genau so gut Hardware kaufen.

Ich bin einfach ein großer Verfechter von Open-Source. Das heißt nicht 
notwendigerweise, dass das eigentliche Produkt umsonst ist. In der 
Praxis trifft man allerdings nur selten auf Open-Source-Software, welche 
Geld kostet, da man sich die Software ja im schlimmsten Falle selbst 
kompilieren könnten bzw. dies i.d.R. schon jemand gemacht hat. Ein 
Beispiel hierfür wäre RHEL mit seinen "kostenlosen" Derivaten in Form 
von CentOS und Scientific Linux.

Karl schrieb:
> Im Hobbybereich hat man die frei Wahl der Programmiersprachen.
Klar. Und es sei jeder dazu eingeladen.

Karl schrieb:
> Wenn er
> BASCOM lernen will, warum nicht.
Ich würde niemanden davon abhalten. Mein Argument könnte man eher in 
etwa so zusammenfassen: C ist in der Welt der eingebetten Systeme (und 
der Betriebssystemprogrammierung) verbreiteter. Daher nützt einem das 
insbesondere dann mehr, wenn man seinen Horizont später einmal erweitern 
möchte. Und da wir alle nur begrenzt viel Zeit in dieser Welt zur 
Verfügung haben, würde ich das Erlernen von C höher priorisieren.

Karl schrieb:
> aber das ganze drumherum ist
> halt für den Hobbyprogrammiereinsteiger etwas mühsamer.
Und was meinst du damit konkret?

von Karl (Gast)


Lesenswert?

Karol Babioch schrieb:
> Und was meinst du damit konkret?

Lass mal zwei Einsteiger ohne großartige Vorkenntnisse einen mit C und 
den anderen mit BASCOM "Hallo Welt" auf einem LCD ausgeben. Wer wird 
wohl schneller zum Ziel kommen?

Ich persönlich finde die BASCOM-Lizenz jedenfalls nicht überteuert und 
man kauft auch nicht die Katze im Sack, da man es ja ausgiebig testen 
kann. Und da wir schon beim Geld sind: Frag mal den (jugendlichen) 
Einsteiger, was seine aktuelle Grafikkarte so gekostet hat.

Karol Babioch schrieb:
> Und da wir alle nur begrenzt viel Zeit in dieser Welt zur
> Verfügung haben, würde ich das Erlernen von C höher priorisieren.

Aus diesem Grund bin ich bei BASCOM gelandet. Ich habe aber beruflich 
nichts mit programmieren zu tun, sonst wäre es wohl auch C.

Luna finde ich als kostenlose Alternative ebenfalls interessant. Aber 
für Einsteiger wohl noch weniger zu empfehlen als C oder BASCOM.

von was? (Gast)


Lesenswert?

Karol Babioch schrieb:
> Mein Argument könnte man eher in
> etwa so zusammenfassen: C ist in der Welt der eingebetten Systeme (und
> der Betriebssystemprogrammierung) verbreiteter. Daher nützt einem das
> insbesondere dann mehr, wenn man seinen Horizont später einmal erweitern
> möchte. Und da wir alle nur begrenzt viel Zeit in dieser Welt zur
> Verfügung haben, würde ich das Erlernen von C höher priorisieren.

Ich würde Assembler priorisieren,  nur in Assembler lernst du den 
Mikrocontroller so richtig kennen... oder... warte... ich würde doch 
BASCOM priorisieren, weil man mit einer höheren Programmiersprache auch 
die Fehlerebene anhebt... oder... nein, Luna, weil das so schön neu ist! 
;)

von blub (Gast)


Lesenswert?

Karol Babioch schrieb:
> blub schrieb:
>> Naja. Bei Bascom gibt es imho deutlich weniger Fallstricke weil die
>> Sprache strikter und "geschwätziger" ist, bei C reicht schon ein
>> vergessenes Sonderzeichen und nichts geht wie es soll.
> Mein Compiler beschwert sich über falsche Syntax durchaus (mit
> Zeilennummer und Art des Fehlers). Damit lässt sich ein Syntaxfehler
> schnell finden.
Ich meinte sowas wie DDRB=(1<<PB3) statt DDRB|=(1<<PB3) oder 
Präprozessorkonstanten wo die Klammern fehlen usw. Da beschwert sich der 
Compiler nicht weil es ja syntaktisch korrekt ist.

> Insofern halte ich es für stark irreführend hier eine Sprache
> fehleranfälliger als eine andere darzustellen.
Naja, ich denke schon C ist etwas anfälliger.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.