USART Konflikt bei ATMEGA

Gast #106341
Lesenswert?

Hallo,

benutze die 2. serielle Schnittstelle (TXD1/RxD1) beim ATMEGA128L an
PortD. Wenn ich beim Init. die Register PORTD und DDRD auf 0x00 setze,
gibt's kein Problem.
Jedoch wenn ich sie auf (PORTD: 0x13, DDRD: 0x53) setze, dass heißt die
anderen Pins teilweise auf Eingang/Ausgang bzw. Pull-Up/Pull-Down setze,
funktioniert die usart nicht mehr. RxD1 ist an Pin2, TXD1 an Pin3.
Gibts vielleicht Probleme mit der Bitadressierung an diesem Port? Im
DataSheet habe ich keine Lösungsansetze entdeckt...

Mario
Gast #106342
Lesenswert?

hi !!!
ich schaetze ,dass man auf die 6 anderen pins von port D verzichten
muss wenn man den port als usart benutzt. so nen interner verbrauch des
ports im prinzip ??
zB. wird PD5 auch vom USART genutzt !!!
genaueres wird man wohl in der m128def.inc finden !!!
ja denke schon aber es sind doch wirklich genug io pins vorhanden
Gast #106343
Lesenswert?

Danke schonmal für die Antwort. Leider habe ich auch in der m128def.inc
nichts gefunden, was mir weiterhilft.
Die usart1 benutzt nur Pin2 und Pin3. An Pin0 und Pin1 sind bei mir
CS-Signale, die ich intern Pull-Up schalten will. Bei Pin0
funktioniert's auch, sobald ich aber Pin1 im DDRD auf Pull-Up schalte,
funktioniert weder der Zugriff auf den Pin noch die usart.

Kann es mir einfach nicht erklären...
Gast #106346
Lesenswert?

ok, sollte wenn man das hier gelesen hat wohl doch mit den pins laufen
!! (aus dem manuel)

"Note that enabling the alternate function of some of the port pins
does not affect the use of the other pins in the port as General
Digital I/O."

vieleicht helfen dir ja die Table 37 und 38 auf seite 77!!
Gast #106347
Lesenswert?

Ob der MCU im Mega128-Mode ist, hab ich noch nicht kontrolliert. Der
wird wohl defaultmäßig in dem Mode laufen...
Die Tabellen helfen mir eigentlich nicht wirklich weiter.
Auf dem Pin7 habe ich es auch schon probiert. Funktioniert's auch
nicht.
Vielleicht finde ich ja noch einen Fehler. Ansonsten bin ich für
weitere Tipps sehr dankbar!!!

Mario
Gast #106348
Lesenswert?

Ich hab nochmal im Datenblatt nachgelesen. Außer eventuell Pin5
(Clock-Ausgang der seriellen Schnittstelle) kann die doch die anderen
Pins nicht beeinflussen. Zumal ja Pin0 einwandfrei funktioniert.
Gast #106349
Lesenswert?

Default ist, warum auch immer, der mega103 Kompatibilitätsmodus!
So stehts jedenfalls unter 'Memory Programming' im Datenblatt. Man
muss also das EFUSE-Register auf 0xff setzen.
Im Kompatibilitätsmodus sollte die zweite Schnittstelle aber eigentlich
garnicht gehen!???
Gast #106350
Lesenswert?

Danke für den Hinweis.
Habe zwar den entsprechenden Fuse mittels CodeVision umprogrammiert,
aber er speichert die Fuse-Programmierung nicht???
Im Kompatibilitätsmodus ist die 2. serielle Schnittstelle schon
gegangen.. warum weiß ich nicht.

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