ATXMEGA8E5 USART

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • ATXMEGA8E5 USART

      Hallo,
      ich möchte gerne den USART an PORTD Pin5 und 7 verwenden.

      Source Code

      1. Config COM4 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
      COM4 funktioniert nicht.
      Fehlermeldung:
      Error : 345 Line : 28 UART not available for the selected micro , in File :
      Error : 31 Line : 28 Invalid data type [[0011] 0[USARTD1_CTRLB]] , in File

      Im englischen Forum las ich zu dem Thema etwas von REMAP.

      Usart 2 (USARTDO):
      RXD0 can be PD2 or PD5
      TXD0 can be PD3 or PD7

      Kann mir da jemand gedanklich einen Schubs geben ? a_56_df238249
      Danke

      (BASCOM-AVR version : 2.0.8.2 )
    • Hallo djmsc,
      das ist richtig. Der ATXMEGA8E5 hat nur 2 USART (PORTC und PORD).
      Aber die USART kann an dem Port rangiert werden, entweder die PINs PD2 und PD3 oder PD5 und PD7.
      Bascom nimmt standardmässig mit COM3 PD2 und PD3.
      Das Rangieren ist mein Problem.
      Ich habe hier eine Hardware mit seriellem Port auf PD5 und PD7 .

      Gruß :)
    • Hallo djmsc,
      Sorry, melde mich spät hatte bischen um die Ohren.
      Zuerst mal Danke für deine Bemühungen.

      Hatte mich gestern noch mal dran gesetzt und dann doch noch die Lösung gefunden.
      Siehe Zeile 24: Pord_remap

      Mit dem remap Befehl (Register) können Module (spi, usart) auf verschieden Pins innerhalb eines Ports umrangiert werden.
      Unten der funktionierende Code. 8o

      BASCOM Source Code

      1. $Regfile="xm8e5def.dat"
      2. $Crystal=32000000
      3. $hwstack=64
      4. $swstack=128
      5. $framesize=64
      6. 'First Enable The Osc Of Your Choice
      7. Config Osc = Enabled , 32mhzosc = Enabled, 32khzosc = enabled
      8. 'configure the systemclock
      9. Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
      10. 'self calibrate
      11. Bitwait Osc_status.1 , Set 'Check if 32MHz Oscillator is ready
      12. Bitwait Osc_status.2 , Set 'Check if internal 32.768 KHz Oscillator is ready
      13. Osc_dfllctrl.0 = 0 'internal 32kHz Clock set
      14. Dfllrc32m_ctrl.0 = 1 'enable DFLL
      15. Config Priority = Static , Vector = Application , Lo = Enabled
      16. '--------------------[UART]--------------------------------------------------
      17. 'configure UART
      18. Config COM3 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
      19. open "com3:" for binary As #1
      20. portd_remap = &B00010000 'Remap Setting this bit to one will move the pin location of USART0 from Px[3:0] to Px[7:4].
      21. '--------------------[Ports]-------------------------------
      22. LED alias PORTA.5 : config LED = output : Led = 0 'LED on Board
      23. PortD.7 = 1 : config portD.7 = output 'Txd
      24. config portd.6 = input 'Rxd
      25. '--------------------[Timer]---------------------------------------------------
      26. config Tcc4 = normal , Prescale = 1024
      27. Tcc4_per = 20000 ' set blink frequence
      28. On Tcc4_ovf Tc4_isr ' interrupt when count = period
      29. Enable Tcc4_ovf , Lo 'Enable overflow interrupt in LOW Priority
      30. Enable Interrupts
      31. Dim temp as byte
      32. '--------------------[Main Loop]-------------------------------
      33. Do
      34. !nop
      35. Loop
      36. End
      37. '--------------------[Interrupt Service Routines]-------------------------------
      38. Tc4_isr: ' overflow interrupt
      39. print #1, temp
      40. Toggle Led
      41. incr temp
      42. Tcc4_intflags.0 = 1 ' clear interrupt flag
      43. Return
      Display All