PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie programmieren?



Memby
08.08.2004, 19:01
Hallo,

ich bin neu in der wunderbaren Welt der Mikrocontroller. Bei microcontroller.net habe ich das Tutorial aufmerksam gelesen und schön alles nachgebaut. Es ist mir gelungen, eine LED per Tastendruck an- und wieder auszuschalten. Dazu habe ich einfach ein Assemblerbeispiel genommen und etwas verändert und mit Ponyprog rein in µC. Doch ich komme nicht weiter! Alle Beispiele die ich zu Assemblerprogrammierung im Netz gefunden habe, sind kurz und undurchsichtig und sehr oberflächlich. Mit SPS-Programmierung (S7/S5) kenne ich mich sehr gut aus, und alles ähnelt der Assemblersprache, doch ich brauche nähere Infos. Ist es sinnvoll sich mit Assembler auseinander zu setzen? Klar kommt auf die Anwendung an. Mein Ziel ist es den µC von Beginn kennen zu lernen und mit kleinen Programmen dem Controller Leben einhauchen. (Z.B. Stoppuhr, Temperatursteuerung, Motore bewegen, alles das, was ich in meiner Ausbildung mit einer S7 gemacht habe. (S7 schönes Ding, aber als Spielzug zu teuer))
Ich möchte nicht ein Starterkitt für teuer Geld kaufen, dann zwei Projekt von CD nachmachen und am Ende blinkt und funkt alles und man weis nicht was man eigentlich gemacht hat.

Kann mir einer Helfen, meine Augen sind schon 4eckig vom vielen google'n.
Wie könnte ich weitermachen? Wie hast du es gemacht?

Danke für euere Hilfe

Mit freundlichen Grüßen Stefan

Xeus
08.08.2004, 19:06
HI ich bin genauso weit wie du habs auch aus dem Tutorial.
Hast du es schon geschaft das Display anzusteuern??
mit welchem Prog arbeitest du???Bascom oder AVM STudio

gruß Xeus

Memby
09.08.2004, 05:00
Hi
Mit dem Display hab ich noch nicht experimentiert. Werde ich als nächstes in Angriff nehmen. Momentan gilt mein Interesse Schrittmotore. Habe mir jetzt einen ersteigert und versuche nun einen Treiber zu löten, mit dem ich meinen Motor laufen lassen kann. Und da kommt mein nächstes Assembler-Problem - Das Prinzip ist klar aber wie mach ich das am besten? Wie packe ich das ganze in ein vernüftiges Programm?

Den Assembler schreibe ich in AVM Studio und wandle Ihn in eine hex um. Die Übertragung zu meinen Atmega8 bewerkstelle ich mit PonyProg2000. Das AVR-Studio unterstützt nicht meine simple ISP-Verbindung zu meinen Eigenbau. Was hat ein fertiges Board, was ich nicht habe?

Tschau Stefan

Xeus
12.08.2004, 22:44
Hast du den ISP auch von dem tut? Wenn ja, dann wird der über den Parallelport angesteuert, den AVR Studio leider nicht unterstützt.

gruß
xeus

13.08.2004, 10:56
Hallo,

ich empfehle Dir, mit kleinen Programmen in BASCOM zu beginnen und dann auf Assembler umzusteigen. Die Basic-Progs sind sehr einfach, so dass man schnell weiß, ob der Fehler bei Nicht-Fubktionieren an der Elektronik oder dem Programm liegt.
Meine Erfahrung beim Einstieg war, dass man an viel mehr Stellen als beim reinen Elektronikbasteln bzw. reinen Programmieren Probleme haben kann! Jede Fehlerquelle, die zunächst ausgeschaltet (oder minimiert) ist, hilft dann weiter!

Die LCD-Ansteuerung mit BASCOM ist z.B. recht einfach. Wenn Du dann ein Assemblerprogramm testet, kannst Du Dich auf die HArdweare schon verlassen!

Viel Freude + Erfolg ...
Harald

cht
14.08.2004, 11:59
Hallo!
Ich hab vor etwa einem halben Jahr mit µCs angefangen, auch mit dem Tutorial von mikrocontroller.net, und jetzt ist mir immerhin schon ne Stoppuhr mit nem mega16 gelungen. Programmiert hab ich das komplett in Assembler, ging eigentlich ganz einfach.
Hast du denn schon das Datenblatt und das Befehlsverzeichnis deines AVRs? Gibts bei http://www.atmel.com/dyn/products/devices.asp?family_id=607
Ansonsten - schreib immer Kommentare neben den Assembler-Code und strukturiere ihn gut, sonst verlierst du sehr schnell die Übersicht. In Hochsprachen kann man einiges unkommentiert drauflosschreiben, in Assembler wirds dadurch schrecklich unübersichtlich. Ansonsten - der Flash kann ca. 10000 mal beschrieben werden, du kannst also viiiel herumprobieren.

hav fun
cht

Memby
15.08.2004, 09:12
Hallo Leute
Danke für Antwort. =D>


Hast du den ISP auch von dem tut? Wenn ja, dann wird der über den Parallelport angesteuert, den AVR Studio leider nicht unterstützt.

Ich habe ISP über Parallel. Wie würde eine Möglichkeit über RS232 aussehen? Wie geht das?



ich empfehle Dir, mit kleinen Programmen in BASCOM zu beginnen und dann auf Assembler umzusteigen.

Werde ich probieren. Zu diesem Thema wird es wohl genügend Einführungsmaterial und Übungen geben. Hat jemand einen guten Link, dann brauche ich nicht so viel suchen. Danke.

Hallo cht
Hast du deine Stoppuhr selber entwickelt oder ein anderes Projekt für deine Zwecke umgestaltet? Mich würde die Hard- und Software interessieren. Wie hast du das gemacht? Würde ich auch gerne bauen.

Datenblätter und Befehlsverzeichnisse habe ich zu beginn meines µC Darseins ohne Ende runter geladen. Daran sollte es nicht scheitern.


Tschö Stefan

cht
15.08.2004, 09:39
Hallo Memby,
Das ist doch schon mal sehr gut. Die Uhr hab ich komplett selbst gebaut, etwa so:
-Eigenes Board, entspricht dem vom tut, hat einen Quarzoszilla 10 MHz, nen USART>RS232 Wandler und die I/O-Ports sind auf Wannenbuchsen gelegt. Das ist sehr praktisch weil man dann per 10pol. Flachbandkabel (8bit + GND + +5V) alles mögliche dran anschließen kann. Dann kannst du Zubehörteile auf Extraplatinen bauen (auch Wannenbuchsen drauf) und leicht mit jedem Port verbinden. Ich empfehle da eine Taster- und eine LED-Platine, einen Taktgeber für die Stoppuhr und einen Adapter für ein LCD, ich hab ein 16x2 genommen. Schaltpläne für den ganzen Kram gibts auf Wunsch.
Der Code funktioniert ungefähr so: Ein externer Oszillator gibt einen 100Hz Takt an den 16bit Timer. Wird ein externer Interrupt 0 ausgelöst, resette und aktiviere ich den timer. Zum Stoppen des Timers benutze ich die "Input Capture" Funktion, die auch von außen ausgelöst wird und die Timer-Werte gleich zwischenspeichert, näheres dazu im Datenblatt unter "16bit Timer".
Jetzt habe ich eine 16bit Zahl, in der die Hundertstelsekunden stehen. Ich habe eine Divisions/Modulodivisions-Routine geschrieben um die einzelnen Ziffern rauszubekommen, die werden dann ins display geschrieben. Den Code pack ich besser gleich dazu, sonst isses etwas schwierig zu verstehen.
Ich arbeite jetzt daran aus der Zeit mithilfe einer voreingestellten Strecke eine Geschwindigkeit auszurechnen, das ist noch nich ganz fertig.

mfG

cht

Memby
15.08.2004, 19:42
Hallo cht

Erst ma danke. Ich habe noch ein bisschen zu kämpfen, um den Code zu Verstehen. Bin noch nicht so lange im Geschäft und es fehlt mir leider die Zeit (daher auch die späten Antworten), doch so nach und nach kommt Licht ins Dunkle. Die Hardware macht keine Probleme nur die Software.
Um den Durchstieg zu bekommen fange ich mit kleinen Brötchen an. Hier ein Bild meines ersten Projektes, was den Sinn hat --> Lampe an/Lampe aus. Mein zweites ist nun eine Schrittmotorsteuerung. Die Sache Wannenstecker und der Peripherie habe ich anders gelöst: Einfach obern drauf!!!!!!!!!!!!
Untere Platine mein Atmega8 und obendrauf sind die I/O gesteckt.

Und es geht weiter.

Frank
15.08.2004, 20:50
Also zumindest für den Einstieg würde ich dir mal den Bascom-Compiler empfehlen. Siehe Link: https://www.roboternetz.de/phpBB2/viewtopic.php?t=884
Die Produktivität ist in einer Hochsprache einfach viel höher. Du wirst das meiste damit mindesten 2 bis 3 mal schneller als in Assembler hin bekommen. Lass dich nicht duch die üblichen Vorbehalte gegenüber Basic abschrecken, 95% deiner Vorhaben wirst du vermutlich in Bascom genausogut wie in Assembler hin bekommen.
Sollte es einmal nicht klappen und du musst wirklich was in Assembler optimieren, so kannst du das immer noch dann tun wenn es notwendig ist. Bis dahin bist du dann auch schon sehr vertraut mit der Programmierung des Controllers. Man kann in Bascom auch in Assembler programmieren oder direkt auf die Register zugreifen, so das ein langsamer Übergang in Assembler auch leicht fällt.

Netbird
16.08.2004, 08:02
Ja genau! Du sprichst mir aus der Seele, Frank!

Harald

Memby
16.08.2004, 20:00
Danke für eure Antworten
Ich werde mal mit Bascom anfangen und melde mich, wenn ich probleme bekomme.

Tchsö <:memby:>

cht
17.08.2004, 18:40
Na dann wünsche ich viel Spaß!
Tipp: Wenn deine Peripherie mal zu groß wird (das passiert sicher irgendwann) kannst du auch Pfostenstecker (das Gegenstück zur Wannenbuchse) auf normale Stiftleisten stecken und per Flachband verbinden.

cht