PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 Datenmüll bei tiny2313



EDatabaseError
12.04.2007, 13:33
$crystal = 16000000

$regfile = "ATtiny2313.DAT"
$baud = 9600


Config Timer1 = Timer , Prescale = 256
On Timer1 Timer1_irq

Const Timervorgabe = 3036

Enable Timer1
Enable Interrupts

Config Portd.3 = Output 'LED red
Ledred Alias Portd.3
Config Portd.4 = Output 'LED yellow
Ledyellow Alias Portd.4
Config Portd.5 = Output 'LED green
Ledgreen Alias Portd.5

Do
Print "HALLO"

Waitms 400
Loop

End


Timer1_irq:
Timer1 = Timervorgabe
Toggle Ledred
Return



Ich sende so ständig ein HALLO

am PC bekomme ich aber nur müll (irgentwelche ascii zeichen)

Baudraten stimmen (9600)


Wo könnte sich noch ein Fehler eingeschlichen haben?

gomaman
12.04.2007, 14:49
Läuft der Tiny auch mit 16MHz, oder mit internen 8MHz? D.h. sind dur Fuses richtig gesetzt?

gomaman

EDatabaseError
12.04.2007, 14:53
das hatten wir schon (anderer Post)

16 MHz stimmen.

gomaman
12.04.2007, 15:37
Entschuldige bitte die Frage. Den anderen Thread hab ich mir angesehen, ist der Teiler auch ausgeschaltet?

EDatabaseError
12.04.2007, 16:39
Jap. Die Fuses stimmen alle. Teiler aus.

EDatabaseError
12.04.2007, 18:50
Kleines Update...

So sachen wie Print "." funktionieren...sobald es länger wird ist es müll.

Die Eingabe funktioniert auch nicht.


Mfg

gomaman
12.04.2007, 19:06
Schwingt der Quartz/Schwingkreis auch wirklich it 16MHz? Probier doch mal das ganze mit den internen 8MHz aus. Vielleicht liegt dort der Fehler.
Wenn ich dazu komme progge ich mal einen meiner Tinys. Dieser läuft aber nur mit 8MHz-Quartz.

gomaman

EDatabaseError
12.04.2007, 19:10
Ok ich geh auf internal 8 Mhz runter und meld mich nochmal

EDatabaseError
12.04.2007, 19:12
Was mich eben auch noch auffiel ist:

Ich kann alle prints wegkommentieren ABER sobald ich eine Taste drücke kommt immer noch eine Ausgabe von Müll??? Echo ist aus.

gomaman
12.04.2007, 19:15
Wenn ich das Progrämmchen anschaue ist es doch eigentlich völlig egal ob du eine Taste drückst oder nicht, die Daten die evtl. über die Schnittstelle zum Tiny gehen interessieren Letzteren doch überhaupt nicht.

Ist evtl. das Terminalprog. Müll?

EDatabaseError
12.04.2007, 19:16
$crystal = 8000000
$regfile = "ATtiny2313.DAT"
$baud = 9600
Echo Off

Config Timer1 = Timer , Prescale = 256
On Timer1 Timer1_irq
On Urxc Isr_data 'On Urxc

Const Timervorgabe = 3036

Enable Urxc
Enable Timer1
Enable Interrupts

Config Portd.3 = Output 'LED red
Ledred Alias Portd.3
Config Portd.4 = Output 'LED yellow
Ledyellow Alias Portd.4
Config Portd.5 = Output 'LED green
Ledgreen Alias Portd.5

Dim B As Byte 'Buffer
Dim S As String * 5 'Buffer

Do
Toggle Ledgreen

If Ucase(s) = "PROG" Then
Print "entering programm mode"
End If

S = ""

Wait 2
Loop

End


Timer1_irq:
Timer1 = Timervorgabe
Toggle Ledred
Return

Isr_data:
Toggle Ledyellow
B = Udr
S = S + Chr(b)
Return


Aktueller Source...


Egal was ich drücke er antwortet sofort mit "Müll"

das Terminal ist ok...habe es mit einem anderen PC getestet,

Mfg

EDatabaseError
13.04.2007, 11:49
Biiittte wergft irgentwelche Gründe in den Raum an was es liegen könnte.

Ich hab hier noch mal das Prog:

$crystal = 8000000
$regfile = "ATtiny2313.DAT"
$baud = 9600
Echo Off

Config Timer1 = Timer , Prescale = 256
On Timer1 Timer1_irq 'On Urxc

Const Timervorgabe = 3036

Enable Timer1
Enable Interrupts

Config Portd.3 = Output 'LED red
Ledred Alias Portd.3
Config Portd.4 = Output 'LED yellow
Ledyellow Alias Portd.4
Config Portd.5 = Output 'LED green
Ledgreen Alias Portd.5

Dim B As Byte 'Buffer
Dim S As String * 5 'Buffer

Do
B = Ischarwaiting()

If B = 1 Then
Input S
End If

Toggle Ledgreen

If Ucase(s) = "PROG" Then
Print "entering programm mode"
End If

S = ""

Wait 2
Loop

End


Timer1_irq:
Timer1 = Timervorgabe
Toggle Ledred
Return

Er sendet mir ständig wirre $08 zu. Auf die PROG abfrage reagiert er uch nicht.

Könnte es evtl. ein Hardwareproblem (treiber o. µC) sein

Mfg

EDatabaseError
13.04.2007, 12:29
UPDATE:


'004.BAS: UART-Empfänger ohne Interrupt
'Hardware: MAX232 an PD0/PD1, Nullmodemkabel zum PC
'---------------------------------------------------
$regfile = "tiny2313.dat" 'AT90S2313-Deklarationen
$crystal = 8000000 'Quarz: 3.6864 MHz
$baud = 9600 'Baudrate der UART: 9600 Baud

Dim i As Byte

Do
If Ucsra.7 = 1 Then 'Wenn Byte empfangen...
i = UDR 'Byte aus UART auslesen
Select Case i
Case "H"
Print "Hallo AVR"
Case "h"
Print "hallo avr"
Case Else
Print "Unbekannter Befehl"
End Select
End If

Waitms 200
Loop
End

Habe nun zum Spielen einfach mal diesen Code genommen.

ucsra.7 ist immer auf 1 obwohl ich dem Chip nichts sende!

Der String Unbekannter Befehl wird aber korrekt übertragen.

Das senden von "h" oder "H" wird aber nicht beachtet.

Rofo88
13.04.2007, 13:58
So funzt das bei mir


'004.BAS: UART-Empfänger ohne Interrupt
'Hardware: MAX232 an PD0/PD1, Nullmodemkabel zum PC
'---------------------------------------------------
$regfile = "ATtiny2313.dat" 'Tiny2313-Deklarationen
$crystal = 8000000 'Quarz: 8 MHz
$baud = 9600 'Baudrate der UART: 9600 Baud

Dim i As Byte


Do
If Usr.rxc = 1 Then 'Wenn Byte empfangen...
I = Udr 'Byte aus UART auslesen
Select Case I
Case "H"
Print "Hallo AVR"
Case "h"
Print "hallo avr"
Case Else
Print "Unbekannter Befehl"
End Select
End If

Waitms 200
Loop
End


MfG RoFo88

EDatabaseError
13.04.2007, 14:07
Bei mir nicht...ich bekomme ständig Unbekannter Befehl (Obwohl ich nichts in den Buffer sende)

gomaman
13.04.2007, 14:29
Was soll ich sagen, ich habe das Prog von gestern Abend (18.16Uhr) mal auf meien Tiny geladen, 8MHz interner Takt und Teiler ausgeschalten.
Das genze läuft auf dem Pollin-Boad.

Wenn ich nun mit AVR Terminal "prog" sende kommt als Antwort zurück "entering prog mode" (so habe ich es im Prog hinterlegt.) - bei mir funktioniert das.

Hier der Code:



$crystal = 8000000
$regfile = "ATtiny2313.DAT"
$baud = 9600

Config Timer1 = Timer , Prescale = 256
On Timer1 Timer1_irq
On Urxc Isr_data

Const Timervorgabe = 3036

Enable Urxc
Enable Timer1
Enable Interrupts

Config Portd.5 = Output
Config Portd.6 = Output
Led1 Alias Portd.5
Led2 Alias Portd.6

Dim B As Byte
Dim S As String * 5

Do
Toggle Led1

If Ucase(s) = "PROG" Then
Print "entering prog mode"
End If

S = ""

Wait 2

Loop

End


Timer1_irq:
Return

Isr_data:
Toggle Led2
B = Udr
S = S + Chr(b)
Return


Gruß
gomaman

EDatabaseError
13.04.2007, 14:36
Bei mir nicht ;-)

also Hardware - oder...

gomaman
13.04.2007, 14:41
Da das Programm ja funktioniert würde ich mal sagen JA. Hast Du irgendwelche Tauschteile?

Evtl. liegt auch ein Fehler in der Handhabung (glaube ich zwar nicht),. den Text (prog) sende ich mit AVR Terminal als Plain text. Ein nacheinander senden der Buchstaben funktioniert nicht (keinerlei Rückmeldung)

EDatabaseError
13.04.2007, 14:48
Ich habe es mit Docklight versucht. Negativ (ich habe eigentlich eine sehr große RS232 erfahrung deshalb war ich ja so verwundert)

Ich habe hier mal 2 Bilder von der Platine.

Ich habe beide ICs µc und max232 als ersatzteil hier. welchen soll ich zuerst ersetzen?

Mfg

gomaman
13.04.2007, 15:15
Da ich davon ausgehe dass die LED funktionieren und somit auch der Tiny, würde ich mit dem MAX232 anfangen.

EDatabaseError
13.04.2007, 15:23
Mach ich...dieses mal sockle ich ihn aber von unten ;-)

Mfg

EDatabaseError
13.04.2007, 17:47
Das mit den Sockeln wird von unten nücht *grml*

Ich hab den MAX232 (neu) einfach nochmal wie auf dem Bild eingelötet - fehlanzeige - ich werde immer noch mit unbekannter Befehl zugemüllt.

Ich löte nun den Tiny um.

EDatabaseError
13.04.2007, 18:07
Den Tiny getauscht .. :shock:

Immer noch das selbe Prob.

:cry:

Mir fallen keine Gründe mehr ein

gomaman
13.04.2007, 18:44
So auch die anderen Programme habe ich ausprobiert erst das abgeänderte Programm von Roland Walter welches Du in den Tiny gespielt hast (ucsra.7 - wollte mein Bascom nicht) dann das Originalprog von Roland mit (if USR.RXC =1 then), wie auch schon Rofo88 geschrieben hat.

Läuft.

Das einzige was ich gesehen habe ist die Größe der Kondensatoren am Max232, die aber eigentlich nicht so tragisch sein sollten. An meinem MAX232 von TI sin 10µF Kondensatoren dran.

Ansonsten weiß ich auch nicht mehr weiter, außer die gesamte Verdrahtung zu kontrollieren, was du aber sicher schon mehrfach gemacht hast.

EDatabaseError
13.04.2007, 18:48
Jap habe ich...

Kann ein Kondensator vllt. kapputgegangen sein (banale idee)

Ich hab 4u7 er verbaut (mache ich immer und es tut...eigentlich)

Ich geh nochmal alles durch :-( und nochmal :-(


Falls irgentjemanden irgentetwas, seie es so unvorstellbar wies nur geht, einfällt. Bitte postet es. *bettel*

Mfg

EDatabaseError
13.04.2007, 21:02
Sodele...ich glaub ich hab den Geist gefunden!

Ich habe mal mit dem Component tester des Oszis die Kondensatoren geprüft...

Der zwischen Pin4 und 5 des maxims zeigt ein auffälliges Muster. (Beinahe Kurzschluss)

Ich werde diesen morgen ersetzen.

Mfg

EDatabaseError
14.04.2007, 20:06
So siehts aus:

Der Kondensator war ok...aber der MAX232 (der neue) war auch Putt!!!

Noch nen neuen rein...immer noch ein Fehler!

Er müllt mich zwar nicht mehr mit Unbekannter Befehl zu...dafür kann ich nun eine Taste drücken (egal welche) und er sendet mir nur:
Unbek
zurück. Danach bricht er das senden ab.

Könnte das am Tiny liegen??? Oder sonst irgentwo noch ein kleines Teufelchen sitzen?

Mfg
Tobi

gomaman
14.04.2007, 20:24
So langsam stellst Du mich vor ein Rätsel.
Ich (ich betone ICH) würde mir das ganze nochmal komplett neu aufbauen (sieht schon etwas wild aus das Ganze).
Dass es am Tiny liegt glaube ich ehrlich gesagt nicht einmal. Üblicherweise gehen die Dinger oder gehen nicht aber was dazwischen ist eher selten (soll hier aber nicht ausgeschlossen werden).

gomaman

EDatabaseError
14.04.2007, 20:34
Ich messe jetzt noch mal ALLES durch und baue es dann nochmals auf :-(

Mfg

EDatabaseError
15.04.2007, 20:17
Ich hab das Ganze jetzt einen Kollegen aufbauen lassen...da der das aber nicht so frei Hand aus dem Schaltplan macht habe ich ihm ein Board generiert. (Vom eagle schaltplan)

Dann hat er das ganze gelötet. Als er fertig war schaute ich auf die Platine...beim MAX232 waren die Pins 15 und 16 belegt, welche im schaltplan nicht einmal erwhnt wurden!

Ich schaue verdutzt auf das Board...und da waren diese Pins mit +5V und GND verbunden! omg... :wall: Lauter schrei!!!!!!!!!!

Das war der verdammte Fehler!

-----------> und nu tuts :wall:

[warum sagt mir das niemand... ;-) ]

gomaman
15.04.2007, 20:41
Glückwunsch,

ich habe anhand der Bilder versucht die Leitungsführung der Signale zu verfolgen, aber auf die SPannungsversorgung des Max habe ich auch nicht geachtet, da ich die Spannungsversorgung bei Lochrasterprojekten immer als erstes verdrahte.

EDatabaseError
15.04.2007, 20:51
Aber warum ist das nicht im eagle schaltplan vermerkt :wall:

gomaman
15.04.2007, 20:56
Je nachdem wie das Bauteil in eagle hinterlegt ist sind die Versorgungsleitungen (VCC und GND) ausgeblendet, damit man bei größeren Plänen noch die Übersicht behalten kann.
Hat mich Anfangs auch gewundert, denn wenn kein VCC bzw. GND Potential definiert wird, werden die Verbindungen auf der Platine auch nicht gemacht. ](*,)
Ich habe auch schon versucht Bauteile mit versteckten Versorgungsanschlüssen zu erstellen, hat aber bei mir nicht funktioniert, also dann halt mit sichtbaren Anschlüssen.

Udo

EDatabaseError
15.04.2007, 21:07
Jeder muss einmal diese Erfahrung machen ;-) ... und ich hab sie nun...und dabei sind 4 MAX232 vernichtet worden :-(

ok...2 waren wirklich schrott *grml* billigzeug von reichelt