PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Startschwierigkeiten bei ASM Programmierung von Atmel.



USB_Jens
16.12.2009, 09:39
Hallo zusammen!

Ich bin neu hier, und suche in Bremen Leute die sich für Modellbau und Programmierung von AVR´s interessieren. Und da ist auch schon der Haken.
Bei Modellbau kann ich gut Helfen, da ich mit konventionellen Maschinen ausgestattet bin. Bei AVR´s Programmieren suche ich jemanden der mir helfen kann.AVR´s programmieren möchte ich in ASM habe da aber einige Hürden.
Es wäre nett wenn jemand bereit wäre zu Helfen.
Wenn jemand Hilfe für Dreh oder Frästeile benötigt die auf konventionellen Maschinen gefertigt werden, dann meldet euch mal.

MfG USB_Jens :-k

Dominik009
16.12.2009, 10:49
worum geht es den genau?
hast du schon teile für die AVR programierung?
oder suchst du jemand der dir sagt was du brauchst?
hast du erfahrungen in einer programmiersprache?
ich kann z.b. leichtere sachen in bascom.
MFG
Dominik

USB_Jens
16.12.2009, 10:58
Hallo Dominik
Toll das man hier so fix eine Antwort bekommt.
Für die AVR´s habe ich mir einige Platinen geätzt und bestükt ( Testboard)
Das STK 500 und ein Wishboard plus Oszi habe ich auch.
So Grundlegende sachen wie eine Timerroutine und PWM steuerung sind mein Hauptproblem. Ich benötige aber keine fertigen Routinen sondern echte Starthilfe beim Aufbau solcher Programme.
Beispiel: Timerroutine mit LCD-Display wo ich mit Tastern frequenzen einstellen kann die über einen Port ausgegeben werden.

Gruß Jens

Dominik009
16.12.2009, 11:18
hast du den die ausstatung um was zu programmiren?
also eine isp dongel?
in welcher sprache willst du programieren?
also mit timerroutine kenne ich mich nciht wirklich aus,
aber bei PWM könnte ich dir helfen ;D

Dominik009
16.12.2009, 11:19
hast du den die ausstatung um was zu programmiren?
also eine isp dongel?
in welcher sprache willst du programieren?
also mit timerroutine kenne ich mich nciht wirklich aus,
aber bei PWM könnte ich dir helfen ;D

USB_Jens
16.12.2009, 11:25
Also programmieren möchte ich in Assembler, Ausstattung habe ich AVR-Studio,STK 500, ISP6 adapter und ein paar Minitestboard´s bestückt mit AT90S1200,Atmega8 16AI,ATTINY231310SU.Die Minitestboard´s habe ich selbst gebaut,alle pin´s sind auf Stiftleiste geführt so das man prima mit nem Wishboard Versuchsschaltungen bauen kann.

Dominik009
16.12.2009, 11:27
oh,
in assembler kann ich dir leider nicht helfen.
kan nur bascom und will jetzt C lernen
sorry.

USB_Jens
16.12.2009, 11:30
Trotz allem Vielen Dank.

Dominik009
16.12.2009, 11:38
jo,jo kein thema.

PicNick
16.12.2009, 11:51
Vielleicht findest du da ein paar Ansätze
http://www.rn-wissen.de/index.php/AVR_Assembler_Einf%C3%BChrung
http://www.rn-wissen.de/index.php/Assembler_Einf%C3%BChrung_f%C3%BCr_Bascom-User

Fragen gerne, aber für einen effektiven Kurs fühl' ich mich überfordert.

USB_Jens
16.12.2009, 12:00
Danke für die Antwort Robert.
Super dargestellt das Ganze,endlich mal eine Seite auf der Fragen auch beantwortet werden. So langsam komme ich in kleinen Schritten vorwärts.

Ceos
16.12.2009, 12:18
nunja, routinen bruacht man nicht direkt dafür, es geht mehr um das logische verständniss, du kannst dir mal das komplette datenblatt nehmen und mal spasseshalber durch die einzelnen features schnuppern, da ist ganz genau erklärt, wie man welches register manipulieren muss um welche reaktion zu erhalten

am ende ist das progrmam nichts weiter als eine permanente veränderung von registern, in verbindung mit reaktionen auf die hardware, bzw. das berechnen von variablen um einen entsprechenden output zu bekommen ....

ist ja, zumindest was C angeht, nicht so, dass man da einen bestimmte API hat und bestimmte methoden ausführen muss um das ergebnis zu erhalten

im endeffekt kannst dir den controller wie einen riesengroßen schaltschrank vorstellen und du musst nur den richtigen schalter finden ^^

in der verkürzten variante aus dem datenblatt mal PWM erklärt:

zunächst stellt man den countermodus(WGM) im TCCR ein
dann stellt man den outputmodus für die OC-Pins ein (wann high wann low)
dann stellt man die zähl- und vergleichsregister ein
mit dem einstellen des prescaler startet man abschließend den timer

nun kann man zusätzlich noch interrupts und die passenden serviceroutinen dazu einbauen, um z.b. ne variable hochzählen zu lassen oder so!

USB_Jens
16.12.2009, 12:54
So auch dir, ein Dankeschön.

Aber das hilft mir noch nicht. Wenn die ganzen Befehle so hintereinander da stehen, mit Haupt und Unterroutinen, dann Schau ich erst mal wie ein Schwein ins Uhrwerk.Erst der Anfang dann die Mitte und das Ende.
Ein Einsprung in diese Programmabläufe oder lernen durch lesen der Datenblätter ist nicht so mein Ding. Ich muss von ganz Unten anfangen.

Ceos
16.12.2009, 13:03
ich hab doch nirgends eine routine oder irgendwas erwähnt oder ?!

die schritte die ich beschrieben habe, sind nichts weiter als jeweils eine zeile code, in der ein bestimmtes bitmuster in ein register geschrieben wird!

und genau DA ist das datenblatt absolut unverzichtbar!!! damit du weist wie das bitmuster für das gewünschte verhalten aussehen muss

USB_Jens
16.12.2009, 13:25
Oben im dritten Absatz habe ich eine kleine Vorstellung von dem was ich als Prog benötige beschrieben. Das ist nur der Anfang einer Kette von Prog´s die ich mir schreiben möchte. Die Einzelnen Prog´s sind auf mehrere Prozessoren verteilt und arbeiten über eine Art CAN-Bus den ich dann auf viele kleine Platinen Ausbauen kann. Wenn es denn mal klappt.

Ceos
16.12.2009, 14:01
So Grundlegende sachen wie eine Timerroutine und PWM steuerung sind mein Hauptproblem. Ich benötige aber keine fertigen Routinen sondern echte Starthilfe beim Aufbau solcher Programme.
falls du das meinst, habe ich dir eine wirklich sehr deutliche starthilfe gegeben und ich wiederhole sie noch einmal

um einen timer für PWM zu benutzen, muss man die jeweiligen register mit den entsprechenden bitkombinationen laden und die zähl und vergleichregister mit passenden werten befüllen, das erzeugen des PWM passiert dann vollkommen automatisch

die bitkombinationen und die register findet man alle im datenblatt sehr übersichtlich erklärt!

entschuldige wenn ich es falsch sehe, aber im moment scheinst du doch eher zu erwarten, dass jemand einen ganzen code postet und dir jede zeile einzeln erklärt, aber das wird nicht jeder freiwillig machen!
aber wenn es wirklich an den grundlagen mangelt, herlfe ich natürklich auch sehr gerne weiter:

fangen wir doch damit an, dass du erstmal ein projekt erstellst und eine datei anlegst, in der du einen ganzen port auf ausgang stellst(mit dem DDR register) und auf low(mit dem PORT register = 0), dann schliesst du einfach 8 leds MIT WIDERSTAND von Vcc zu den 8 pins des port an ... wenn du alles richtig gemacht hast müssten jetzt die LEDs alle leuchten!

wenn dem so ist spiel doch mal mit dem PORT register herum und beobachte was passiert wenn du einzelne bits des register setzt und löschst