Ich versuche gerade den ADC auszulesen.
Alles anzeigen
Ich bekomme aber als channel2_0ges immer den wert 50 also wird der dma überhaupt nicht ausgeführt.
hat jemand ne idee was da falsch ist?
Quellcode
- Config Sysclock = 32mhz , Prescalea = 1 ', Prescalebc = 1_1
- Enable Interrupts
- Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled , Hi = Enabled
- Config Dma = Enabled , Doublebuf = Disabled , Cpm = Ch0rr123
- Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Ch012 , Reference = Int1v , Event_mode = None , Prescaler = 32 , _
- Ch0_gain = 1 , Ch1_gain = 1 , Ch0_inp = Single_ended , Mux0 = &B00011000 , Ch1_inp = Single_ended , Mux1 = &B00001000 , Ch2_inp = Single_ended , Mux2 = &B00010000 , Ch3_inp = Single_ended , Mux3 = &B00011000 'you can setup other channels as well
- Dim Dma_ready2 As Bit
- On Dma_ch1 Dma_ch2_int
- Dim Channel2_0(150) As Word
- Dim Channel2_0_ges As Word
- Dim Globword1 As Byte
- Config Dmach1 = Enabled , Burstlen = 2 , Chanrpt = Enabled , Tci = Lo , Eil = Lo , Singleshot = Enabled , _
- Sar = Burst , Sam = Inc , Dar = None , Dam = Inc , Trigger = &H10 , Btc = 50 , Repeat = 0 , Sadr = Varptr(adca_ch1_res) , Dadr = Varptr(channel2_0(1))
- Channel2_0(5) = 50
- do
- Waitms 50
- Dma_ch1_ctrla.7 = 1
- Waitms 50
- Channel2_0_ges = 0
- For Globword1 = 1 To 25
- Channel2_0_ges = Channel2_0_ges + Channel2_0(globword1)
- Next
- Lcdat 5 , 1 , Channel2_0_ges
- loop
- Dma_ch2_int: ' DMA Transaction complete
- If Dma_intflags.1 = 1 Then ' Channel 0 Transaction Interrupt Flag
- Set Dma_intflags.1 ' Clear the Channel 0 Transaction Complete flag
- Set Dma_ready2
- End If
- Return
hat jemand ne idee was da falsch ist?