Forum: Mikrocontroller und Digitale Elektronik Mathematische Berechnungen +,-,x,:


von Thomas (Gast)


Lesenswert?

Hallo,

kann mir jemand für obengenannte Berchnungen jeweils eine 
Programmzeile(assembler) sagen o. lang ein Befehl dafür nicht?
Habe 3 Register Zahl1(R21), Zahl2(R22) und Ergebniss(R23)

Zahl1+Zahl2=Ergebniss
Zahl1-Zahl2=Ergenisss
Zahl1xZahl2=Ergebniss
Zahl1:Zahl2=Ergebniss

Ist das überhaupt möglich oder überschreibt mir das Ergebniss entweder 
Zahl1 o. Zahl2? Also Danke schon mal im vorraus.

von Stefan Weinert (Gast)


Lesenswert?

Hallo Thomas!


Generell findest Du unter http://www.atmel.com relativ viel Material, 
darunter auch Application Notes, in denen Du Programmierbeispiele finden 
kannst, darunter auch mathematische Berechnungen.
Siehe (http://www.atmel.com/atmel/products/prod201.htm)
Aber: wenn Du multiplizieren willst, kommst Du mit einem 
Ergebnisregister von 8Bit nicht aus, da 8x8Bit (256*256) bis zu 16Bit 
ergeben können. Benutze um mehrere Register zu erhalten die 
Push/Pop-Befehle.
Zu Deinem zweiten Problem: Um eine Zeitbasis zu erhalten, solltest Du 
generell einen Timer verwenden, der einen Interrupt alle 16ms auslöst. 
Die Zeit kannst Du mit den Timer-Konfigurationsregistern einstellen, was 
eigendlich im Datenblatt des Controllers ziemlich gut erklärt ist.
Zu Deinem dritten Problem: Du kannst den E2-Speicher generell nicht für 
Programmcode verwenden. Die Angabe, daß der Flash-Speicher für 1000 
Programmierzyklen gedacht ist, bedeutet nur, daß Atmel bis dahin 
GARANTIERT, Du aber in wirklichkeit mit bis zu 10000 Zyklen gehen 
kannst. Das hat mir ein Distributor von Atmel mal unter der Hand 
mitgeteilt.
Als kleinen Tip: Der kleine Emulator von Atmel kostet gerade mal 450DM, 
damit kannst Du dann schon enorm besser entwickeln als mit dem 
Simulator.
Mit den Atmels hast Du einen recht sinnvollen Einstieg gemacht. Ich 
selbst habe damit für die Industrie einige Geräte programmiert, die in 
mittelgroßen Stückzahlen laufen.

Viel Spaß und viel Erfolg
Stefan

von Thomas (Gast)


Lesenswert?

Hallo,

danke für deine Antworten, im Datenblatt staht es zwar drin aber
ohne Beispiel kann ich das nicht verwerten. Weitehin hab ichs nicht so 
mit englisch, daher dachte ich das ich vielleicht etwas gut erklärtes in 
deutsch finde. Für meine Multiplikationen langen 8Bit volkommen aus.

>Zu Deinem zweiten Problem: Um eine Zeitbasis zu erhalten, >solltest Du generell 
einen Timer verwenden, der einen Interrupt >alle 16ms auslöst. Die Zeit kannst Du 
mit den Timer- >Konfigurationsregistern einstellen, was eigendlich im Datenblatt 
>des Controllers ziemlich gut erklärt ist.
Genau dazu bräuchte ich ein kleines Beispiel, du kennst keine Quelle im 
net in deutsch?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo,

ein Beispiel einer 8bit*8bit=8bit Multiplikation findest du im Anhang.
Zu den Timern kommt in den nächsten Tagen ein Tutorial, vielleicht sogar 
noch heute.

MfG
Andreas

von Thomas (Gast)


Lesenswert?

Hallo,

danke endlich mal ne konkrete Antwort mit der man etwas anfangen kann.

von sascha (Gast)


Lesenswert?

hi, könntest du mir das beispiel auch bitte  zusenden, der link oben 
geht leider nicht

sascha

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.