Forum: Mikrocontroller und Digitale Elektronik Danke, Atmel, für EIMSK und EICRA


von verzweifler (Gast)


Lesenswert?

Do nich füüür, wie der Hamburger sagt,

dann OUT EIMSK,rr zuzulassen, aber nur STS EICRA,rr ist schon große 
Klasse.

Ja, ja ich weiß, man kann sich ein Makro schreiben oder ganz hinten im 
Datenblatt nachgucken, aber ich meine es gehört vorne rein, und genau da 
wo man es braucht...

Danke jedenfalls für 6 Stunden verzweifelte Fehlersuche, warum INT0 
nicht auslöst. Das wird mir nicht wieder passieren. Und dank Google und 
Suchfunktion vielleicht jmndn. anderen auch nicht, der das dann hier 
findet.

von Peter D. (peda)


Lesenswert?

verzweifler schrieb:
> Ja, ja ich weiß, man kann sich ein Makro schreiben oder ganz hinten im
> Datenblatt nachgucken

Oder einfach in C programmieren, dann kümmert sich der Compiler.


Peter

von Peter D. (peda)


Lesenswert?

P.S.:
Was war denn an der Fehlermeldung:
"error: Operand 1 out of range: 0x69"
so unklar, daß es 6 Stunden gedauert hat?


Peter

von spess53 (Gast)


Lesenswert?

Hi

>dann OUT EIMSK,rr zuzulassen, aber nur STS EICRA,rr ist schon große
>Klasse.

Bei einer Fehlermeldung sollte man eigentlich stutzig werden.

MfG Spess

von verzweifler (Gast)


Lesenswert?

Habe mich wohl nicht klar genug ausgedrückt und ja auch nicht gesagt, 
dass es nicht meine Blödheit ist.

Ich hatte die Variante: beides, mit STS EICRA und STS EIMSK.

Es gibt aber KEINE Fehlermeldung bei STS EIMSK,rr.
Da ist ja auch nichts falsch dran, nur es fehlt ein Offset von 0x20.

Die Fehlermeldung gibt es nur bei OUT EICRA,rr. Das hatte ich nicht.

Das mit C ist dann aber wohl eher ein Witz.

von Karl H. (kbuchegg)


Lesenswert?

verzweifler schrieb:

> Das mit C ist dann aber wohl eher ein Witz.

Eigentlich nicht.
genau deshalb programmieren hier viele C: damit man sich genau um 
solchen Scheiss nicht kümmern muss und trotzdem performancemässig 
ziemlich nahe an dem drann ist, was ein guter Assemblerprogrammierer 
auch hin kriegt. Einen kleinen Penalty zahlt man, aber der ist es wert.

von verzweifler (Gast)


Lesenswert?

Bei zeitkritischen Anwendungen (im 500 ns Bereich) ist C für mich leider 
keine Alternative, wenn ich nicht weiss, was der Compiler draus macht. 
Jedesmal in den LST file zu gucken, ist auch nicht sinnfüllend. Also 
bleibe ich bei ASM, habe erfreuliche 32 Register und kann mit MOV a,b 
innerhalb von 50 ns ein byte wegspeichern und wiederholen. Das ist doch 
eigentlich toll.

von Lukas K. (carrotindustries)


Lesenswert?

Dafür wurde inline-ASM erfunden. Den komplexen Teil machst du in C, das 
performancekritische in ASM.

von Michael U. (amiga)


Lesenswert?

Hallo,

verzweifler schrieb:

> Ich hatte die Variante: beides, mit STS EICRA und STS EIMSK.
>
> Es gibt aber KEINE Fehlermeldung bei STS EIMSK,rr.
> Da ist ja auch nichts falsch dran, nur es fehlt ein Offset von 0x20.
>
> Die Fehlermeldung gibt es nur bei OUT EICRA,rr. Das hatte ich nicht.

naja, ich nehme eigentlich immer erstmal OUT xxx,rr und schau mir dann 
das Gemecker an.
Sonst schau ich schon aus Faulheit erstmal in meine alten Sourcen, ob 
ich sowas schonmal für diesen AVR benutzt habe und kopiere die Stelle 
dann gleich und passe an.

Gruß aus Berlin
Michael

von [Frank] (Gast)


Lesenswert?

Dafür eignen sich sehr einfach die IO-Makros (AVR001), die je nach 
IO-Adresse eben die notwendigen Instruktionen einsetzen.

von C-Verweigerer (Gast)


Lesenswert?

> Dafür eignen sich sehr einfach die IO-Makros (AVR001), die je nach
> IO-Adresse eben die notwendigen Instruktionen einsetzen.

Dann kann man ja gleich C benutzen. :-/

Ich halte ein ausgedrucktes Register-Summary für sinnvoll. Das dient 
auch gleich noch als Inhaltsverzeichnis (Seiten-Referenz) auf das PDF, 
falls noch Fragen zu den Registern und ihren Bits geklärt werden müssen.

von icke (Gast)


Lesenswert?

Der Tenor der Nörgler stößt mir etwas auf, aber ich muss mich auch 
anschließen, daß man das Datenblatt sinnvoller aufbauen könnte. Was aber 
auf eigentlich jedes Datenblatt zutrifft, oder? ;-)
Die c-Ignoranz der, ja was eigenltich 'Verweigerer' triffts ja nicht 
wirklich, finde ich aber irgendwie fast amüsant.
Können ja hoffentlich nur Bastler sein, denn wer würde im beruflichen 
Bereich unnötige (ja unnötige, denn ein ganzes Programm wird schwerlich 
soooo zeitkritisch werden können, wohl eher an mieserabler Planung 
leiden) Mühen auf sich nehmen und dabei noch als Assembler Hecht 
fühlen...

von Chris (Gast)


Lesenswert?

verzweifler schrieb:
> Danke jedenfalls für 6 Stunden verzweifelte Fehlersuche, warum INT0
> nicht auslöst. Das wird mir nicht wieder passieren. Und dank Google und
> Suchfunktion vielleicht jmndn. anderen auch nicht, der das dann hier
> findet.

Hey, danke! Genau daran habe ich gerade auch gesessen.

von Viktor (Gast)


Lesenswert?

googlesuche: "avr eimsk"
und dieser Thread ist das erste Ergebnis. ;-D
hatte gerade das gleiche Problem.
Funktionierte trotz fehlerfreiem kompilieren nicht, weder im Simulator 
noch im µC, daher möchte ich ein "Dankeschön" an den Autor richten.

Lieben Gruß

von npn (Gast)


Lesenswert?

Viktor schrieb:
> googlesuche: "avr eimsk"
> und dieser Thread ist das erste Ergebnis. ;-D

Hätte mich auch gewundert, wenn es Google nach 5 Jahren nicht in seine 
Suchergebnisse aufgenommen hätte... :-))

von Peter D. (peda)


Lesenswert?

1
;----------------------  macros for extended IO access -------------------
2
.macro  xout
3
.if  @0 > 0x3F
4
  sts  @0, @1
5
.else
6
  out  @0, @1
7
.endif
8
.endmacro
9
;---------------------------
10
.macro  xin
11
.if  @1 > 0x3F
12
  lds  @0, @1
13
.else
14
  in  @0, @1
15
.endif
16
.endmacro
17
;---------------------------
18
.macro  xlpm
19
.if FLASHEND > 0x7FFF
20
  elpm  @0, @1
21
.else
22
  lpm  @0, @1
23
.endif
24
.endmacro
25
;------------------------------------------------------------------------

von Pedda (Gast)


Lesenswert?

Ist jetzt nicht dein ernst, oder?
Wer soll sich denn so einen Makrofu... merken?

Ne, dann lieber C und den Optimierter auf warp.

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.