Forum: Mikrocontroller und Digitale Elektronik AVR ATmega 644A Com2 will nicht


von ray w. (raysor)


Lesenswert?

Hallo,

ich habe ein Problem mit der Com2 beim ATmega 644A (BASCOM) und 
diesbezüglich nun jedes Forum erfolglos durchsucht. Wie Com2, gemäß 
BASCOM-HELP, zu initialisieren und anzusprechen ist, weiß ich.
Selbst "zu Fuss" angeschoben, tut sich auf TXD1 nichts. Hier ein 
Schnipsel:

$regfile = "m644Adef.dat"
$crystal = 16000000
$baud1 = 9600
$baud = 9600

UCSR1B = &B00011000
UCSR1C = &B10000110
UCSR0B = &B00011000
UCSR0C = &B10000110

Do

waitms 50
UDR1 = Asc("T")
UDR0 = Asc("S")

Loop

End

Der Port TXD1 liegt permanent auf LOW während an TXD0 das Zeichen 
permanent ausgegeben wird. Hat jemand eine Idee?

von Timmo H. (masterfx)


Lesenswert?

Der 644 hat doch nur ein USART?!

von Alex S. (riese)


Lesenswert?

Moin!
Ich glaub nur der 644P(A) hat ne zweite UART-Schnittstelle


Gruß
Alex

von Timmo H. (masterfx)


Lesenswert?

Nee stimmt, der "A" hat auch zwei...
Sind denn die Register auch in m644Adef.dat richtig definiert?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Guck nochmal nach ob du wirklich den 644er hast mit 2 UARTs.

von Carl D. (jcw2)


Lesenswert?

Atmel sagt: kein P am 644er, keine 2.Uart!

von ray w. (raysor)


Lesenswert?

So, wie es aussieht, hat der Kollege BASCOM die Register UDR1 in der 
m644Adef.dat vergessen. Das muss ich aber noch einmal genau untersuchen.
Im BASCOM-Simulator sieht man allerdings die Aktivitäten auf Com1 & 2. 
Dürfte das funktionieren, wenn die def.dat fehlerhaft ist?
Natürlich habe ich am Ende meines Lateins auch schon den Chip ersetzt.

@Martin
Der Mega644A hat laut Datenblatt 2 serielle Schnittstellen.

von ray w. (raysor)


Lesenswert?

Ich habe den Garten noch einmal umgegraben...
Der ATMEGA 644 (Oldie) hatte einen UART.
Der ATMEGA 644P (Oldie) hat zwei UARTs.

Ich sitze vor einem ATMEGA 644A. Das Atmel Datenblatt weist auf S.174 
folgendes aus:
"The Atmel ATmega164A/164PA/324A/324PA/644A/644PA/1284/1284P has two 
USART’s, USART0 and USART1."

Hierbei ist es völlig Wurst, ob xxxPA oder xxxA. Das P steht für 
"PicoPower".

Meine Untersuchung der m644Adef.dat hat ergeben, dass die 
Datendefinition für alle µC's aus dieser Serie wohl auf der Basis von 
Copy&Paste entstanden sind. In allen defs fehlt wohl die Definition der 
einzelnen Datenregister für UDR1. Ich habe diese nach der Definition für 
UDR0 nachgetragen. Leider führt dies auch noch nicht zum Erfolg. Beim 
Vergleich mit anderen AVR.dat, die einen zweiten UART besitzen, ist bei 
mir die Overloadlampe angegangen, da die Definitionen wieder ganz anders 
aufgebaut sind.

Hat den jemand schon einmal erfolgreich mittels Bascom den UART1 zum 
Leben erweckt? Wie ich bereits vorab geschrieben habe, sieht das Ganze 
im BASCOM -Simulator ganz unspektakulär aus...

von Thomas E. (thomase)


Lesenswert?

Steht denn beim P die richtige Definition drin?
Wenn ja, kompilierst du ihn einfach als P oder PA. Der Unterschied zum A 
ist die Möglichkeit des  automatischen Abschaltens des BOD im Sleepmode. 
Aber die benutzt du ja sowieso nicht, da du ja einen A hast.
Vom marginal geringeren Stromverbrauch weiss die Software ohnehin 
nichts.

mfg.

von ray w. (raysor)


Lesenswert?

@Thomas Danke für den Hinweis. Ich progge den ATmega aus der 
BASCOM-Umgebung über den AVRISP MKII. Der Programmer hat sich extrem 
affig, wenn die def.dat nicht zur Chip-ID passt. Ich hatte die ISP 
bislang immer aus dem AVR-Studio vorgenommen. Der Gedanke , dass diese 
Vorgehensweise umständlich ist, hat mich dazu verleitet, den Treiber für 
den BASCOM-Programmer zu laden. Seither erkennt das AVR-Studio den Prog 
nicht mehr und ich habe die Bequemlichkeit mit der Aufgabe der 
Flexibilität erkauft.
Ich werde dennoch jetzt versuchen, die Com2 mal in Assembler, unter 
Umgehung des BASCOM-Compilers, anzusprechen. Einen Tag gebe ich mir 
noch, bevor sich mein Interesse dahingehend verlagert, herauszufinden, 
ob das DIL-Gehäuse unter Flammeinwirkung brennt, oder schmilzt! 8=}

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.