Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
VH.cpp
00001 #include "VH.h" 00002 00003 char VH::gibZeichen(void) 00004 { 00005 char c; 00006 while (serial_port->readable()==false); 00007 serial_port->read(&c, 1); 00008 return c; 00009 } 00010 00011 void VH::setZeichen(char c) 00012 { 00013 while (serial_port->writable()==false); 00014 serial_port->write(&c, 1); 00015 } 00016 void VH::eingabe(void) 00017 { int i=0, pudr; 00018 while(1) 00019 { 00020 i=0; 00021 if (serial_port->readable()) { // Chars received? 00022 serial_port->read(buffer+i, 1); 00023 switch (buffer[0]) 00024 { 00025 case 14: 00026 i++; 00027 buffer[i]=gibZeichen(); 00028 i++; 00029 buffer[i]=gibZeichen(); 00030 break; 00031 //9, 1, 2, 3 Input in PUDR 00032 case 9: //Setze Port P0 => PortA Low 00033 i++; 00034 buffer[i]=gibZeichen(); 00035 pudr=0; 00036 for (int j=0;j<8;j++) 00037 { 00038 pudr=pudr<<2; 00039 if ((buffer[i]&(1<<(7-j)))!=0) pudr|=0b01; else pudr|=0b10; 00040 } 00041 pudr&=~0b11110011; 00042 GPIOA->PUPDR=(GPIOA->PUPDR&0xFFFF00F3)|pudr; 00043 break; 00044 case 1: //Setze Port P1 => PortC Low 00045 i++; 00046 buffer[i]=gibZeichen(); 00047 pudr=0; 00048 for (int j=0;j<8;j++) 00049 { 00050 pudr=pudr<<2; 00051 if ((buffer[i]&(1<<(7-j)))!=0) pudr|=0b01; else pudr|=0b10; 00052 } 00053 GPIOC->PUPDR=(GPIOC->PUPDR&0xFFFF0000)|pudr; 00054 break; 00055 case 2: //Setze Port P2 => PortB Low 00056 i++; 00057 buffer[i]=gibZeichen(); 00058 pudr=0; 00059 for (int j=0;j<8;j++) 00060 { 00061 pudr=pudr<<2; 00062 if ((buffer[i]&(1<<(7-j)))!=0) pudr|=0b01; else pudr|=0b10; 00063 } 00064 GPIOB->PUPDR=(GPIOB->PUPDR&0xFFFF0000)|pudr; 00065 break; 00066 case 3: //Setze Port P3 => PortA High 00067 i++; 00068 buffer[i]=gibZeichen(); 00069 pudr=0; 00070 for (int j=0;j<8;j++) 00071 { 00072 pudr=pudr<<2; 00073 if ((buffer[i]&(1<<(7-j)))!=0) pudr|=0b01; else pudr|=0b10; 00074 } 00075 pudr&=~0b0000111100000000; 00076 GPIOA->PUPDR=(GPIOA->PUPDR&0x0F00FFFF)|pudr<<16; 00077 break; 00078 case 8: //lese P0 00079 break; 00080 case 5: //lese P1 (PortC) 00081 break; 00082 case 6: //lese P2 00083 break; 00084 case 7: //lese P3 00085 break; 00086 } 00087 00088 ausgabe(buffer[0]); 00089 } 00090 } 00091 } 00092 void VH::ausgabe(char nr) 00093 { 00094 00095 a=buffer[0]; 00096 b=buffer[1]; 00097 c=buffer[2]; 00098 switch(nr) 00099 { 00100 case 14: 00101 00102 outbuffer[0]=14; 00103 outbuffer[1]=1; 00104 outbuffer[3]=0; 00105 for (int i=0; i<3;i++) setZeichen(outbuffer[i]); 00106 break; 00107 case 9: //Setze Port P0 => PortA Low 00108 case 1: //Setze Port P1 => PortC Low 00109 case 2: //Setze Port P2 => PortB Low 00110 case 3: //Setze Port P3 => PortA High 00111 for (int i=0; i<2;i++) setZeichen(buffer[i]); 00112 break; 00113 case 8: //lese P0 = PortA Low 00114 outbuffer[0]=buffer[0]; 00115 outbuffer[1]=GPIOA->IDR&0xFF; 00116 for (int i=0; i<2;i++) setZeichen(outbuffer[i]); 00117 break; 00118 case 5: //lese P1 = PortC Low 00119 outbuffer[0]=buffer[0]; 00120 outbuffer[1]=GPIOC->ODR&0xFF; 00121 for (int i=0; i<2;i++) setZeichen(outbuffer[i]); 00122 break; 00123 case 6: //lese P2 = PortB Low 00124 outbuffer[0]=buffer[0]; 00125 outbuffer[1]=GPIOB->IDR&0xFF; 00126 for (int i=0; i<2;i++) setZeichen(outbuffer[i]); 00127 break; 00128 case 7: //lese P3 = PortA High 00129 outbuffer[0]=buffer[0]; 00130 outbuffer[1]=(GPIOA->IDR>>8)&0xFF; 00131 for (int i=0; i<2;i++) setZeichen(outbuffer[i]); 00132 break; 00133 00134 } 00135 } 00136 VH::VH(void) 00137 { 00138 serial_port=new BufferedSerial(USBTX, USBRX); 00139 warteAufEingabe=new Thread(); 00140 warteAufEingabe->start(callback(this,&VH::eingabe)); 00141 }
Generated on Sat Jul 23 2022 13:29:45 by
1.7.2