PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : USART Problem



kremsy
17.05.2012, 19:15
Hallo Leute,

ich möchte eine Verbindung über RS232 zwischen 2 Mikrocontrollern Atmega32 und Cortex M3 STM32F10x herstellen.

Habe im moment folgendes Problem mit der USART:

Habe zum test PIN 11 und 12 miteinander verbunden, und die RS232 ausgänge mit einem PC verbunden, masse auch.

Messungen ergeben:
Spannungen PIN2 9V, PIN6 -9V.

Allerdings auf RX und TX messe ich -9V nachdem ich senden drücke in Hterm messe ich +1,7V.

Hoffe jemand kann mir helfen.

freundliche Grüße,
kremsy

michiE
17.05.2012, 20:53
Was genau bedeutet "verbunden" ? Hast du die Pins ohne jeden Pegelwandler direkt an die Schnittstelle angeschlossen ? kannst du einen kleinen Schaltplan zeichnen und hier posten ?

lg
Michi

kremsy
17.05.2012, 21:32
2238222383

Sind die Grundschaltungen, bei dem Atmega Board habe ich zum testen den Atmega rausgenommen und die Pins am Sockel Verbunden Rx und Tx.

Thomas E.
18.05.2012, 10:46
Sind die Elkos am MAX232 richtig gepolt? Sonst bringt er nämlich die notwendigen Spannung nicht zusammen.

kremsy
18.05.2012, 11:22
Es wurden lauter 1µF ungepolte SMD kondensatoren verwendet.

Am Atmega hab ich es mittlerweile hinbekommen, habe den Bügel wider entfernt den Prozessor reingesteckt und schon lief die Verbindung zum Terminal Programm.
Das Problem war, dass ich den Prozessor über USB versorgt hatte und das nur 4,3V waren und wohl zuwenig für den MAX, übern 5V Spannungsregler läufts.

Allerdings beim STM32 funktionierts noch nicht richtig, wenn ich im Terminal ein Zeichen sende
steht im Terminal das als Received, is aber das selbe wie wenn ich das
Kabel ausstecke. Spannungspegel passen. Dis Pegel am Rx und Tx auf RS232
seite sind annähernd 0 ändern sich minimal bei übertragung...

Der Rx Spannungsteiler ist auch Merkwürdig, da hab ich 3,7V am Rx und in
der Mitte vom Spannungsteiler 0V.


Testzyklus:

while(1)
{
/* Wait while USART1 TXE = 0 */
while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET)
{
}
Delay(1);
USART_SendData(USARTy, 0x33);

if(USART_GetFlagStatus(USARTy, USART_FLAG_RXNE) != RESET)
{
GPIO_SetBits (GPIOC, GPIO_Pin_9);
LCD_Data(USART_ReceiveData(USARTy));
}
else
GPIO_ResetBits (GPIOC, GPIO_Pin_9);
}

kremsy
18.05.2012, 12:26
Die Ausgangspegel sehen jetzt ganz okay aus, und beim Senden vom Terminal kommt auch nix mehr zurück bei Receive, außer wenn man den µC Resettet und dann sendet steht einmal <0> im Terminal. Allerdings kommt wohl beim Prozessor nix an und umgekehrt auch nicht...

kremsy
18.05.2012, 14:16
Problem gelöst: Die Display Initialisierung war schuld, habe da den
ganzen PORTA als ausgang gesetzt, statt nur die nötigen Pins...

BASTIUniversal
19.05.2012, 16:14
www.mikrocontroller.net/topic/259028

Gruß
Basti