Gast
#467448
Hi Sagt man, wie muss ich das DDRx Register für die Pins der seriellen Schnittstelle setzen? RXD auf 0 (Eingang) und TXD auf 1 (Ausgang)? Oder beide auf Eingang? Ciao Tobias
|
Anzeige
|
DDRx für serielle Schnittstelle?
Gast
#467448
Hi Sagt man, wie muss ich das DDRx Register für die Pins der seriellen Schnittstelle setzen? RXD auf 0 (Eingang) und TXD auf 1 (Ausgang)? Oder beide auf Eingang? Ciao Tobias Ist egal. Die UART übergeht die Porteinstellungen für die beiden Pins.
Gast
#467460
>Sagt man
..sollte natürlich "Sagt mal" heißen - egal...
Danke! Dann lass ich das Register einfach unangetastet.
Ciao Tobias
Die Einstellungen des DDRx werden hier ignoriert. Allerdings kann man für RXD mithilfe des PORTx-Registers den internen PullUp setzen oder löschen. Das ist hilfreich beim Anschluß von Peripherie, die keinen eigenen High-Pegel im Ruhezustand erzeugen kann (Open Collector oder Open Drain-Ausgänge).
Gast
#467975
wenn ich nicht weiß, ob mein Sensor, der an der seriellen Schnittstelle hängt, das kann oder nicht - besser den pull up aktivieren oder lassen? Ciao Tobias Aktivieren! Die 0,2mA die der dann nach GND gezogen werden muß, sollte eigentlich jeder Sensor schaffen. Wenn´s ein OpenDrain ist, geht´s eh nicht ohne. Einfache 3-Bein-Hallsensoren zum Beispiel sind oft OpenCollector.
Gast
#468722
Hi,
kommt immer auf den Controller an. Ich initialisiere die UART so, damit
es geht:
void InitUART( void )
{
DDR4_D42 = 1; /* Enable SOT1 as output */
DDR4_D40 = 0; /* Enable SIN1 as input */
CDCR1 = 0x80; /* set UART-prescaler, DIV=8 */
SCR1 = 0x13; /* 8-data bits, 1-stop bit, no parity,
Data frame, Tx/Rx enable */
SSR1 = 0x0A; /* transfer starts with LSB 0x08 -- interrupt
enable*/
SMR1 = 0x19; /* select Mode0, select asynchr.transfer,
set Baud rate to 9600, SOE enable */
ICR13 = 0x04; // normal interrupt level 4
}
Gruß Marc989
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|