Hallo,
Ich schreib es mal unter Hardware obwohl es auch evtl. ein Softwareproblem ist.
Problem ist die serielle Kommunikation über die normale COM-Schnitstelle und ein Max232 mit einem Microcontroller. Über den Bootstrapmode möchte ich auf das jeweilige interne oder externe Flash der MCU zugreifen. Das klappt auch soweit allerdings kommt es ständig zu Verbindungsabbrüchen der RS232 Kommunikation. Genutzt werden verschiedene Programme wie der Flasher von ST oder Phytec oder Flashit. Das Problem tritt bei allen Programmen mehr oder minder stark auf, beim ST10 Flasher funktioniert es halbwegs wenn ich eine ältere Version nutze. Was allerdings besonders merkwürdig ist, daß das Verhalten mit steigender Baudrate besser wird, bei niedrigen Baudraten bricht er fast direkt nach dem Start ab. Ich schaffe es aber mit dem Fehler nicht wenigstens den kpl. Sektor eines Flashs zu schreiben, daher wäre Abhilfe nötig.
Alle Einstellungen des Comports am PC habe ich schon durch (verschiedene Baudraten, mit / ohne FIFO - alles kein Unterschied)
Ich habe es auch mit einem anderen Rechner probiert, gleiches Problem-es wird jeweils eine "richtige" RS232 Schnittstelle am PC genutzt-kein USB-RS232 Wandler, daran kann es also nicht liegen. Sollte jemand mit der Problematik Erfahrung haben wäre ich für kurze Info dankbar.
Gruß
Andy
Problem serielle Komm. RS232
-
-
unter welchem Betriebssystem läuft das ganze ?
ich hatte mal den Fall, dass unter XP Kommunikation abbrach wegen CPU-Powermanagement;
Testen kann man das, indem man die CPU beschäftigt, so dass die nicht in C2 bzw. C3 geht
Gruß
Chips -
Hallo,
Einmal probiert mit Win98 SE, anderer Rechner mit XP , so schnell kann die CPU gar nicht wegschalten, das läuft max. 10-20sec. bis zum Abbruch.
Danke+Gruß
Andy -
Hallo Andy,
Hast Du den Quarz des MC mal gewechselt oder die Frequenz gemessen?
Gruß Uwe
-
nein, bisher nicht, sind wohl 20MHz sollte eigentlich damit gehen.
-
Kommt auf den MC an, wenn der Takt für die RS232 vom Prozessortakt abhängig ist, könnte eine Abweichung solche Verbindungsabbrüche bewirken.
-
durchaus richtig, werde wohl mal den Quarz noch tauschen,leider gibt es von dem Proz. kein Datenblatt (80C167)
Gruß
Andy -
Die Datenblätter auf der Infineon Seite willst du nicht?
6,144MHz x 2 oder 4 ist eine gute Variante. Aber auch bei 20MHz sollte der Fehler eigentlich klein genug sein. Zumindest bei niedrigeren Baudraten -
Table 11-2 ASC0 Asynchronous Baudrate Generation for fCPU = 20 MHz
Baud Rate S0BRS = ‘0’ S0BRS = ‘1’
Deviation Error Reload Value Deviation Error Reload Value
625 KBaud ± 0.0% 0000H – –
19.2 KBaud + 1.7%/ – 1.4% 001FH/0020H + 3.3%/ – 1.4% 0014H/0015H
9600 Baud + 0.2%/ – 1.4% 0040H/0041H + 1.0%/ – 1.4% 002AH/002BH
4800 Baud + 0.2%/ – 0.6% 0081H/0082H + 1.0%/ – 0.2% 0055H/0056H
2400 Baud + 0.2%/ – 0.2% 0103H/0104H + 0.4%/ – 0.2% 00ACH/00ADH
1200 Baud + 0.2%/ – 0.4% 0207H/0208H + 0.1%/ – 0.2% 015AH/015BH
600 Baud + 0.1%/ – 0.0% 0410H/0411H + 0.1%/ – 0.1% 02B5H/02B6H
75 Baud + 1.7% 1FFFH + 0.0%/ – 0.0% 15B2H/15B3H
50 Baud – – + 1.7% 1FFFH -
Uups-Danke, habe ich da was bei Infineon übersehen? Danke für die Infos, werde mal sehen ob es mit einem "passenden" Quarz besser geht.
Gruß
Andy -
Andy, Du hattest PM...
-
ja, ist angekommen, vielen Dank
-
so mal nachgemessen: Quarz schwingt bei 4,608MHz, Systemtakt 4,608x4
Das ergibt bei 28800 und 57600 Baud keinen Fehler-Problem sollte daher woanders zu suchen sein.Schade. -
Gibt es bei der Datenübertragung soetwas wie Handshake oder Protokoll?
-
Die Flasher die ich kenne benutzen kein Handshake, nur RXD, TXD (Pin2, 3 und GND 5). Die Handshakeleitungen werden oft für RESET und BootStrapLoaderMode mißbraucht. Aber soweit geht's ja offensichtlich schon.
Ich würde für den Anfang eher Baudraten <38400 probieren. Möglicherweise hast du aber auch ein IRQ Problem in deinem PC. Wenn du die COM1 verwendest, sollte diese den IRQ4 _alleine_ haben. Also kein anderes Gerät darf diesen benutzen. Ev. im Bios im PNP/PCI setup IRQ4 als 'used by legacy device' setzen und versichern, daß diesen wirklich kein anderer benutzt.
-
Zitat
Original von Rafiki
Möglicherweise hast du aber auch ein IRQ Problem in deinem PC.unwarscheinlich:
ZitatOriginal von Andy72
Ich habe es auch mit einem anderen Rechner probiert, gleiches Problem-es wird jeweils eine "richtige" RS232 Schnittstelle am PC genutzt-kein USB-RS232 Wandler, daran kann es also nicht liegen.Gruß Uwe
-
Miss mal die Bitzeiten auf PC/Target-Seite.
Ich vermute mal, dass der Baudratendivisor auf µC-Seite für einen
anderen Takt gilt, bei geringem Divisor matcht der Fehler die
Abweichung (wenn auch etwas unwahrscheinlich).