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.
Fork of GSM_Library by
GSMLibrary.cpp@18:7642909bfcfc, 2015-03-07 (annotated)
- Committer:
- es_marble
- Date:
- Sat Mar 07 23:45:00 2015 +0000
- Revision:
- 18:7642909bfcfc
- Parent:
- 17:360afa1e6809
- Child:
- 19:a442b5a0116f
v4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
danilob | 0:41904adca656 | 1 | #include "GSMLibrary.h" |
danilob | 0:41904adca656 | 2 | #include "gsmqueue.h" |
danilob | 2:8352ad91f2ee | 3 | #include <string.h> |
danilob | 0:41904adca656 | 4 | |
danilob | 15:19ae032e2e54 | 5 | #define TIME_CONST .3 |
danilob | 15:19ae032e2e54 | 6 | #define SECONDS_TIMEOUT 40 |
danilob | 15:19ae032e2e54 | 7 | #define TIMEOUTLIMIT SECONDS_TIMEOUT/TIME_CONST //$change check with main code this will set up condition fior timeout. |
danilob | 0:41904adca656 | 8 | |
danilob | 0:41904adca656 | 9 | //definition for AT comands |
danilob | 0:41904adca656 | 10 | #define AT_OK "AT" |
danilob | 0:41904adca656 | 11 | #define AT_CSQ "AT+CSQ" |
danilob | 0:41904adca656 | 12 | #define AT_CREG "AT+CREG?" |
danilob | 0:41904adca656 | 13 | #define AT_CMGF "AT+CMGF=1" |
danilob | 0:41904adca656 | 14 | #define RECEIVER_PHONE_NUMBER "\"+18014722842\"" |
danilob | 0:41904adca656 | 15 | #define AT_CMGS "AT+CMGS=" RECEIVER_PHONE_NUMBER |
danilob | 15:19ae032e2e54 | 16 | #define MESSAGE_BODY "stress test\32\32" |
es_marble | 18:7642909bfcfc | 17 | #define MSG_SIZE 200 |
danilob | 0:41904adca656 | 18 | |
es_marble | 16:6807d437cd48 | 19 | //Definition for AT repsonses |
danilob | 0:41904adca656 | 20 | //Please notice that after ":" the gsm will usually send aditional information |
danilob | 0:41904adca656 | 21 | #define AT_OK_RESPONSE "OK" //Response after sending "AT" message |
es_marble | 6:3ccc86304c2c | 22 | #define AT_CSQ_RESPONSE "+CSQ:" //+CSQ: <arg1>,<arg2> where <arg1> is signal strength arg1 = 0-30 where a number below 10 means low signal strength and 99 is not knwn or detectable signal and arg2 is bit error rate form 0-7, 99 will represent error |
danilob | 13:9ac5ff131214 | 23 | #define AT_CREG_RESPONSE "+CREG:"//+CREG: <arg1>,<arg2> where <arg1> = 0-2(see AT command descriptions), <arg2> = 0-5, 0 not registered to nework and not looking for one. 1 is conected to network, 2 is not conected but searching |
danilob | 0:41904adca656 | 24 | #define AT_CMGF_RESPONSE "OK" |
danilob | 14:56a2c371ce18 | 25 | #define AT_CMGS_RESPONSE ">" //Message is written aftersymbol |
danilob | 15:19ae032e2e54 | 26 | #define AT_SENDSMS_RESPONSE ">" // +CMGS: <id> this will include the message id. CMGS ERROR for error and |
danilob | 17:360afa1e6809 | 27 | #define AT_SUCCESS_RESPONSE "+CMGS:" |
danilob | 0:41904adca656 | 28 | |
es_marble | 16:6807d437cd48 | 29 | //External variables |
danilob | 0:41904adca656 | 30 | extern Serial pc; |
danilob | 0:41904adca656 | 31 | extern Serial gsm; |
danilob | 0:41904adca656 | 32 | extern uint8_t buffer[BUFFER_LENGTH];//buffer storing char |
es_marble | 16:6807d437cd48 | 33 | |
es_marble | 16:6807d437cd48 | 34 | //Internal variables |
danilob | 0:41904adca656 | 35 | gsm_states gsm_current_state = GSM_INITIALIZE; |
danilob | 0:41904adca656 | 36 | char send = 0; |
danilob | 12:f3ccc43c4d3c | 37 | int timeout_count = 0; |
es_marble | 18:7642909bfcfc | 38 | char gsm_msg[MSG_SIZE + 1]; //1 extra for Ctrl+Z |
danilob | 0:41904adca656 | 39 | |
es_marble | 16:6807d437cd48 | 40 | void gsm_tick() |
es_marble | 16:6807d437cd48 | 41 | { |
es_marble | 16:6807d437cd48 | 42 | if (getGSMIdleBit() || gsm_timeOut() || (send && gsm_current_state == GSM_INITIALIZE)) //question with send... |
es_marble | 16:6807d437cd48 | 43 | { |
es_marble | 16:6807d437cd48 | 44 | resetGSMIdleBit(); //reset GSM idle bit |
es_marble | 16:6807d437cd48 | 45 | gsm_nextStateLogic(); //Next state |
es_marble | 16:6807d437cd48 | 46 | gsm_mealyOutputs(); //Mealy outputs |
es_marble | 16:6807d437cd48 | 47 | flushQueue(); //Flush the queue |
es_marble | 16:6807d437cd48 | 48 | } |
es_marble | 16:6807d437cd48 | 49 | } |
es_marble | 16:6807d437cd48 | 50 | |
es_marble | 16:6807d437cd48 | 51 | |
es_marble | 16:6807d437cd48 | 52 | |
es_marble | 16:6807d437cd48 | 53 | //Advance timeout counter; if timeout, return true |
es_marble | 16:6807d437cd48 | 54 | bool gsm_timeOut() |
es_marble | 16:6807d437cd48 | 55 | { |
es_marble | 16:6807d437cd48 | 56 | if(++timeout_count >= TIMEOUTLIMIT){ |
danilob | 15:19ae032e2e54 | 57 | timeout_count=0; |
danilob | 15:19ae032e2e54 | 58 | gsm_current_state = GSM_INITIALIZE; |
es_marble | 16:6807d437cd48 | 59 | return true; |
danilob | 15:19ae032e2e54 | 60 | } |
es_marble | 16:6807d437cd48 | 61 | else |
es_marble | 16:6807d437cd48 | 62 | return false; |
es_marble | 16:6807d437cd48 | 63 | } |
es_marble | 16:6807d437cd48 | 64 | |
es_marble | 18:7642909bfcfc | 65 | //Have the GSM send a message |
es_marble | 18:7642909bfcfc | 66 | void gsm_send_sms(char msg[]) |
es_marble | 18:7642909bfcfc | 67 | { |
es_marble | 18:7642909bfcfc | 68 | send = 1; |
es_marble | 18:7642909bfcfc | 69 | strcpy(gsm_msg,msg); //If we need to optimize later we can do that, but this is more robust |
es_marble | 18:7642909bfcfc | 70 | strcat(gsm_msg,"\x1A"); |
es_marble | 18:7642909bfcfc | 71 | } |
es_marble | 18:7642909bfcfc | 72 | |
es_marble | 18:7642909bfcfc | 73 | //Return true if gsm is ready |
es_marble | 18:7642909bfcfc | 74 | bool gsm_ready() |
es_marble | 18:7642909bfcfc | 75 | { |
es_marble | 18:7642909bfcfc | 76 | return (send == 1) ? true : false; |
es_marble | 18:7642909bfcfc | 77 | } |
es_marble | 18:7642909bfcfc | 78 | |
es_marble | 18:7642909bfcfc | 79 | //Reset the gsm |
es_marble | 18:7642909bfcfc | 80 | void gsm_reset() |
es_marble | 18:7642909bfcfc | 81 | { |
es_marble | 18:7642909bfcfc | 82 | gsm_current_state = GSM_INITIALIZE; |
es_marble | 18:7642909bfcfc | 83 | } |
es_marble | 18:7642909bfcfc | 84 | |
es_marble | 16:6807d437cd48 | 85 | //Next state logic ----------------------------------------------------- |
es_marble | 16:6807d437cd48 | 86 | void gsm_nextStateLogic() |
es_marble | 16:6807d437cd48 | 87 | { |
es_marble | 16:6807d437cd48 | 88 | printQueue(); //$debug |
es_marble | 16:6807d437cd48 | 89 | |
es_marble | 16:6807d437cd48 | 90 | switch(gsm_current_state) |
es_marble | 16:6807d437cd48 | 91 | { |
danilob | 0:41904adca656 | 92 | case GSM_INITIALIZE: |
es_marble | 16:6807d437cd48 | 93 | pc.printf("gsm_initialize state\r\n");//&debug |
danilob | 2:8352ad91f2ee | 94 | timeout_count = 0; |
es_marble | 16:6807d437cd48 | 95 | if (send) |
es_marble | 16:6807d437cd48 | 96 | gsm_current_state = GSM_AT_OK; //unconditional (check it) |
danilob | 0:41904adca656 | 97 | break; |
danilob | 0:41904adca656 | 98 | case GSM_AT_OK: |
danilob | 12:f3ccc43c4d3c | 99 | pc.printf("inside AT_OK state\r\n");//&debug |
es_marble | 16:6807d437cd48 | 100 | if (findInQueue(AT_OK_RESPONSE)) |
es_marble | 16:6807d437cd48 | 101 | gsm_current_state = GSM_AT_CSQ; |
danilob | 12:f3ccc43c4d3c | 102 | break; |
danilob | 12:f3ccc43c4d3c | 103 | case GSM_AT_CSQ: |
danilob | 12:f3ccc43c4d3c | 104 | pc.printf("inside AT_CSQ state \r\n");//&debug |
es_marble | 16:6807d437cd48 | 105 | if(findInQueue(AT_CSQ_RESPONSE)) |
es_marble | 16:6807d437cd48 | 106 | gsm_current_state = GSM_AT_CREG; |
danilob | 2:8352ad91f2ee | 107 | break; |
danilob | 0:41904adca656 | 108 | case GSM_AT_CREG: |
danilob | 7:6c0b6ab3cafe | 109 | pc.printf("gsm_creg state\r\n");//&debug |
es_marble | 16:6807d437cd48 | 110 | if(findInQueue(AT_CREG_RESPONSE)) |
es_marble | 16:6807d437cd48 | 111 | { |
es_marble | 16:6807d437cd48 | 112 | pc.printf("creg parse Int1: %d\r\n",parseInt());//&debug |
es_marble | 16:6807d437cd48 | 113 | int q = parseInt(); |
es_marble | 16:6807d437cd48 | 114 | pc.printf("creg parse Int2: %d\r\n",q);//&debug |
es_marble | 16:6807d437cd48 | 115 | if(q == 1) |
es_marble | 16:6807d437cd48 | 116 | gsm_current_state = GSM_AT_CMGF; |
danilob | 12:f3ccc43c4d3c | 117 | } |
danilob | 0:41904adca656 | 118 | break; |
danilob | 0:41904adca656 | 119 | case GSM_AT_CMGF: |
danilob | 12:f3ccc43c4d3c | 120 | pc.printf("gsm_cmgf state\r\n");//&debug |
es_marble | 16:6807d437cd48 | 121 | if(findInQueue(AT_CMGF_RESPONSE)) |
es_marble | 16:6807d437cd48 | 122 | gsm_current_state = GSM_AT_CMGS; |
danilob | 0:41904adca656 | 123 | break; |
danilob | 0:41904adca656 | 124 | case GSM_AT_CMGS: |
es_marble | 16:6807d437cd48 | 125 | pc.printf("gsm_cmgs state\r\n");//&debug |
es_marble | 16:6807d437cd48 | 126 | if(findInQueue(AT_CMGS_RESPONSE)) |
es_marble | 16:6807d437cd48 | 127 | gsm_current_state = GSM_AT_SENDSMS; |
danilob | 0:41904adca656 | 128 | break; |
danilob | 0:41904adca656 | 129 | case GSM_AT_SENDSMS: |
danilob | 12:f3ccc43c4d3c | 130 | pc.printf("gsm_send_sms state\r\n");//&debug |
es_marble | 18:7642909bfcfc | 131 | if(findInQueue(AT_SENDSMS_RESPONSE)) //> |
es_marble | 18:7642909bfcfc | 132 | { |
es_marble | 18:7642909bfcfc | 133 | //Check if the "successfully sent" has also already been received (most likely |
es_marble | 18:7642909bfcfc | 134 | //this won't be the case, but if it has been >500 ms there's a possibility |
es_marble | 18:7642909bfcfc | 135 | //we've received both the messages during the same call to our state machine.) |
es_marble | 18:7642909bfcfc | 136 | if(findInQueue(AT_SUCCESS_RESPONSE)) |
es_marble | 18:7642909bfcfc | 137 | { |
es_marble | 18:7642909bfcfc | 138 | pc.printf("Message SENT! msgID: %iY\r\n",parseInt());//&debug |
es_marble | 18:7642909bfcfc | 139 | send = 0; |
es_marble | 18:7642909bfcfc | 140 | gsm_current_state = GSM_INITIALIZE; //Skip success state (we've received both) |
es_marble | 18:7642909bfcfc | 141 | } |
es_marble | 18:7642909bfcfc | 142 | else |
es_marble | 18:7642909bfcfc | 143 | gsm_current_state = GSM_SUCCESS; //Go to success state |
es_marble | 18:7642909bfcfc | 144 | } |
es_marble | 16:6807d437cd48 | 145 | else |
es_marble | 18:7642909bfcfc | 146 | gsm_current_state = GSM_AT_CMGS; //Try resending the message (until timeout) |
danilob | 0:41904adca656 | 147 | break; |
danilob | 0:41904adca656 | 148 | case GSM_SUCCESS: |
danilob | 7:6c0b6ab3cafe | 149 | pc.printf("gsm_success state\r\n");//&debug |
es_marble | 18:7642909bfcfc | 150 | if(findInQueue(AT_SUCCESS_RESPONSE)) |
es_marble | 18:7642909bfcfc | 151 | { |
es_marble | 16:6807d437cd48 | 152 | pc.printf("Message SENT! msgID: %iY\r\n",parseInt());//&debug |
es_marble | 18:7642909bfcfc | 153 | } |
es_marble | 18:7642909bfcfc | 154 | send = 0; |
es_marble | 18:7642909bfcfc | 155 | gsm_current_state = GSM_INITIALIZE; //We will restart regardless of whether it worked |
danilob | 0:41904adca656 | 156 | break; |
danilob | 0:41904adca656 | 157 | default: |
danilob | 0:41904adca656 | 158 | pc.printf("This is a state error"); |
danilob | 0:41904adca656 | 159 | } |
danilob | 0:41904adca656 | 160 | } |
es_marble | 16:6807d437cd48 | 161 | |
es_marble | 16:6807d437cd48 | 162 | //Mealy output logic ------------------------------------------------------ |
es_marble | 16:6807d437cd48 | 163 | void gsm_mealyOutputs() |
es_marble | 16:6807d437cd48 | 164 | { |
es_marble | 16:6807d437cd48 | 165 | switch(gsm_current_state) |
es_marble | 16:6807d437cd48 | 166 | { |
es_marble | 16:6807d437cd48 | 167 | case GSM_INITIALIZE: |
es_marble | 16:6807d437cd48 | 168 | pc.printf("No Mealy initialize state output\r\n");//&debug |
es_marble | 16:6807d437cd48 | 169 | break; |
es_marble | 16:6807d437cd48 | 170 | case GSM_AT_OK: |
es_marble | 16:6807d437cd48 | 171 | pc.printf("sending AT_OK\r\n");//&debug |
es_marble | 16:6807d437cd48 | 172 | gsm.puts(AT_OK); |
es_marble | 16:6807d437cd48 | 173 | gsm.puts("\r\n"); |
es_marble | 16:6807d437cd48 | 174 | break; |
es_marble | 16:6807d437cd48 | 175 | case GSM_AT_CSQ: |
es_marble | 16:6807d437cd48 | 176 | pc.printf("sending AT_CSQ\r\n");//&debug |
es_marble | 16:6807d437cd48 | 177 | gsm.puts(AT_CSQ); |
es_marble | 16:6807d437cd48 | 178 | gsm.puts("\r\n"); |
es_marble | 16:6807d437cd48 | 179 | break; |
es_marble | 16:6807d437cd48 | 180 | case GSM_AT_CREG: |
es_marble | 16:6807d437cd48 | 181 | pc.printf("sending AT_CREG\r\n");//&debug |
es_marble | 16:6807d437cd48 | 182 | gsm.puts(AT_CREG); |
es_marble | 16:6807d437cd48 | 183 | gsm.puts("\r\n"); |
es_marble | 16:6807d437cd48 | 184 | break; |
es_marble | 16:6807d437cd48 | 185 | case GSM_AT_CMGF: |
es_marble | 16:6807d437cd48 | 186 | pc.printf("sending AT_CMGF\r\n");//&debug |
es_marble | 16:6807d437cd48 | 187 | gsm.puts(AT_CMGF); |
es_marble | 16:6807d437cd48 | 188 | gsm.puts("\r\n"); |
es_marble | 16:6807d437cd48 | 189 | break; |
es_marble | 16:6807d437cd48 | 190 | case GSM_AT_CMGS: |
es_marble | 16:6807d437cd48 | 191 | pc.printf("sending AT_CMGS\r\n");//&debug |
es_marble | 16:6807d437cd48 | 192 | gsm.puts(AT_CMGS); |
es_marble | 16:6807d437cd48 | 193 | gsm.puts("\r\n"); |
es_marble | 16:6807d437cd48 | 194 | break; |
es_marble | 16:6807d437cd48 | 195 | case GSM_AT_SENDSMS: |
es_marble | 18:7642909bfcfc | 196 | pc.printf("sending message\r\n");//&debug |
es_marble | 18:7642909bfcfc | 197 | gsm.puts(gsm_msg); //substitute char included |
es_marble | 16:6807d437cd48 | 198 | gsm.puts("\r\n"); |
es_marble | 16:6807d437cd48 | 199 | break; |
es_marble | 16:6807d437cd48 | 200 | case GSM_SUCCESS: |
es_marble | 16:6807d437cd48 | 201 | pc.printf("No Mealy success state output\r\n");//&debug |
es_marble | 16:6807d437cd48 | 202 | default: |
es_marble | 16:6807d437cd48 | 203 | pc.printf("This is a state error"); |
es_marble | 16:6807d437cd48 | 204 | } |
es_marble | 16:6807d437cd48 | 205 | } |
es_marble | 16:6807d437cd48 | 206 | |
es_marble | 16:6807d437cd48 | 207 | |
es_marble | 18:7642909bfcfc | 208 | //Initialize the GSM |
es_marble | 16:6807d437cd48 | 209 | void gsm_initialize(){ |
danilob | 7:6c0b6ab3cafe | 210 | SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK; //enabling dmamux clock |
danilob | 12:f3ccc43c4d3c | 211 | SIM_SCGC7 |= SIM_SCGC7_DMA_MASK; // enebaling dma clock |
es_marble | 18:7642909bfcfc | 212 | pc.printf("initializing tregisters...!\r\n"); |
danilob | 0:41904adca656 | 213 | // control register mux, enabling uart3 receive |
danilob | 0:41904adca656 | 214 | DMAMUX_CHCFG0 |= DMAMUX_CHCFG_ENBL_MASK|DMAMUX_CHCFG_SOURCE(8); |
danilob | 0:41904adca656 | 215 | |
danilob | 0:41904adca656 | 216 | // Enable request signal for channel 0 |
danilob | 0:41904adca656 | 217 | DMA_ERQ = DMA_ERQ_ERQ0_MASK; |
danilob | 0:41904adca656 | 218 | |
danilob | 0:41904adca656 | 219 | // select round-robin arbitration priority |
danilob | 0:41904adca656 | 220 | DMA_CR |= DMA_CR_ERCA_MASK; |
danilob | 0:41904adca656 | 221 | |
danilob | 0:41904adca656 | 222 | //enabled error interrupt for DMA0 |
danilob | 0:41904adca656 | 223 | //DMA_EEI = DMA_EEI_EEI0_MASK ; |
danilob | 0:41904adca656 | 224 | //Addres for buffer |
danilob | 0:41904adca656 | 225 | DMA_TCD0_SADDR = (uint32_t) &UART_D_REG(UART3_BASE_PTR); |
danilob | 0:41904adca656 | 226 | DMA_TCD0_DADDR = (uint32_t) buffer; |
danilob | 0:41904adca656 | 227 | // Set an offset for source and destination address |
danilob | 0:41904adca656 | 228 | DMA_TCD0_SOFF = 0x00; |
danilob | 0:41904adca656 | 229 | DMA_TCD0_DOFF = 0x01; // Destination address offset of 1 byte per transaction |
danilob | 0:41904adca656 | 230 | |
danilob | 0:41904adca656 | 231 | // Set source and destination data transfer size |
danilob | 0:41904adca656 | 232 | DMA_TCD0_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); |
danilob | 0:41904adca656 | 233 | |
danilob | 0:41904adca656 | 234 | // Number of bytes to be transfered in each service request of the channel |
danilob | 0:41904adca656 | 235 | DMA_TCD0_NBYTES_MLNO = 0x01; |
danilob | 0:41904adca656 | 236 | // Current major iteration count |
danilob | 0:41904adca656 | 237 | DMA_TCD0_CITER_ELINKNO = DMA_CITER_ELINKNO_CITER(BUFFER_LENGTH); |
danilob | 0:41904adca656 | 238 | DMA_TCD0_BITER_ELINKNO = DMA_BITER_ELINKNO_BITER(BUFFER_LENGTH); |
danilob | 0:41904adca656 | 239 | // Adjustment value used to restore the source and destiny address to the initial value |
danilob | 0:41904adca656 | 240 | // After reading 'len' number of times, the DMA goes back to the beginning by subtracting len*2 from the address (going back to the original address) |
es_marble | 16:6807d437cd48 | 241 | DMA_TCD0_SLAST = 0; // Source address adjustment |
es_marble | 16:6807d437cd48 | 242 | DMA_TCD0_DLASTSGA = -BUFFER_LENGTH; // Destination address adjustment |
danilob | 0:41904adca656 | 243 | // Setup control and status register |
danilob | 0:41904adca656 | 244 | DMA_TCD0_CSR = 0; |
danilob | 0:41904adca656 | 245 | |
danilob | 0:41904adca656 | 246 | // enable interrupt call at end of major loop |
danilob | 0:41904adca656 | 247 | DMA_TCD0_CSR |= DMA_CSR_INTMAJOR_MASK; |
danilob | 0:41904adca656 | 248 | |
danilob | 0:41904adca656 | 249 | //Activate dma trasnfer rx interrupt |
danilob | 0:41904adca656 | 250 | UART_C2_REG(UART3) |= UART_C2_RIE_MASK; |
danilob | 0:41904adca656 | 251 | UART_C5_REG(UART3) |= UART_C5_RDMAS_MASK | UART_C5_ILDMAS_MASK | UART_C5_LBKDDMAS_MASK; |
danilob | 0:41904adca656 | 252 | //activate p fifo |
danilob | 0:41904adca656 | 253 | UART_PFIFO_REG(UART3) |= UART_PFIFO_RXFE_MASK; //RXFE and buffer size of 1 word |
danilob | 7:6c0b6ab3cafe | 254 | queueInit(); |
danilob | 0:41904adca656 | 255 | pc.printf("Initialization done...\n\r"); |
danilob | 0:41904adca656 | 256 | } |
danilob | 0:41904adca656 | 257 | |
danilob | 0:41904adca656 | 258 | |
danilob | 0:41904adca656 | 259 | |
danilob | 0:41904adca656 | 260 | //initialization debuging purposes |
danilob | 0:41904adca656 | 261 | void print_registers() { |
danilob | 0:41904adca656 | 262 | |
danilob | 0:41904adca656 | 263 | |
danilob | 0:41904adca656 | 264 | pc.printf("\n\rDMA REGISTERS\n\r"); |
danilob | 0:41904adca656 | 265 | pc.printf("DMA_MUX: 0x%08x\r\n",DMAMUX_CHCFG0); |
danilob | 0:41904adca656 | 266 | pc.printf("SADDR0: 0x%08x\r\n",DMA_TCD0_SADDR); |
danilob | 0:41904adca656 | 267 | pc.printf("DADDR0: 0x%08x\r\n",DMA_TCD0_DADDR); |
danilob | 0:41904adca656 | 268 | pc.printf("CITER0: 0x%08x\r\n",DMA_TCD0_CITER_ELINKNO); |
danilob | 0:41904adca656 | 269 | pc.printf("BITER0: 0x%08x\r\n",DMA_TCD0_BITER_ELINKNO); |
danilob | 0:41904adca656 | 270 | pc.printf("DMA_CR: %08x\r\n", DMA_CR); |
danilob | 0:41904adca656 | 271 | pc.printf("DMA_ES: %08x\r\n", DMA_ES); |
danilob | 0:41904adca656 | 272 | pc.printf("DMA_ERQ: %08x\r\n", DMA_ERQ); |
danilob | 0:41904adca656 | 273 | pc.printf("DMA_EEI: %08x\r\n", DMA_EEI); |
danilob | 0:41904adca656 | 274 | pc.printf("DMA_CEEI: %02x\r\n", DMA_CEEI); |
danilob | 0:41904adca656 | 275 | pc.printf("DMA_SEEI: %02x\r\n", DMA_SEEI); |
danilob | 0:41904adca656 | 276 | pc.printf("DMA_CERQ: %02x\r\n", DMA_CERQ); |
danilob | 0:41904adca656 | 277 | pc.printf("DMA_SERQ: %02x\r\n", DMA_SERQ); |
danilob | 0:41904adca656 | 278 | pc.printf("DMA_CDNE: %02x\r\n", DMA_CDNE); |
danilob | 0:41904adca656 | 279 | pc.printf("DMA_SSRT: %02x\r\n", DMA_SSRT); |
danilob | 0:41904adca656 | 280 | pc.printf("DMA_CERR: %02x\r\n", DMA_CERR); |
danilob | 0:41904adca656 | 281 | pc.printf("DMA_CINT: %02x\r\n", DMA_CINT); |
danilob | 0:41904adca656 | 282 | pc.printf("DMA_INT: %08x\r\n", DMA_INT); |
danilob | 0:41904adca656 | 283 | pc.printf("DMA_ERR: %08x\r\n", DMA_ERR); |
danilob | 0:41904adca656 | 284 | pc.printf("DMA_HRS: %08x\r\n", DMA_HRS); |
danilob | 0:41904adca656 | 285 | pc.printf("DMA_TCD0_DOFF: %08x\r\n",DMA_TCD0_DOFF); |
danilob | 0:41904adca656 | 286 | pc.printf("\n\rUART REGISTERS\n\r"); |
danilob | 0:41904adca656 | 287 | pc.printf("UART_BDH_REG: %08x\r\n",UART_BDH_REG(UART3)); |
danilob | 0:41904adca656 | 288 | pc.printf("UART_C1_REG: %08x\r\n",UART_C1_REG(UART3)); |
danilob | 0:41904adca656 | 289 | pc.printf("UART_C2_REG: %08x\r\n",UART_C2_REG(UART3)); |
danilob | 0:41904adca656 | 290 | pc.printf("UART_S1_REG: %08x\r\n",UART_S1_REG(UART3)); |
es_marble | 16:6807d437cd48 | 291 | pc.printf("UART_s2_REG: %08x\r\n",UART_S2_REG(UART3)); |
danilob | 0:41904adca656 | 292 | pc.printf("UART_C3_REG: %08x\r\n",UART_C3_REG(UART3)); |
danilob | 0:41904adca656 | 293 | pc.printf("UART_D_REG: %08x\r\n",UART_D_REG(UART3)); |
danilob | 0:41904adca656 | 294 | pc.printf("UART_MA1_REG: %08x\r\n",UART_MA1_REG(UART3)); |
danilob | 0:41904adca656 | 295 | pc.printf("UART_MA2_REG: %08x\r\n",UART_MA2_REG(UART3)); |
danilob | 0:41904adca656 | 296 | pc.printf("UART_C4_REG: %08x\r\n",UART_C4_REG(UART3)); |
danilob | 0:41904adca656 | 297 | pc.printf("UART_C5_REG: %08x\r\n",UART_C5_REG(UART3)); |
es_marble | 16:6807d437cd48 | 298 | pc.printf("UART_ED_REG: %08x\r\n",UART_ED_REG(UART3)); |
danilob | 0:41904adca656 | 299 | pc.printf("UART_MODEM_REG: %08x\r\n",UART_MODEM_REG(UART3)); |
danilob | 0:41904adca656 | 300 | pc.printf("UART_IR_REG: %08x\r\n",UART_IR_REG(UART3)); |
danilob | 0:41904adca656 | 301 | pc.printf("UART_PFIFO_REG: %08x\r\n",UART_PFIFO_REG(UART3)); |
danilob | 0:41904adca656 | 302 | pc.printf("UART_CFIFO_REG: %08x\r\n",UART_CFIFO_REG(UART3)); |
danilob | 0:41904adca656 | 303 | pc.printf("UART_SFIFO_REG: %08x\r\n",UART_SFIFO_REG(UART3)); |
danilob | 0:41904adca656 | 304 | pc.printf("UART_TWFIFO_REG: %08x\r\n",UART_TWFIFO_REG(UART3)); |
danilob | 0:41904adca656 | 305 | pc.printf("UART_TCFIFO_REG: %08x\r\n",UART_TCFIFO_REG(UART3)); |
danilob | 0:41904adca656 | 306 | pc.printf("UART_RWFIFO_REG: %08x\r\n",UART_RWFIFO_REG(UART3)); |
danilob | 0:41904adca656 | 307 | pc.printf("UART_RCFIFO_REG: %08x\r\n",UART_RCFIFO_REG(UART3)); |
danilob | 0:41904adca656 | 308 | |
danilob | 0:41904adca656 | 309 | } |