Forum: Mikrocontroller und Digitale Elektronik Software Uart in Bascom mit ATTiny13 macht Probleme


von Michael N. (lwl2012)


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

von Karl H. (kbuchegg)


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.

von Michael N. (lwl2012)


Lesenswert?

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?

Oder würden schon Z-Dioden reichen? mit 4,7 V hätte ich welche hier.

Michael

von Karl H. (kbuchegg)


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.

von Michael N. (lwl2012)


Lesenswert?

Ja gut, sobald dann meine Bestellung mit den Max232 hier ankommen werde 
ich es mal testen.

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

Michael

von Holgi (Gast)


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??

von Karl (Gast)


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/

von Karl (Gast)


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...

von Michael N. (lwl2012)


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.

von Karl (Gast)


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.

von Michael N. (lwl2012)


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

von ich (Gast)


Lesenswert?

Michael N. schrieb:
> wissen ist macht

Nix wissen macht auch nix!

Spass beiseite:
Natürlich benutzt man vorrangig die nachgerüsteten COMs. Wer will sich 
schon sein Motherboard zerschiessen?

von Michael N. (lwl2012)


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

von ich (Gast)


Lesenswert?


von Michael N. (lwl2012)


Lesenswert?

Danke, und jap das Hilft, aber da bleibt der Gedanke ja, weil ja pin 
7+8, sowie pin 9+10 Frei sind und die ja nur als T2 bzw R2 bezeichnet 
wurden. T1 und R1 wurden ja verwendet.

Weil wenns so wäre könnte man ja dann 2 Controller an einen µC nehmen. 
oder?


Also habe mir dies raus gepickt:

http://sodoityourself.com/wp-content/uploads/2007/02/circuit_232.jpg



Michael

von Karl H. (kbuchegg)


Lesenswert?

Michael N. schrieb:

> Weil wenns so wäre könnte man ja dann 2 Controller an einen µC nehmen.
> oder?

könnte man.

Aber wann hat man schon auf 1 Platine.

(der MAX hat deswegen 2 getrennte Hin und Retour Kanäle, damit man auch 
Hardwareflusssteuerung darübr routen kann (RTS/CTS)

von Michael N. (lwl2012)


Lesenswert?

Ja gut, die Leitung zwischen Max232 und dem Controller sollten die 
möglichst kurz sein?


Michael

von Michael N. (lwl2012)


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

von Hannelore (Gast)


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

von Marion Balke (Gast)


Lesenswert?

Michael N. schrieb:
> Den Max232 haben sicher schon einige von euch verwendet?

Früher mal. Wie Karl schon weiter oben schrieb ist in der Gegenwart der 
FTDI angesagt.

von Michael N. (lwl2012)


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

von Hannelore (Gast)


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

von Michael N. (lwl2012)


Lesenswert?

Werde ich machen, aber ist Luna schneller?


Aber werde es testen, sobald ichs schaffe. Obs am We klappt weiß ich 
nicht.

Melde mich aber dann.


Michael

von Hannes L. (hannes)


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.

...

von Michael N. (lwl2012)


Lesenswert?

Ne dann muss ich das noch mal genau Prüfen, wie der genau getaktet ist. 
Und eine Externe Taktquelle benutze ich nicht, sowas kann meines wissens 
der Attiny 13 überhaupt nicht.


Michael

von Hannes L. (hannes)


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.

...

von Markus W. (Firma: guloshop.de) (m-w)


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.

von Hannes L. (hannes)


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...

...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.