mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik auf TIFR Register zugreifen geht nicht


Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte gern ein Flag im TIFR Register abfragen Timer1 Match A
also Bit 4

Ich will das nicht mit einem IR machen sondern mit einer Schleife



loop:  sbis TIFR, 4
       rjmp loop


aber das AVR Studio gibt mir einen Fehler aus

Kann ich direkt auf das Register in der Form zugreifen?
Controller ist ein Maga 16

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi René,

SBIS/C funktioniert nur für die unteren 32 I/O-Register.

Je nach AVR geht es so:

loop:
  in reg, TIFR
  sbrs reg, 4
  rjmp loop

 oder so (bei AVRs, bei denen TIFR im "memory mapped" Bereich liegt):

loop:
  lds reg, TIFR
  sbrs reg, 4
  rjmp loop


Gruß

Fred

Autor: Tassilo Böhr (big_t)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei
  in reg, TIFR
  sbrs reg, 4
die 'umständliche' Form von
  sbs TIFR, 4
ist.

Tassilo

Autor: Tassilo Böhr (big_t)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist, sollte natürlich
sbis TIFR, 4
statt
sbs TIFR, 4
heißen.

Tassilo

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Tassilo,
>   sbs TIFR, 4
"sbs" ist kein dem AVR Assembler oder Assembler-2 bekannter Befehl.

Gruß

Fred

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tassilo Böhr wrote:
> Mist, sollte natürlich
>
> sbis TIFR, 4
> 
> ...
Genau das ging ja bei René nicht, da TIFR beim Mega16 bei 0x38 liegt, 
also oberhalb der unteren 32 I/O-Adressen, und demnach nicht mit 
sbis/sbic zugänglich ist.

Gruß

Fred

Autor: Tassilo Böhr (big_t)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fred
Das ist mir schon klar, ich wollte bloß anfügen, daß eine 
in/sbrs-Kombination 'umständlicher' ist als sbis. Daß das in diesem Fall 
aufgrund der Adresse nicht geht, hast du ja schon geschrieben...

Tassilo

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch es geht.
Verwirrend ist wenn man in TIFR ein bit löschen will muß man eine 1 auf 
das entsprechende Bit schreiben.
Aber naja letztendlich geht es so wie es soll.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
René wrote:

> Verwirrend ist wenn man in TIFR ein bit löschen will muß man eine 1 auf
> das entsprechende Bit schreiben.

Warum?  Du benutzt doch auch Windows, und wenn du das anhalten willst,
musst du über ,,Start'' gehen. ;-)

http://www.nongnu.org/avr-libc/user-manual/FAQ.htm...

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Verwirrend ist wenn man in TIFR ein bit löschen will muß man eine 1 auf
>das entsprechende Bit schreiben.

Das ist zwar verwirrend, aber ziemlich praktisch. Stell dir vor, du 
müsstest eine "0" reinschreiben. Ohne dann die anderen Bits 
versehentlich zu beeinflussen müsstest du dann so vorgehen, denn du 
weißt ja nicht, wie die Bits momentan gesetzt sind:

1. Register einlesen
2. Bit löschen
3. Register schreiben


Aber so wie es Atmel umgesetzt hat, brauchste nur die "1" an die 
richtige Stelle zu schreiben, es ist egal, was an den andren Stellen 
steht.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nun ja, wenn schon bitadressiert, könnte man da ja auch ne 0 
hinschreiben. Verstehe den SInn deines postings nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.