PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tiny2313 MIDI RX



tholan
05.02.2007, 13:44
Hi,
ich leg mir gerade die Karten mit dem Empfang von MIDIdaten
am ATtiny2313 über die USART.
Der Compiler meckert, er könne UCSRB nicht beschreiben.
Desgleichen kennt er wohl das Registerbit Ucsra.rxc nicht.
Der Code läuft prima auf dem ATMega8.
Ich habe die Datenregister UCSRA/B/C in den Datenblättern miteinander verglichen.
Bis auf ein Bit (Bit7 URSEL in Register C gibts beim Tiny nicht) entsprechen die sich.
Weiß da wer was?


$regfile = "ATtiny2313.DAT" 'Funktioniert genausowenig mit der 2313DEF.DAT
$crystal = 20000000
Ucsrb = &B00011000 'Senden und Empfangen ein. Mag der Compu
Ucsrc = &B10000110 'Konfiguration:8N1,asynchron.
Ubrr = 39 'Baudratencode für 31250Baud bei 20MHz
Ddrd = &HFE 'MIDI RX-Pin auf Eingang schalten
Portd.0 = 1 'und Pullup enablen.
Ddrb = &HFF 'Komplettes Datenrichtungsregister "b" auf Ausgang
Dim Status As Byte 'Deklarationen
Dim Note_on As Byte
Dim Note_off As Byte
Dim Note_value As Byte
Dim Velo_value As Byte
Wait 5 'Warten, bis der Poly61 gebootet hat
Portd.5 = 1 'Debugging-LED einschalten '
Do
If Ucsra.rxc = 1 Then
Status = Udr
If Status = &H90 Then
While Ucsra.rxc = 0
Wend
Note_value = Udr
While Ucsra.rxc = 0
Wend
Velo_value = Udr
If Velo_value > 0 Then
'damit hätten wir erstmal alle Infos, um eine Taste zu betätigen
'Kopfschmerzen bereiten mir an dieser Stelle noch
'die unterschiedlichen Möglichkeiten des Note off.
end if
End If
End If
Loop


Fehlermeldungen:
Error : 46 Line : 3 Assignment error [UCSRB: 0 &B00011000: 112] , in File : C:\WINDOWS\DESKTOP\POLY61MIDI\POLY61MIDI\POLY61MID I.BAS
Error : 31 Line : 17 Invalid datatype [ 0] , in File : C:\WINDOWS\DESKTOP\POLY61MIDI\POLY61MIDI\POLY61MID I.BAS
Error : 31 Line : 20 Invalid datatype [ 0] , in File : C:\WINDOWS\DESKTOP\POLY61MIDI\POLY61MIDI\POLY61MID I.BAS
Error : 31 Line : 23 Invalid datatype [ 0] , in File : C:\WINDOWS\DESKTOP\POLY61MIDI\POLY61MIDI\POLY61MID I.BAS


thx,
tholan

linux_80
05.02.2007, 19:11
Hallo,
der Tiny2313 ist der Nachfolger des AT90S2313,
und als Vorlage für die .Dat-Datei wurde die vom AT90S genommen, aber wohl nicht genug angepasst.
Die Registernamen werden unter den alten Namen angesprochen,
oder man kann auch selber die neuen in die ATtiny2313.DAT dazuschreiben, dann passt es wieder.


Das wäre wohl wieder ein weiterer Punkt für
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=27149

tholan
05.02.2007, 21:57
Ich danke Dir für den Tip.
Dann werd ich mal das Datenblatt vom 90S2313 wälzen
und dann die Definitionen in der 2313DEF.DAT, bzw ATtiny2313.Dat
suchen.
Vielleicht nehme ich aber auch lieber den GNUAVR.
Ich finde C halt ein bischen sehr akademisch mit seinen
Bitshiftereien. Wenns aber genauso umständlich wird mit Basic,
dann nimmt man doch lieber das Kostenlose :) .
thx,
tholan

tholan
08.02.2007, 12:45
Da ich gerade dabei bin, in den Registern des ATTiny2313 rumzustochern
und mir die Fehlermeldungen der Compiler zu Gemüte führe, nochmal ein Nachtrag:
In den Datenblättern des Mega8, bzw Tiny2313 wird behauptet,
daß die UARTs in den 8Bit Atmels untereinander so schön kompatibel seien.
Dem ist offensichtlich nicht so:
Beim ATMega8 gibt es eine 8-Bit Registeradresse für 2 Register,
dieses sind UCSRC, bzw. UBRRH. Die Funktion dieser Adresse bestimmt sich
nach dem 7. Bit (URSEL) in UCSRC.
Das Bit URSEL gibt's in UCSRC beim Tiny2313 jedenfalls nicht,
da der 2 diskrete Baudratenregister hat,
UBRRH (4Bit, in obere Bits muß immer 0 geschrieben werden)
und UBRRL (8Bit).
Ins Datenblatt des 90S2313 hab ich noch garnicht zu gucken gewagt.
Ist jedenfalls ein ziemliches Durcheinander, da die Register- , bzw.
deren Bitbezeichnungen wohl auch mehrfach gewechselt worden sind.