-
        

Ergebnis 1 bis 3 von 3

Thema: UART Interrupt bei einem Atmega2560

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.04.2011
    Beiträge
    7

    UART Interrupt bei einem Atmega2560

    Anzeige

    Hallo zusammen,

    Ich möchte einen UART Interrupt für meinen rnmega2560 programmieren.
    Ich habe bisher mit einem Atmega8 auf einem myAVR MK2 programmiert,
    da funktioniert folgender Code ohne Probleme:

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 19200
    
    On Urxc Datenabruf
    Enable Urxc
    Enable Interrupts
    
    Config Pind.5 = Output
    Led Alias Portd.5
    
    Dim B As String * 20
    
    Wait 1
    Print "Start"
    
    Do
      Print "test"
      Toggle Led
      Waitms 500
    Loop
    
    
    End
    
    Datenabruf:
    
       Input B
       Waitms 200
       Print B
    
    Return
    Nach einiger Recherche müsste der Code eigentlich so an den Atmega2560 angepasst werden:

    Code:
    $regfile = "m2560def.dat"
    
    $crystal = 16000000
    $baud = 19200
    
    On Urxc2 Datenabruf
    Enable Urxc2
    Enable Interrupts
    
    Config Pind.5 = Output
    Led Alias Portd.5
    
    Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open "com2:" For Binary As #2
    
    Dim B As String * 20
    
    Wait 1
    Print #2 , "Start"
    
    Do
      Print #2 , "test"
      Toggle Led
      Waitms 500
    Loop
    
    
    End
    
    Datenabruf:
    
       Input #2 , B
       Waitms 200
       Print #2 , B
    
    Return
    Jetzt hab ich ich schon "On Urxc" mit verschiedenen Zahlen ausprobiert, brachte aber kein Ergebnis.
    Wenn ich in die Hauptschleife ein "Waitkey(#2)" einfüge, empfängt der µC auch die Daten springt aber nicht
    in die Interrupt Routine. Für das eigentliche Programm brauche ich aber die Interrupt Routine.

    Die Verbindung an sich funktioniert also, Senden und Empfangen funktioniert. Daher schließe ich einen
    Hardware Fehler eigentlich aus.

    Hat einer vlt. ne Idee was ich falsch mache oder wo ich einen Fehler gemacht habe?

    Danke schon mal für eure Hilfe

    Gruß

    Curzon161

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von curzon161 Beitrag anzeigen
    Hat einer vlt. ne Idee was ich falsch mache oder wo ich einen Fehler gemacht habe?
    Du hast mehr als ein Schlagloch.
    Erstens, der ATM2560 hat 4 UARTs, USART0..3, dementsprechend gibst Du hiermit:
    Code:
    Enable Urxc2
    den Receive Complete Interrupt des 3ten UARTs frei, nicht des 2ten.

    Bascom zählt dagegen Com1..X, Com2 spricht also das 2te UART an.

    Das zweite Problem, Enable URXC1 muss nach dem Config Com2 = ... kommen, denn durch das Config wird das RXCIE1-Bit wieder überschrieben/gelöscht, welches durch Enable URXC1 gesetzt wurde.
    Wenn Du beides änderst, wird's gehen.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.04.2011
    Beiträge
    7
    Danke schön, jetzt scheint es zu funktionieren.

    Daran hab ich gar nicht gedacht, dass das ungleichmäßig gezählt wird.
    Hätte mir aber auffallen können als ich da ja die Anschlüsse RXD1 und TXD1 Com2 sind.

    Gruß

    Curzon161

Ähnliche Themen

  1. UART per Interrupt
    Von sunshine im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 19.03.2011, 23:56
  2. UART Interrupt
    Von skywalker1979 im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 04.06.2008, 07:46
  3. UART mit INTERRUPT in C
    Von Nemesis im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 06.10.2007, 13:37
  4. uart interrupt routine
    Von Computerkora im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 25.11.2006, 14:45
  5. UART Interrupt
    Von jagdfalke im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 13.12.2005, 20:44

Berechtigungen

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