Wavegenerator sonderbar

Gast #4858164
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;

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.