-         

Ergebnis 1 bis 4 von 4

Thema: Tiny2313 MIDI RX

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    06.05.2005
    Ort
    Berlin
    Beiträge
    212

    Tiny2313 MIDI RX

    Anzeige

    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?
    Code:
    $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\POLY61MIDI.BAS
    Error : 31    Line :   17    Invalid datatype [ 0]  , in File : C:\WINDOWS\DESKTOP\POLY61MIDI\POLY61MIDI\POLY61MIDI.BAS
    Error : 31    Line :   20    Invalid datatype [ 0]  , in File : C:\WINDOWS\DESKTOP\POLY61MIDI\POLY61MIDI\POLY61MIDI.BAS
    Error : 31    Line :   23    Invalid datatype [ 0]  , in File : C:\WINDOWS\DESKTOP\POLY61MIDI\POLY61MIDI\POLY61MIDI.BAS
    thx,
    tholan

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    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
    http://www.roboternetz.de/phpBB2/zei...ag.php?t=27149

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    06.05.2005
    Ort
    Berlin
    Beiträge
    212
    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

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    06.05.2005
    Ort
    Berlin
    Beiträge
    212
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •