Danke, Atmel, für EIMSK und EICRA

Gast #1664116
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.
Gast #1664335
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.
#1664452
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.
Gast #1664513
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.
#1664601
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
Gast #1664687
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.
Gast #1664700
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...
#4001948
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
;------------------------------------------------------------------------

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren