Dla bliższego zobrazowania w zwykłej Atmedze możemy mieć wyjście PWM na określonych pinach OCxA OCxB itd.
W Xmedze, jeśli na PCB pasuje nam inaczej możemy ten PWM przenieść na inny pin.
Można zamienić miejscami piny w interfejsie SPI i ....można przenieść USARTx0 na miejsce USARTx1
Ostatnia możliwość mi się ostatnio przydała bo PORTF nie ma USART na pinach PF6 i PF7
Konfigurujemy USART6 , ustawiamy REMAP , ustawiamy pin TX jako wyjściowy i od tego momentu każde użycie "PRINT #7" działa na PF7
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "xm128a3udef.dat" 'FLASH-128KB,SRAM-8KB,EEP-2KB,7xTIMER,4xDMA,7xUSART,3xSPI,2xTWI,USB
- $crystal = 32000000 '32MHz
- $hwstack = 128 'FLASH 10K TIMES
- $swstack = 128 'EEPROM 100K TIMES
- $framesize = 512
- Debug On
- Config Submode = New
- Config Eeprom = Quick
- Const _valcheck = 1
- $lib "hexval.lbx"
- ' ***************** SYSTEM CLOCK CONFIG **************************
- ' INTERNAL 32MHz NO PRESCALE
- '
- Config Osc = Disabled , 32mhzosc = Enabled , 32khzosc = Enabled
- Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
- '
- ' ENABLING AUTOMATIC OSCILLATOR CALIBRATION
- Osc_dfllctrl.0 = 1
- Dfllrc32m_ctrl.0 = 1
- 'added by BARTek
- Dim Old_sec As Byte
- '************ CONFIGURATION FOR COM7 ON PORTF ******************** USARTF0
- '
- Config Com7 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 'Tx-PF3 Rx-PF2
- Open "COM7:" For Binary As #7
- Const Rs = 7
- Config Serialin6 = Buffered , Size = 50 'komendy z terminala
- Config Print6 = Portf.0 , Mode = Set
- Config Portf.0 = Output
- Set Portf_remap.4 'przełącz USART z F3 i F2 na F7 i F6
- Config Portf.7 = Output 'TX pin must be in OUTPUT mode
- '*****************************************************************
- '#################################################################
- '# TIMER`s #
- Config Tcc0 = Normal , Prescale = 8
- Tcc0_per = 39999 '10ms @32MHz/8
- Dim Miliseconds As Byte , 500ms As Byte , Mig As Byte
- Do
- If Tcc0_intflags.0 = 1 Then
- Tcc0_intflags.0 = 1
- If Miliseconds < 100 Then
- Incr Miliseconds
- Else
- Miliseconds = 0
- Print #rs , "Test"
- End If
- End If
- Loop