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
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
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
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
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
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
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 !
Eng ist immer gut aber 1.27mm Abstände sind nicht wirklich eng. :wink:
...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 ... -:(
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 ?
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.