Advertisement
mikolajmki

systemy_adc

Jan 13th, 2023
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <targets\AT91SAM7.h>
  2. #include "pcf8833u8_lcd.h"
  3. #include <stdio.h>
  4.  
  5. int main(void){
  6.  
  7. //PMC_PCER= … // Power management controller (s. 30 datasheet)
  8. char b[4];
  9.  
  10. InitLCD();
  11. LCDClearScreen();
  12. Backlight(BL_ON);
  13. SetContrast(80);
  14.  
  15.  
  16. // konfiguracja ADC, konwersja wartości napięcia z kanału 3 przetwornika:
  17. ADC_CR = 1 << 0; // lub ADC_CR_SWRST – to inny zapis tego samego – reset przetwornika
  18. ADC_CHER = 1 << 5; // aktywowanie kanałów na których ma być przeprowadzona konwersja
  19. ADC_IDR = 0xFFFFF; // świadomie wyłączamy przerwania od wszystkich zdarzeń(źródeł) z ADC
  20. ADC_MR = (23<<ADC_MR_PRESCAL_BIT) | (2<<ADC_MR_STARTUP_BIT) | (1<<ADC_MR_SHTIM_BIT);
  21. // w rejestrze ADC_MR możliwe również ustawienia niższej rozdzielczości
  22. ADC_CR = 1<<1; // lub ADC_CR_START; // start konwersji na aktywnych kanałach
  23. int a = ADC_CDR5;
  24.  
  25. while(1){
  26.  
  27.  
  28. while ((ADC_SR & ADC_SR_EOC5) == 0) {} // dopóki flaga EOC6 jest rowna 0 (konwersja na kanale 6 nie zakończona - rób nic)
  29. a = ADC_CDR5;// wykonaj akcję przypisaną do konwersji
  30. a = 20 + ((a - 530) / 5);
  31. sprintf(b, "%d", a);// wykonaj akcję przypisaną do konwersji
  32. LCDPutStr(b,20,20,LARGE,WHITE,BLACK);
  33. ADC_CR = 1 << 1; // lub ADC_CR_START; // start konwersji na aktywnych kanałach
  34. }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement