Advertisement
mikolajmki

systemy_4-zadania

Jan 20th, 2023
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #include <targets\AT91SAM7.h>
  2. #include "pcf8833u8_lcd.h"
  3. #include <ctl_api.h>
  4. #include <stdio.h>
  5.  
  6. char b[7];
  7.  
  8. void wyswietl(char b) {
  9. sprintf(b, "%d.%d", 20+((pomiar()-530)/5), pomiar() % 10);// wykonaj akcję przypisaną do konwersji
  10. LCDPutStr(b,55,50,LARGE,WHITE,BLACK);
  11. }
  12.  
  13. void TIMER0_ISR () {
  14. TC0_SR; // na początku pusty odczyt rejestru statusu - kasowanie flagi przerwania CPCS
  15. wyswietl(b);//zmiana stanu LCD_BL
  16. }
  17.  
  18. void TIMER0_ISR1 () {
  19. TC0_CCR = (1<<1);
  20. PIOB_ISR;
  21. }
  22.  
  23.  
  24. int pomiar(){
  25. // konfiguracja ADC, konwersja wartości napięcia z kanału 3 przetwornika:
  26. ADC_CR = 1 << 0; // lub ADC_CR_SWRST – to inny zapis tego samego – reset przetwornika
  27. ADC_CHER = 1 << 5; // aktywowanie kanałów na których ma być przeprowadzona konwersja
  28. ADC_IDR = 0xFFFFF; // świadomie wyłączamy przerwania od wszystkich zdarzeń(źródeł) z ADC
  29. ADC_CR = 1<<1; // lub ADC_CR_START; // start konwersji na aktywnych kanałach
  30. ADC_MR = (23<<ADC_MR_PRESCAL_BIT) | (2<<ADC_MR_STARTUP_BIT) | (1<<ADC_MR_SHTIM_BIT);
  31. // w rejestrze ADC_MR możliwe również ustawienia niższej rozdzielczości
  32. while ((ADC_SR & ADC_SR_EOC5) == 0) {} // dopóki flaga EOC6 jest rowna 0 (konwersja na kanale 6 nie zakończona - rób nic)
  33. return ADC_CDR5;
  34. }
  35.  
  36. int main(void){
  37.  
  38. PMC_PCER= 1<<17; // Power management controller (s. 30 datasheet)
  39. char b[7];
  40.  
  41. InitLCD();
  42. LCDClearScreen();
  43. Backlight(BL_ON);
  44.  
  45. ctl_global_interrupts_enable();
  46.  
  47. PMC_PCER|=(1<<3) | (1<<12) | (1<<17); // Power management controller (s. 30 datasheet);
  48. PIOB_OER = (1<<20);
  49. PIOB_OWER = (1<<20);
  50. TC0_CCR = (1<<1);
  51. TC0_SR;
  52. TC0_CMR = (1<<2) | (1<<14);
  53. TC0_CCR = (1<<0) | (1<<2);
  54. TC0_IER= (1<<4);
  55. TC0_RC=9400;
  56.  
  57. ctl_unmask_isr(12);
  58. ctl_unmask_isr(3);
  59. ctl_set_isr(12,1,CTL_ISR_TRIGGER_FIXED,TIMER0_ISR,0);
  60. ctl_set_isr(3,2,CTL_ISR_TRIGGER_FIXED,TIMER0_ISR1,0);
  61.  
  62. while(1){
  63. // sprintf(b, "%d.%d", 20+((pomiar()-530)/5), pomiar() % 10);// wykonaj akcję przypisaną do konwersji
  64. // LCDPutStr(b,55,50,LARGE,WHITE,BLACK);
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement