Forum: Mikrocontroller und Digitale Elektronik URXC Register für Atmega2561


von Alexander S. (theredx)


Lesenswert?

Hallo zusammen,

ich möchte einen Interrupt Abfrage mit einem Atemga2561 für meine RS232 
Schnittstelle erstellen.
Ich weiß, dass das URXC Register beim Atemga8 wartet bis es einen 
vollständigen Datensatz erhalten hat und dann den Interrupt auslöst, 
indem ich die Daten verarbeiten kann. (Quelle: Roland Walter AVR 
Mikrocontroller Lehrbuch)
Ich habe das auch einmal ausprobiert am Atmega8 und das funktioniert 
auch.
Da ich das ganze aber an einem Atmega2561 verwirklichen muss habe ich 
ein Problem.
Ich denke das die Register anders bezeichnet sind, darum arbeitet das 
Programm auf dem Atmega2561 nicht. Meine Frage ist also, ob mir jemand 
sagen kann wie das Register auf dem Atemga2561 heißt da ich erfolglos 
versucht habe es im Datasheet aus zu machen. Mir wäre auch ein Tipp sehr 
recht wie ich so was allgemein herausfinden kann(mal abgesehen vom 
Datasheet).

Gruß The Red X

von Johannes M. (johnny-m)


Lesenswert?

Ein Register mit dem Namen URXC gibt es weder beim ATMega8 noch bei 
einem anderen AVR.

von Alexander Schmidt (Gast)


Lesenswert?

Es geht ums UATR Empfangen und das soll halt mit diesem URXC ermöglicht 
werden.
Beim Atmega8 heißt es URXC und beim 2561 hab ich keine Ahnung.

von Norgan (Gast)


Lesenswert?

Meine Fresse, es kann doch nicht so schwer sein mal den Arsch 
hochzubekommen und selber ins Datenblatt vom 2561 zu sehen.

von Johannes M. (johnny-m)


Lesenswert?

Norgan wrote:
> Meine Fresse, es kann doch nicht so schwer sein mal den Arsch
> hochzubekommen und selber ins Datenblatt vom 2561 zu sehen.
Ich vermute, dass ihm das Datenblatt da auch nicht helfen wird, da es 
weder ein Register, noch ein Bit oder sonstwas mit der Bezeichnung URXC 
gibt! Schätzungsweise ist das irgendeine BASCOM-interne Bezeichnung 
(möglicherweise für den betreffenden Interrupt-Vektor). Allerdings 
sollte man sich erstmal intensiv mit den Grundlagen befassen, wenn man 
den Unterschied zwischen Registern, Bits, Interrupt-Vektoren 
undwasweißichnochalles nicht kennt... Auch BASCOM lernt man nicht durch 
wildes Rumprobieren.

von Alexander Schmidt (Gast)


Lesenswert?

Norgan wrote:
> Meine Fresse, es kann doch nicht so schwer sein mal den Arsch
> hochzubekommen und selber ins Datenblatt vom 2561 zu sehen.

Ich lese seit Stunden nur in diesem Ding glaub mir.
Ich kenne mich mit den Registern wirklich nicht so doll aus aber darum 
frage ich ja auch hier nach.
Also ich bin inzwischen so weit, das ich weiß das es beim Atmega2561 das 
USART Register gibt. Dort hat man dann die UCSRA, UCSRB und UCSRC.
Ich glaube diese sind die, die beim Atmega8 das URXC sind(glaube ich).
Aber ich bin mir halt absolut nicht sicher weil ich bei dem ganzen 
Haufen von UDR's und URXC's nicht mehr durch sehe.
Was ich weiß ist nur das das Ding einfach nur eine Interrupt auslöst 
wenn was über UART kommt.

Ich hoffe es kommt langsam Licht dahinter was ich suche.

von Johannes M. (johnny-m)


Lesenswert?

Alexander Schmidt wrote:
> Norgan wrote:
>> Meine Fresse, es kann doch nicht so schwer sein mal den Arsch
>> hochzubekommen und selber ins Datenblatt vom 2561 zu sehen.
>
> Ich lese seit Stunden nur in diesem Ding glaub mir.
> Ich kenne mich mit den Registern wirklich nicht so doll aus aber darum
> frage ich ja auch hier nach.
Nochmal: Du wirst die BASCOM-Doku bzw. -Hilfe benötigen! Nach Deinem 
Hinweis auf das Buch von Roland Walter, das sich afair mit BASCOM 
befasst, gehe ich jedenfalls davon aus, dass Du in BASCOM programmieren 
willst.

> Also ich bin inzwischen so weit, das ich weiß das es beim Atmega2561 das
> USART Register gibt.
Das USART-Register gibt es nicht!

> Dort hat man dann die UCSRA, UCSRB und UCSRC.
Jo, das sind die drei Steuerregister für das USART, in denen die 
Konfigurationsbits stehen.

> Ich glaube diese sind die, die beim Atmega8 das URXC sind(glaube ich).
Nochmal: Es gibt weder beim ATMega8 noch bei irgendeinem anderen mir 
bekannten AVR ein Register mit der Bezeichnung URXC! Lies nochmal mein 
letztes Posting.

> Aber ich bin mir halt absolut nicht sicher weil ich bei dem ganzen
> Haufen von UDR's
Für jedes UART gibt es nur ein einziges UDR! Also nix mit "Haufen".

> und URXC's
Das gibt's immer noch nicht. Und den Plural schreibt man ohne Apostroph.

> Was ich weiß ist nur das das Ding einfach nur eine Interrupt auslöst
> wenn was über UART kommt.
Wenn das mal so einfach wäre!

> Ich hoffe es kommt langsam Licht dahinter was ich suche.
Nicht, solange Du Dich auf einem völligen Holzweg befindest.

von Alexander Schmidt (Gast)


Lesenswert?

Phhuu...
Weiter im Text.
Das Register das ich nutzen muss müsste wäre dem nach also das UCSR(A, 
B, C)(UART Controll Status Register A, B oder C) richtig?
Wenn ich das manuell abfragen will, würde das denke ich mal so aussehen:
IF UCSRA.RXC = 1 Then
    I=UDR
    UDR=I
End IF
Das klappt allerdings nicht, weil er diese eben nicht mehr erkennt, wenn 
ich mit dem Atmega2561 arbeite. Er erkennt einfach das UCSRA register 
nicht mehr.

Dasselbe gilt halt auch für das URXC. Diese Interruptrutiene erkennt er 
nur mit dem Atmega8.

Sorry für das Kuddelmuddel mit den Registern ich tue mich da etwas 
schwer.

von Johannes M. (johnny-m)


Lesenswert?

Alexander Schmidt wrote:
> Das Register das ich nutzen muss müsste wäre dem nach also das UCSR(A,
> B, C)(UART Controll Status Register A, B oder C) richtig?
Jepp.

> Wenn ich das manuell abfragen will, würde das denke ich mal so aussehen:
> IF UCSRA.RXC = 1 Then
>     I=UDR
>     UDR=I
> End IF
> Das klappt allerdings nicht, weil er diese eben nicht mehr erkennt, wenn
> ich mit dem Atmega2561 arbeite. Er erkennt einfach das UCSRA register
> nicht mehr.
Der ATMega2561 hat ja auch zwei USARTs. Deshalb gibt es bei dem auch 
kein UCSRA usw., sondern UCSR0A bzw. UCSR1A, je nachdem, welches USART 
verwendet werden soll. Das wiederum steht allerdings tatsächlich im 
Datenblatt...

Bei den neueren AVRs haben diese Register generell eine Ziffer mit drin. 
Auch AVRs mit nur einem U(S)ART haben dementsprechend ein UCSR0A, um die 
Code-Kompatibilität zwischen unterschiedlichen AVRs zu erhöhen. Der 
ATMega8 stammt allerdings aus einer Zeit, als es noch keine AVRs mit 
mehr als einem USART gab, weshalb man das damals noch anders benannt 
hat.

> Dasselbe gilt halt auch für das URXC. Diese Interruptrutiene erkennt er
> nur mit dem Atmega8.
Wie schon (mehrfach, stöööhn) gesagt: Das ist vermutlich eine 
BASCOM-interne Bezeichnung für den Interrupt-Vektor. Möglicherweise 
(ich arbeite nicht mit BASCOM und kann da deshalb nichts Näheres zu 
sagen) gibt es ein logisches Äquivalent mit der Bezeichnung URXC0 bzw. 
URXC1...

von andromeda (Gast)


Lesenswert?

@ Alexander

gidf.de

Erster Treffer mit Suchwort "URXC"

http://www.rowalt.de/mc/avr/avrboard/04/avrb04.htm

"URXC ist ein Bascom-eigenes Kürzel für UART Receive Complete"

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.