Forum: Mikrocontroller und Digitale Elektronik Wavegenerator sonderbar


von STM8-Beginner (Gast)


Lesenswert?

Ich habe mal den Wavegenerator, der bei STM8 Support dabei ist, 
ausprobiert.

http://www.st.com/content/ccc/resource/technical/document/application_note
/6d/93/81/1d/79/d8/44/9d/CD00280790.pdf/files/CD00280790.pdf/jcr:content 
/translations/en.CD00280790.pdf

Dann bin ich mit dem Oszi auf PIN PF0 draufgegangen (DAC output), und 
mir ist aufgefallen, dass die Verläufe nicht stimmen.
Der Output ist nämlich integriert. Z.b. wenn ein Rechteck rauskommen 
soll, sieht man am Oszi ein Dreieck.
Weiß jemand dazu eine erklärung?
1
CLK->CKDIVR = 0x00;
2
CLK->PCKENR1 |= CLK_PCKENR1_DAC | CLK_PCKENR1_TIM4;
3
CLK->PCKENR2 |= CLK_PCKENR2_DMA1;
4
5
6
DMA1_Channel3->CCR &= (uint8_t)~(DMA_CCR_CE); //Disable the selected DMA Ch.
7
DMA1_Channel3->CCR  = DMA_CCR_RESET_VALUE;//Reset DMA Channelx
8
DMA1_Channel3->CCR |= ((uint8_t)DMA_DIR_MemoryToPeripheral |
9
  (uint8_t)DMA_Mode_Circular |(uint8_t) DMA_MemoryIncMode_Inc);
10
DMA1_Channel3->CSPR &= (uint8_t)~(DMA_CSPR_PL | DMA_CSPR_16BM);
11
  //Clear old priority and memory data size  option
12
DMA1_Channel3->CSPR |= ((uint8_t)DMA_Priority_VeryHigh |
13
  (uint8_t)DMA_MemoryDataSize_HalfWord);
14
  
15
DMA1_Channel3->CNBTR = (uint8_t)sample_size;// Write to DMA Channelx CNBTR
16
//--------------------------- DMA Channel3 CPAR Configuration
17
DMA1_Channel3->CPARH = (uint8_t)(DAC_CH1RDHRH_ADDRESS >> (uint8_t)8);
18
DMA1_Channel3->CPARL = (uint8_t)(DAC_CH1RDHRH_ADDRESS);
19
//--------------------------- DMA Channel3 CMAR Configuration
20
DMA1_Channel3->CM0ARH = (uint8_t)(WavesTab[tab_index] >> (uint8_t)8);
21
DMA1_Channel3->CM0ARL = (uint8_t)(WavesTab[tab_index]);  
22
DMA1_Channel3->CCR |= DMA_CCR_CE;// DMA1 Channel 3 enable
23
DMA1->GCSR |= (uint8_t)DMA_GCSR_GE; // Enable the DMA
24
25
26
// DAC Channel1 Config: 12bit 
27
// Fill DAC Init param DAC_Trigger_T4_TRGO* and  DAC Channel1 Init
28
  // DAC CR1 Config
29
tmpreg1 = DAC->CH1CR1;
30
tmpreg1 &= (uint8_t)~(DAC_CR1_TEN | DAC_CR1_TSEL );
31
  // Configure for the selected DAC channel: buffer output, trigger
32
  // Set BOFFx bit Output Buffer disable
33
tmpreg1 |= (uint8_t)(DAC_CR1_BOFF );
34
  // Set TSELx and TEN  bits according to DAC_Trigger value
35
tmpreg1 |= (uint8_t)(DAC_CR1_TEN | DAC_Trigger_T4_TRGO) ;
36
DAC->CH1CR1 = tmpreg1;
37
DAC->CH1CR1 |= DAC_CR1_EN;
38
DAC->CH1CR2 |= DAC_CR2_DMAEN;
39
  
40
//********* TIM4 Config ********
41
TIM4->ARR = (uint8_t)(0x4C);// output signal frequency ca 100Hz Range 1
42
TIM4->PSCR = (uint8_t)(TIM4_Prescaler_16);
43
tmpreg1 = TIM4->CR2;
44
tmpreg1 &= (uint8_t)(~TIM4_CR2_MMS);
45
tmpreg1 |=  (uint8_t)TIM4_TRGOSource_Update;
46
TIM4->CR2 = tmpreg1;
47
TIM4->CR1 |= TIM4_CR1_CEN;

von STM8-Beginner (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.