Assembler Serielle IO

wer

Neues Mitglied
02. Juli 2012
485
0
0
Sprachen
  1. Assembler
Hallo,

ich erstelle hier mal ein neues Thema. Hintergrund ist aber die Situation hier.

Ich habe meinen alten (funktionierenden) ATmega1284P, im STK500 programmiert,in meine Zielschaltung eingesetzt. Er funktioniert dort prinzipiell.

Aber es gibt ein kleines Problem. Eigentlich macht das Testprogramm im STK500 folgendes:

Es wird eine Zahl 0 <= x < 32 erwartet, dreistellig, mit führenden Nullen, keine andere Terminierung. Also z.B. '017'.
Es wird die selbe Zahl als Echo zurückgeliefert, vierstellig, ohne führende Nullen, dagegen mit Leerzeichen und abschließendem CRLF.
Also z.B. ' 17\r\n' (0x20 0x20 0x31 0x37 0x0d 0x0a).

In meiner Zielschaltung bekomme ich als Echo exakt die Eingabe wieder, also mit drei führenden Nullen und ohne CRLF.
Bei einer Eingabe >=32 sollte eigentlich der Text 'error\r\n' zurückkommen. Ich bekomme aber hier auch nur das Echo z.B. '032'.

Ich habe nur die PINs 2 und 3 an meinem seriellen Anschluß angelötet.

Wolfgang

PS Sagt mal, geht es Euch auch so, daß grundsätzlich erst mal nichts läuft?
 
Hier mal meine Schaltung:

Bild 2.jpg

Die Brücke von Pin 7 nach Pin8 hab ich nicht.

Wolfgang
 
Es ist viel schlimmer!
Das ganze läuft genau so, wenn ich den MC ausbaue. D.h. der MAX232 generiert das Echo alleine.

Wolfgang
 
Der MC lief im STK500 einwandfrei, auch nach dem oben beschriebenen Einsatz in meiner Zielschaltung.

Allerdings wollte ich jetzt nur zusätzlich über PC3 eine LED einschalten, damit ich später in meiner Zielschaltung sehe, daß der MC läuft.

Code:
	ldi	temp1,0x08
	out	DDRC, temp1
	out	PORTC, temp1

Das Flashen verlief ohne Fehler. Aber jetzt läuft nichts mehr. LED leuchtet nicht. Über die serielle Schnittstelle kommt nur noch Müll.

Ist der jetzt auch hin?

Wolfgang

Edit: JTAG ausgeschaltet! Jetzt leuchtet zumindest die LED.
 
Hi,

Sicher, daß das Echo nicht bereits durch das Terminlaprogramm erzeugt wird?
im Terminal "lokales Echo" abschalten. Handshaking auch ausschalten. Also Xon/Xoff Softwarehandshaking und DSR/DTR bzw RTS/CTS Hardwarehandshaking ausschalten. Dann sollte alles sauber zusammen laufen wenn die ...
- Baudrate
- Bitanzahl
- Parität
- Stopbits
... stimmen.
Standardwert der gerne verwendet wird ist 9600 Bit/s, 8 Datenbit, keine Parität (n) und 1 Stopbit.

Gruß
Dino
 
Ich muß ja wohl damit rechnen, daß es den Maxe auch zerlegt hat, oder?

Gruß, Wolfgang
 
Ja genau...:p

Nee, im Ernst:
da der Max scheinbar das Echo selbst generiert, wäre die Versuchsschaltung der Wandler selbst, lediglich mit seinen Kapazitäten für die Ladungspumpen (und die Stromversorgung). Dann würde ich folgendes mit dem Multimeter messen.
  1. Pin2 (V+) gegen Pin15 (Gnd) -> sollte ca. 10V sein
  2. Pin6 (V-) gegen Pin15 (Gnd) -> sollte ca. -10V sein
  3. Pin11 (T1IN) und Pin10 (T2IN) gegen Pin15 (Gnd) messen (sollten beide bei Vcc=5V=high liegen)
  4. Pin14 (T1OUT) und Pin7 (T2OUT) gegen Gnd -> sollten beide -10V haben
  5. Pin13 (R1IN) und Pin8 (R2IN) sollten 0V gegen Gnd haben (Hmm... was liegt da dann eigentlich auf den TTL-Outputs?)
    so, jetzt geht's los:
  6. Pin13 und Pin8 auf'n festen RS232-Pegel legen, meinetwegen erstmal +10V (Pin2) -> Pin12 und 9 müssen dann Gnd haben, egal welcher TTL-Pegel bei Pin10/11 anliegt
  7. jetzt dasselbe mit -10V (Pin6)-> entsprechend müssen Pin 12/9 jetzt auf 5V wechseln
  8. zum Schluß kannst Du nochmal alle Treiber verketten (also zB T2OUT--R2IN, R2OUT--T2IN, T1OUT--R1IN), und am Anfang (hier T2IN) mit dem TTL-Pegel spielen, und an allen Stellen der Kette (bis R1OUT) auf die zu erwartenden Pegel (gegen Gnd) prüfen
 
Ich hab mal versucht das nachzuvollziehen. Allerdings klappt das schon im Ansatz nicht. Manchmal(!) hab ich keine Spannung am MAX232, manchmal ist alles gut und manchmal sackt die Spannung langsam ab (etwa 0,2V/s).
Hab den Elko über den Pins 15 und 16 ausgelötet und überprüft. Aber er hat brav sein 1µF. Habe dann einen Widerstand von 126 Ohm zwischen Pin 15 und Pin 16 gemessen. Hab danach die gesamte Spannungsversorgung direkt am Ausgang der LM2678-Schaltung aufgetrennt und dort gemessen. Dort hab ich auch 126 Ohm, wenn ich anders rum messe hab ich zunächst einen unendlichen Widerstand, dann sackt das ab auf 9,9k.

Hab das gleiche noch mal bei meiner kleinen Stromversorgung probiert. Dort hab ich 138 Ohm oder 10,1k je nach dem wie rum ich messe.

Das ganze wirkt richtig gespenstig auf mich.

Gruß, Wolfgang
 
Nein, ich meinte, Du sollst nur die Spannungen messen. Von Widerständen hatte ich nichts geschrieben. Und den MAX an 'ne saubere, stabile Spannungsquelle hängen (meinetwegen auch'ne Flachbatterie).
Wenn Du das Oszilloskop nutzen kannst, und bis hier alles stimmt, kannst Du ja den MAX auch mit echten seriellen Daten versorgen, und mit dem Osci verfolgen, an welchen Ausgängen was rauskommt (signaltechnisch).

Nachtrag: der MAX232 hat für Vcc auch 6V als Absolute Maximum Rating
Hmm... strenggenommen darf auf TIN auch höchstens (Vcc-0,3V) gelegt werden
 
Noch ein Versuch mit 2 Messgeräten.

Spannung V1 zwischen Pin15 und Pin16 und Spannung V2 zwischen Pin15 und GND. Der Kondensator hängt zwischen Pin15 und Pin16

Wenn ich V2 alleine messe, dann habe ich eine Spannung, die desto höher ist, desto länger ich die Versorgungsspannung abgeschaltet habe.
Z.B. V2 = 2V. Danach sinkt die Spannung langsam ab.

Wenn ich mit einem zusätzlichen Messgerät auch V1 messe, dann steigt V2 bei der Messung, während V1 sinkt.
V1 + V2 ~ 5V.

Beispiel:
V1 = 3,394V und V2 = 1,577V (Summe = 4,971V)

ein wenig später

V1 = 2,776V und V2 = 2,182V (Summe = 4,958V)

Könnte mir bitte jemand dieses Verhalten erklären?

Gruß, Wolfgang
 
Pin15 IST doch Gnd, SOLLTE direkt mit Gnd verbunden sein.
Spannungsdifferenz 0V.

Was befindet sich denn da zwischen den beiden Punkten die Du mit den Messspitzen berührst?
Nur 'ne Leiterbahn mit wieviel Ohm?
 
Pin15 IST doch Gnd, SOLLTE direkt mit Gnd verbunden sein.
Spannungsdifferenz 0V.

Was befindet sich denn da zwischen den beiden Punkten die Du mit den Messspitzen berührst?
Nur 'ne Leiterbahn mit wieviel Ohm?
Danke! Das war hilfreich. Die GND-Verbindung war unterbrochen.

Jetzt zu den Werten am Max232:

Pin02 - Pin15 : 9,65V
Pin06 - Pin15 : -9,48V
Pin11 - Pin15 : 1,62V (zappelt ein bischen)
Pin12 - Pin15 : 4,98V
Pin13 - Pin15 : 0,0014V
Pin14 -Pin15 : -9,48V

Die Pins 10,9,8,7 sind nicht angeschlossen.

Pin03 - Pin02 gebrückt : 0V an Pin12
Pin03 - Pin05 gebrückt : 4,98V an Pin12

Gruß, Wolfgang
 
...
Pin02 - Pin15 : 9,65V
Pin06 - Pin15 : -9,48V
Pin11 - Pin15 : 1,62V (zappelt ein bischen)
Pin12 - Pin15 : 4,98V
Pin13 - Pin15 : 0,0014V
Pin14 -Pin15 : -9,48V
...
Stimmt soweit, bis auf Pin11, der paßt nicht
...
Die Pins 10,9,8,7 sind nicht angeschlossen.
...
kannst Du die trotzdem nochmal entsprechend meiner Liste da oben messen?
Das 2te Kanal-Paar hattest Du also nie mit Deinem Regler im Betrieb?
...
Pin03 - Pin02 gebrückt : 0V an Pin12
Pin03 - Pin05 gebrückt : 4,98V an Pin12
...
??? Autsch... das war nicht verlangt...

Du solltest +/-12V (also Pin2 bzw 6) auf die RS232-Eingänge legen Pin13 (und Pin8) (ich rufe vorsichtshalber Nacheinander!!!), und die Reaktion an den TTL-Ausgängen (12 bzw 9) überprüfen.

Mann könnte bei abgeschalteter Spannungsversorgung erstmal noch die internen Pullups/-downs versuchsweise nachmessen (auch wenn Dino nicht soviel davon hält)
Also Widerstandsmessung (diesmal):
Pin16(Vcc) gegen Pin11(T1IN) -> erwartet sind 400kOhm (ich vermute hier einen Fehler)
Pin16(Vcc) gegen Pin12(T2IN) -> auch 400kOhm
Pin15 (Gnd) gegen Pin13 (R1IN) -> 5kOhm
Pin15 (Gnd) gegen Pin8 (R2IN) -> 5kOhm

Danach könnte man dann das zu erwartende Schaltverhalten nachprüfen...
zumindest der T1-Kanal scheint was weg zu haben...
 
Das 2te Kanal-Paar hattest Du also nie mit Deinem Regler im Betrieb?
Richtig
Zitat von wer
...
Pin03 - Pin02 gebrückt : 0V an Pin12
Pin03 - Pin05 gebrückt : 4,98V an Pin12
...
??? Autsch... das war nicht verlangt...
Sorry! Da hab ich mich wohl vertan. Ich meinte mit Pin3 den 3. Pin des D-Sub-Steckers, also Pin13 am Maxe.

Wolfgang

Edit: Aber Pin5 hätte Pin6 sein sollen. Ich bin wohl so langsam neben der Spur!
 
Wenn Du entsprechend dem anderen Thread eh bestellst, gönn Dir einfach'n neuen MAX232.
Ich hatte mir irgendwann auch mal 'n 10er Tape davon geholt... der erste allerdings ist aus'm HP Deskjet 550c ausgelötet
(der CWE läuft mit 100nF-Kaapazitäten;))
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)