PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rx Interrupt beim attiny2313 ...



spatz2222
29.11.2005, 08:13
Hallo,

beim AT90S2313 habe ich das so gemacht und das hat auch funkt.


'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''
$baud = 4800

On Urxc Rs232_int

Enable Interrupts
Enable Urxc




Rs232_int:
Disable Urxc
.
.
.
Enable Urxc

Return

'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''
der attiny2313 hat doch auch einen usart oder ?
jedoch funkt. das ganze nicht beim ATtiny2313 ?!

wer weiß rat

vielen Dank


Gruß Tobias

Ratber
29.11.2005, 09:21
Les mal die Datenblätter an betreffender Stelle.

Der AT90S2313 hat einen "UART" und der Tiny2313 nur einen "USART"

spatz2222
29.11.2005, 12:09
tja leider kann ich nicht so gut Englisch ...

habe aber im Datenblatt des Attiny2313 folgendes auf Seite 43 gefunden:

Reset und Interrupt Vektor 0007 -> USART0 Rx Complete ... also muß das doch irgendwie funktionieren ...

klar wenn ich daran gedacht hätte hätte ich den etwas älteren AT90S2313 genommen - aber nun steht die Schaltung

Gruß Tobias

Bluesmash
29.11.2005, 12:15
Hallo

Was ist denn der Unterschied zwischen USART und UART?

gruss Bluesmash

PicNick
29.11.2005, 13:56
Bei der UART gibt's keinen synchronen Mode (das "s" fehlt)
Weiß nicht recht, was Ratber mit "nur USART" meint.

EDIT: vielleicht hat Bascom ein Problem mit dem Tiny ? Ich bin niht auf dem Laufenden

Ratber
29.11.2005, 14:47
Nein ,eigentlich wollte ich mal zum selberdenken anregen da bei beiden Controllern unterschiedliche Komponennten zum einsatz gekommen sind was auch andere unterschiede vermuten lassen könnten.
Naja,ist wohl in die Hose gegangen.


Also:

Erstmal einen Blick in beide Datenblätter wo bei beiden Controllern die betreffenden Interruptvektoren liegen.

Nein da sind beide gleich.




Der nächste Schritt wäre eine bekannte Fehlerquelle zu untersuchen.
Die Definitonsdateien von Bascom.

Zuerst in die des 90S2313
Unter Vektor 07 steht "URXC" als Label was sich auch mit dem Code deckt.
Dann einen Blick in die Def .vom Tiny2313
Ja da steht unter 07 ebenfalls "URXC" als Label.
Auch die anderen beiden beteiligten Int. sind ohne auffälligkeiten.

Also auch nix.




Ja,was könnte es denn noch sein ?

Nochmal zurück zu den Datenblättern.
Vieleicht hat Atmels Dokumentationsoberschreibmeister mal wieder zuviel Absint geschluckt und aus faulheit ebenfalls mal wieder große Teile des neuen Dokumentes einfach aus alten zusammenkopiert.
Copy&Paste ist schließlich in :wink: :D


Ja bei den Blcokdiagrammen des UART bzw. USART bemerke ich allerdings das beim UART des 90S2313 die Int. angegeben sind wogegen ich beim USART des Tiny2313 zunächst garnix dazu finden kann.
Das schließt zumindest nicht gänzlich aus das da irgendwo mal wieder das übliche Atmel-Kuddelmuddel bei den Datenblättern zugeschlagen hat.(Stichwort "Absint". Gelle ?)


so,hier wäre jetzt ein Hardwarecheck angesagt aber da muß ich ebenfalls mangels greifbarem Tiny2313 passen.

Bleibt nur noch als Anregung die Funktion der Schnittstelle zu überprüfen ob auch alle Signale wirklich da ankommen wo se hin sollen.




Edit:
Gerade erst gemerkt.
Die Bascom Definitionen auf die ich mich beziehe sind die der Version 1.11.7.9

spatz2222
29.11.2005, 23:38
mh... also kuttel muttel ...

tja da muß ich den SMD ATtiny2313 auslöten und einen AT90S2313 verbauen - so eine Schei....

oder es hat noch jemand einen Tip ?

irgend wie scheint der aber zu reagieren ... eine
Do
toggle led
Loop

schleife läuft und bei dem Eintreffen eines Signales an RxD springt der warscheinlich nicht wieder zurück - da die LED eben nicht mehr blinkt ...

also weiter untersuchen !

vielen Dank nochmal

also ist der Grund das der Attiny2313 keinen Interrupt von RxD unterstützt oder ein ander Chip z.B. Atmega32 könnte das ... (habe noch nicht in's Datenblatt geschaut !!!)


Gruß Tobias

Ratber
30.11.2005, 02:58
irgend wie scheint der aber zu reagieren ... eine
Do
toggle led
Loop

schleife läuft und bei dem Eintreffen eines Signales an RxD springt der warscheinlich nicht wieder zurück - da die LED eben nicht mehr blinkt ...

also weiter untersuchen !


Das ist doch schon was.
Sind die Daten denn überhaupt komplett ?
Übertragungsparameter (Daten-,Stopp-,Paritätsbits hast du mittlerweile vermutlich schon 100x überprüft und den rest der Routine auch.

Da die "Rs232_int:" vermutlich nicht komplett abgearbeitet wird kannst du ja mal die Sünde riskieren und dort ebenfalls Flags setzen.

zb. in Form von LED's
Ein paar Ports lasen sich doch sicher vorübergehend abzweigen.

Nr.1 haste ja schon selber als Indikator für die Hauptschleife eingesetzt.
Nr.2 würde ich an den Anfang der "Rs232_int:" setzen um anzuzeigen das er dort angekommen ist.
Nr.3 dann noch ans Ende der Routine um anzuzeigen das er die Routine auch durchlaufen hat.

spatz2222
30.11.2005, 07:37
Hallo,

ja mache ich mal ... ich habe zwar nur eine LED zur Verfügung aber da muß ich das halt mehrmals machen ....

Gruß Tobias

Ratber
30.11.2005, 14:12
Das ist ja nicht tragisch.

Wenn er hängt ist der Zustand der Ports ja quasi statisch.
Da kannste die LED eben zur Kontrolle kurz umstecken.

spatz2222
11.12.2005, 10:39
Hallo,

so ich wollte mich nochmal melden ...
Ich habe das ganze jetzt nochmal in einer anderen Anwendung geprüft - es geht !
Also der Attiny2313 kann den Urxc Interrupt !!!

ich hatte in der anderen Anwendung noch das Problem das der Takt nicht genau stimmte - da der Interne Oszillator lt. Datenblatt auf 3V abgestimmt ist !
ich hatte zwar versucht den auf 5V zu Trimmen jedoch finde ich das der Interne Oszillator sehr schwankt !

beim Atmega 16 oder so hatte ich in der Richtung nie Sorgen !!!

vielen Dank an alle


Gruß Tobias

Ratber
11.12.2005, 11:18
Ja,das mag vermutlich daran liegen das die Megas Moderner sind als die Tinys.

Wenn es Zeitkritisch wird dann ist immer ein Externe Takt angesagt oder geringere Baudraten

spatz2222
11.12.2005, 11:27
jo jo jo

aber selbst mit 1200Baud kam Schrott raus und zwar so das es machmal ging und manchmal nicht !

nun habe ich einen alten AT90S2313 und einen passenden Quarz draufgelötet - der µC ist in SMD - das ist recht eng !

Ratber
11.12.2005, 11:45
Eng ist immer gut aber 1.27mm Abstände sind nicht wirklich eng. :wink:

PicNick
11.12.2005, 11:52
...aber 1.27mm Abstände sind nicht wirklich eng

Ja, für einen Neurochirurgen. O:)

spatz2222
11.12.2005, 11:54
wenn Du mit einem 300W Hammerlötkolben lötest (was ich nicht mache) könnte das auch schon eng werden ... -:(

Ratber
11.12.2005, 12:31
Die größe der Spitze ist bei SMD-Chips nicht so relevant.
Wer da versucht alle beinchen einzeln zu löten der bekommt vieleicht nen Fleißpreis aber er macht es sich unnötig schwer.

Schaut mal aufs Bild.
Mit der Spittze löte ich so ziemlich alles.
Der Kolben hat übrigens 80W.
Natürlich wäre ein 300W Hammer etwas "Oversized" aber wenn man geschickt genug ist geht es sogar mit der beheizten Streitaxt :wink:

spatz2222
11.12.2005, 12:38
und wie Lötest Du da mit Heißluft, mit Lötpaste ?

Ratber
11.12.2005, 12:50
Privat ausschließlich mit normalem Lötkolben ,Lot und etwas Fluxer.
Heisluft ist in Planung aber da muß ich erstmal überlegen ob ich nen Tischgerät oder mit Externe Druckluft nehme