Software Uart in Bascom mit ATTiny13 macht Probleme

OP #2672513
Lesenswert?

Hey Leute,

ich habe vor aus einem bei Spiel aus nem Buch eine Softwarelösung für ne 
UART Schnittstelle zu realisieren, da der Tiny13 ja keine Schnittstelle 
hat.

Die Schnittstelle ist direket nur über je 1 Widerstand mit der RS232 
Schnittstelle verbunden (TXD = 100k ; RXD = 1k).

Der Code ist folgender:

1
$regfile = "attiny13.dat"
2
$crystal = 4000000
3
$hwstack = 32
4
$swstack = 4
5
$framesize = 4
6

7
Dim I As Bit
8

9
Open "comb.3:9600,8,n,1,INVERTED" For Output As #2
10

11
Config Portb.2 = Output
12

13
Do
14

15
Print #2 , "Test"
16

17
If I = 1 Then
18
   Portb.2 = 1
19
   I = 0
20
Elseif I = 0 Then
21
   Portb.2 = 0
22
   I = 1
23
End If
24

25
Waitms 500
26
Loop
27

28
End

Das Problem, was sich hier gibt ist, er Zeit in Putty, welches ich als 
Terminal Client nutze. Dort Zeigt er mir lediglich irgendwelche Zeichen 
und gibt übern Lautsprecher nur ein kleines Geräusch aus dem 
Computerlautsprecher.

Danke schon mal für Eure Hilfe.

Michael
#2672522
Lesenswert?

Michael N. schrieb:
> Hey Leute,
>
> ich habe vor aus einem bei Spiel aus nem Buch eine Softwarelösung für ne
> UART Schnittstelle zu realisieren, da der Tiny13 ja keine Schnittstelle
> hat.
>
> Die Schnittstelle ist direket nur über je 1 Widerstand mit der RS232
> Schnittstelle verbunden (TXD = 100k ; RXD = 1k).

Ähm.
RS232 hat definierte Pegel. +12V und -12V.
Solange die Gegenstelle nicht eine sog. TTL-RS232 bereitstellt (bei der 
die Pegel 0 und 5V sind und auch die Polarität umgedreht ist), wirst du 
mit deinen Widerständen da nix reißen.

Und nein. Ein PC hat keine TTL-UART sondern eine ganz normale +-12V 
UART.
#2672531
Lesenswert?

Michael N. schrieb:
> Ja gut, wurde in dem Buch "Basiskurs - Bascom AVR" so beschrieben und
> ich dachte da ich wäre nur dämlich. Aber mit dem Baustein "Max232" kann
> man damit dann Arbeiten bei einer SoftwareUart?

Ja.

Ich muss mich allerdings trotzdem selbst an der Nase nehmen. Ich hab 
hier

Open "comb.3:9600,8,n,1,INVERTED"

das INVERTED überlesen.


Trotzdem ist es fraglich ob eine 12V UART mit den Pegeln einer TTL-UART 
klarkommt. Ein MAX232 zur Pegelanpassung ist auf jeden Fall die 
sicherere Option.
Gast #2672595
Lesenswert?

Michael N. schrieb:
> Ja gut, sobald dann meine Bestellung mit den Max232 hier ankommen werde
> ich es mal testen.

Bin gespannt und überlege selber, ob ich das mit einem MAX232 mache.
Jetzt hab ich aber gelesen, dass der MAX233 bequemer ist, weil man da 
Kondensatoren spart. Aber egal wie, beide Käfer gibt es in verschiedenen 
Ausführungen: CPP, ACPP, CPE, ACPE, EEPE, ECPE...

Welchen nimmt man da??
Gast #2672600
Lesenswert?

Michael N. schrieb:
> Nur es kommt was aus dem Tiny raus, nur eben nicht der gewünschte Text
> sondern so komische Zeichenfolge.

Es kann sein, dass die Geschwindigkeit der Übertragung nicht stimmt. 
Unabhängig von dem, was im Programm steht, kannst Du die 
Übertragungsgeschwindigkeit im Terminalprogramm etwas nach oben oder 
unten setzen und sehen, ob Du etwas sinnvolles empfängst.

Das hier ist ganz nett:

http://www.der-hammer.info/terminal/
Gast #2672601
Lesenswert?

Holgi schrieb:
> Bin gespannt und überlege selber, ob ich das mit einem MAX232 mache.
> Jetzt hab ich aber gelesen, dass der MAX233 bequemer ist, weil man da
> Kondensatoren spart. Aber egal wie, beide Käfer gibt es in verschiedenen
> Ausführungen: CPP, ACPP, CPE, ACPE, EEPE, ECPE...

Meine persönliche Meinung dazu ist, weg vom MAX hin zu FTDI. Wenn man 
noch eine echte serielle Schnittelle hat, kann man auch den MAX nehmen, 
bloß wie lange noch...
OP #2672606
Lesenswert?

Ich habe mir im 5er Pack den Max232CP bestellt.

Denke für einfache Anwendungen im Hobbybereich dürfte die genauere 
Typenauswahl nicht ganz soooo wichtig sein.

Und als Terminalprogramm benutze ich momentan Putty. Aber werde es mal 
versuchen die Baud Rate deutlich zu reduzieren. Vielleicht mal auf 1/10 
setzen. Einfach mal Testen.


Michael

PS: Ich habe ein eigenen alten PC für meine Bastelprojekte und der hat 
sogar 4 Serielle Ports und in der Industrie wird die 
Serielleschnittstelle ja immer noch ständig benutzt. Und notfalls kauft 
man sich für paar Euro eine Erweiterungskarte für Serielleschnittstelle.
Gast #2672621
Lesenswert?

Michael N. schrieb:
> Und notfalls kauft
> man sich für paar Euro eine Erweiterungskarte für Serielleschnittstelle.

Da hast Du schon recht. Man wird sich aber halt immer etwas dazu kaufen 
müssen. Bei einem Notebook ohne passenden Anschluss kaufst Du Dir dann 
einen Adapter, wo letztendlich genau die Hardware verbaut ist, die Du 
beim Projekt ausgespart hast.

Ich will Dir das jetzt nicht madig machen. Wenn Dein Rechner die 
Schnittstelle hat, dann ist der MAX232 sinnvoll.
OP #2672629
Lesenswert?

Jap.

Normal hatte der PC 2 Anschlüße gehabt, habe aber noch 2 erweitert. 
Hatte es sogar schon mal in Verwendung.

2 Stück sind mit Pollinboard verbunden.

Und 1en für mein eigenes Programmiergerät für den ATTiny 13 und den 4ten 
hatte ich mit der Software Schnittstelle vom ATTiny13 verbunden.

Hoffe ich bekomme es irgendwie zum laufen, auch wenn es nicht die 
Ideallösung ist, aber z.B. der Attiny13 hat ja kein Hardware Uard und 
wissen ist macht hab ich gehört, falls man mal sonst in solchen 
Situation kommt.



Michael
OP #2672646
Lesenswert?

Soweit ich weiß sind die COM Ports doch "kurzschlußfest" also so schnell 
sollte da nix passieren.

Den Max232 haben sicher schon einige von euch verwendet? Kann mir jemand 
kurz nen Tipp geben Wo die Datenleitung des Ports hin kommen und wo dann 
die Ausgänge zum µC?

Weil die haben ja 2 T in  out und 2 R in  out, ich vermute die werden 
die passenden Anschlüsse sein? Und in dem Fall könnte man 2 µC an 1 Max 
232 packen? Also das er für 2 unabhängig voneinanderarbeitenden 
Controller 1 Max232 genutzt werden kann?

Hoffe dies wirkt nicht nach einer dummen Frage verschämt grinsen


Michael
OP #2672732
Lesenswert?

Also, dass der µC zum Datenlogger genutzt wird und die Schnittstelle 
Extern dann liegen würde und über ein 2 Poligen Stecker mit der 
Schaltung verbunden wird. der Max232 würde im Stecker bzw im 
Datenlesegerät sitzen oder wären dann die Leitungen dafür zu lang? Bzw. 
ist der Max232 dafür zu günstig, dass man sich ein Art 
Kommunikationsgerät baut?

Hoffe es ist verständlich was ich meine?


Michael
Gast #2672899
Lesenswert?

Michael N. schrieb:
> Das Problem, was sich hier gibt ist, er Zeit in Putty, welches ich als
> Terminal Client nutze. Dort Zeigt er mir lediglich irgendwelche Zeichen
> und gibt übern Lautsprecher nur ein kleines Geräusch aus dem
> Computerlautsprecher.

hast du schonmal gegengeprüft mit einem Soft-uart einer anderen Sprache? 
So könntest du herausfinden ob es an der Software liegt. Auf der Seite 
von lunaavr gibts ein Terminal mit soft-uart und der attiny13 wird wohl 
auch unterstützt. Ist ja schnell kompiliert.

http://avr.myluna.de/doku.php?id=de:softuart.luna

Grüße aus Potsdam,
Hannelore
OP #2672906
Lesenswert?

Ne bislang habe ich nur Bascom genommen. Weil an sich fing ich damit an 
und wollte auch so an sich erstmal bei bleiben, aber testen könnte ichs 
ja auch mal.

Brauche ja nur nen Compiler für diese Version. ist Luma die Sprache? Sry 
der Dummen Frage wegen.

Eine Frage, Bringt Luna Vorteile? Ist das schneller oder so? Habs nun 
gesehen, dass es eine Programmiersprache ist.



Michael
Gast #2672912
Lesenswert?

Michael N. schrieb:
> Ne bislang habe ich nur Bascom genommen. Weil an sich fing ich damit an
> und wollte auch so an sich erstmal bei bleiben, aber testen könnte ichs
> ja auch mal.
>
> Brauche ja nur nen Compiler für diese Version. ist Luma die Sprache? Sry
> der Dummen Frage wegen.
>
>
>
> Michael

Die Sprache ist auch sowas ähnliches wie bascom, halt nur moderner und 
etwas komplexer. Ist aber auch gleich, soll ja nur zum testen sein. Du 
lädtst einfach die neueste Version, da ist alles drin. Einfach 
softuart.luna aus dem Ordner Examples einladen, oben auf attiny13 
ändern, die Port-Pins anpassen und compilieren. Wenn du dich damit nicht 
weiter beschäftigen willst, brauchste da auch nichts an der ide irgendwo 
einstellen. das erzeugte hex-file brennste dann einfach in den 
controller und schaust ob die Zeichen stimmen.

Gruß, Hannelore
#2673008
Lesenswert?

Michael N. schrieb:
> Der Code ist folgender:
>
> $regfile = "attiny13.dat"
> $crystal = 4000000

Wie sagst Du dem Tiny13, dass er mit 4,000 MHz takten soll??
Benutzt Du dazu eine externe Taktquelle?

Denn:

Der RC-Oszillator des Tiny13 klappert ab Werk mit 9,6 MHz, der 
System-Taktvorteiler ist per Fuse auf 1:8 voreingestellt, somit arbeiten 
CPU und Timer des Tiny13 mit 1,2 MHz.

UART ist sehr zeitkritisch, da sollte der angegebene Takt schon dem 
tatsächlich vorhandenem Takt entsprechen.

...
#2674014
Lesenswert?

Michael N. schrieb:
> Und eine Externe Taktquelle benutze ich nicht, sowas kann meines wissens
> der Attiny 13 überhaupt nicht.

Aber sicher kann er das, siehe Datenblatt, Tabelle 6-1.
Aber mit 4,000 MHz (intern) kann der Tiny13 nicht laufen, somit kann 
Dein Programm aufgrund der falschen Crystal-Angabe nicht funktionieren, 
auch wenn sonst alles richtig sein sollte. Allerdings solltest Du von 
UART ohne Quarz nicht allzuviel erwarten, UART ist recht zeitkritisch, 
funktioniert zwar oft mit der bescheidenen Konstanz des Internen 
RC-Oszillators, muss aber nicht funktionieren.

...
(Firma: guloshop.de) #2674032
Lesenswert?

Hannes Lux schrieb:
> Aber sicher kann er das, siehe Datenblatt, Tabelle 6-1.
> Aber mit 4,000 MHz (intern) kann der Tiny13 nicht laufen, somit kann
> Dein Programm aufgrund der falschen Crystal-Angabe nicht funktionieren,
> auch wenn sonst alles richtig sein sollte. Allerdings solltest Du von
> UART ohne Quarz nicht allzuviel erwarten, UART ist recht zeitkritisch,
> funktioniert zwar oft mit der bescheidenen Konstanz des Internen
> RC-Oszillators, muss aber nicht funktionieren.

Völlig richtig. Wenn der interne Oszillator verwendet werden soll, dann 
muss man die Anzahl der Bits je Wort auf ca. 4 reduzieren. Sofern das 
aus irgendeinem Grund nicht möglich ist, sendet man 8 Bits, nutzt jedoch 
nur die ersten 4, weil die letzten 4 nicht mehr verlässlich sind.
#2674230
Lesenswert?

Markus W. schrieb:
> nutzt jedoch
> nur die ersten 4, weil die letzten 4 nicht mehr verlässlich sind.

Richtig, aber dazu müsste man erstmal verstehen, wie UART funktioniert. 
Dazu reicht es nicht, einfach nur ein unvestandenes Stück Code aus der 
vorhandenen Lib zu benutzen. Es schadet nicht, etwas Hintergrundwissen 
zu haben, auch nicht, wenn man Bascom benutzt...

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren