Knowledge (XXG)

Bit banging

Source 📝

51: 206:
Bit banging allows a device to implement different protocols with minimal or no hardware changes. In some cases, bit banging is made feasible by newer, faster processors because more recent hardware operates much more quickly than hardware did when standard communications protocols were created.
463:
The question whether to deploy bit banging or not is a trade-off between load, performance and reliability on one hand, and the availability of a hardware alternative on the other. The software emulation process consumes more processing power than does supporting dedicated hardware. The
538:(a DOS driver by Ciriaco García de Celis utilizing bit-banging to support non-standard ultra-high capacity floppy disk formats "bypassing" the normal floppy controller logic, a similar program for Amiga floppies is Vincent Joguin's Disk2FDI) 183:) to transmit and receive, respectively, and is responsible for meeting all timing requirements and protocol sequencing of the signals. In contrast to bit banging, dedicated hardware (e.g., 464:
microcontroller spends much of its time sending or receiving samples to and from the pins, at the expense of other tasks. The signal produced usually has more
484:
are available. The implementation in software can be a solution when specific hardware support is not available or requires a more expensive microcontroller.
550:(VM) (implementing virtual device drivers emulating actual hardware controllers sometimes involves utilizing programming techniques similar to bit banging) 171:
that employs software as a substitute for dedicated hardware to generate transmitted signals or process received signals. Such software directly sets and
600: 544:(on MDA, HGC, CGA and EGA PC-compatible graphics cards the sensor of an optional light pen could be read in a fashion similar to bit banging) 134: 658: 232: 72: 503: 115: 472:, especially if the processor is also executing other tasks while communicating. However, if the bit-banging software is 172: 87: 68: 222: 188: 678: 673: 559: 94: 61: 688: 683: 199:
to relax software timing requirements. Bit banging can be implemented at very low cost, and is commonly used in
588: 228: 101: 508: 646: 553: 523: 152: 83: 629: 148: 481: 513: 592: 596: 476:-driven by the signal, this may be of minor importance, especially if control signals such as 168: 493: 200: 547: 180: 108: 581: 667: 31: 624: 518: 196: 164: 50: 39: 35: 27:
Using software instead of dedicated hardware to process and make use of signals
498: 634: 541: 473: 532:(a series of USB to serial converter chips also supporting a bit bang mode) 17: 477: 469: 465: 216: 192: 535: 387:// pulse the clock state to indicate that bit value should be read 529: 184: 176: 44: 195:) satisfies these requirements and, if necessary, provides a 583:
Programming and customizing PICmicro microcontrollers
223:
SPI bus - simultaneously transmit and receive a byte
75:. Unsourced material may be challenged and removed. 580: 659:Efficient bit-banged SPI for 8051 microcontroller 420:// shift byte left so next bit will be leftmost 339:// set line high if bit is 1, low if bit is 0 8: 231:code example transmits a byte of data on an 630:Bit banging for Async Serial Communication 135:Learn how and when to remove this message 571: 7: 240:// transmit byte serially, MSB first 73:adding citations to reliable sources 25: 625:Notes on bit-banging async serial 49: 60:needs additional citations for 1: 504:Bit twiddler (disambiguation) 276:// select device (active low) 647:I2C on AVR using bit banging 619:Asynchronous serial (RS-232) 705: 560:Polling (computer science) 220: 214: 29: 589:McGraw-Hill Professional 579:Predko, Michael (2000). 336:// consider leftmost bit 237: 30:Not to be confused with 509:Bit-serial architecture 635:Bit banging for RS-232 554:Software-defined radio 524:Integrated Woz Machine 153:electrical engineering 246:send_8bit_serial_data 149:computer engineering 69:improve this article 514:1-bit architecture 438:// deselect device 167:for any method of 679:Signal processing 674:Data transmission 602:978-0-07-136172-9 291:// send bits 7..0 179:(e.g., pins on a 169:data transmission 145: 144: 137: 119: 16:(Redirected from 696: 689:Embedded systems 684:Digital circuits 607: 606: 587:(2nd ed.). 586: 576: 494:Bit manipulation 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 421: 418: 415: 412: 409: 406: 403: 400: 397: 394: 391: 388: 385: 382: 379: 376: 373: 370: 367: 364: 361: 358: 355: 352: 349: 346: 343: 340: 337: 334: 331: 328: 325: 322: 319: 316: 313: 310: 307: 304: 301: 298: 295: 292: 289: 286: 283: 280: 277: 274: 271: 268: 265: 262: 259: 256: 253: 250: 247: 244: 241: 217:I²C bus protocol 201:embedded systems 140: 133: 129: 126: 120: 118: 77: 53: 45: 21: 704: 703: 699: 698: 697: 695: 694: 693: 664: 663: 616: 611: 610: 603: 578: 577: 573: 568: 548:Virtual machine 490: 461: 456: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 407: 404: 401: 398: 395: 392: 389: 386: 383: 380: 377: 374: 371: 368: 365: 362: 359: 356: 353: 350: 347: 344: 341: 338: 335: 332: 329: 326: 323: 320: 317: 314: 311: 308: 305: 302: 299: 296: 293: 290: 287: 284: 281: 278: 275: 272: 269: 266: 263: 260: 257: 254: 251: 248: 245: 242: 239: 225: 219: 213: 181:microcontroller 141: 130: 124: 121: 78: 76: 66: 54: 43: 28: 23: 22: 15: 12: 11: 5: 702: 700: 692: 691: 686: 681: 676: 666: 665: 662: 661: 655: 654: 650: 649: 643: 642: 638: 637: 632: 627: 621: 620: 615: 614:External links 612: 609: 608: 601: 570: 569: 567: 564: 563: 562: 557: 551: 545: 539: 533: 527: 521: 516: 511: 506: 501: 496: 489: 486: 460: 459:Considerations 457: 238: 227:The following 212: 211:C code example 209: 175:the states of 143: 142: 57: 55: 48: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 701: 690: 687: 685: 682: 680: 677: 675: 672: 671: 669: 660: 657: 656: 652: 651: 648: 645: 644: 640: 639: 636: 633: 631: 628: 626: 623: 622: 618: 617: 613: 604: 598: 594: 590: 585: 584: 575: 572: 565: 561: 558: 555: 552: 549: 546: 543: 540: 537: 534: 531: 528: 525: 522: 520: 517: 515: 512: 510: 507: 505: 502: 500: 497: 495: 492: 491: 487: 485: 483: 479: 475: 471: 467: 458: 236: 234: 230: 224: 218: 210: 208: 204: 202: 198: 194: 190: 186: 182: 178: 174: 170: 166: 162: 158: 154: 150: 139: 136: 128: 117: 114: 110: 107: 103: 100: 96: 93: 89: 86: –  85: 84:"Bit banging" 81: 80:Find sources: 74: 70: 64: 63: 58:This article 56: 52: 47: 46: 41: 37: 33: 32:Bit-twiddling 19: 582: 574: 462: 226: 205: 160: 156: 146: 131: 122: 112: 105: 98: 91: 79: 67:Please help 62:verification 59: 591:. pp.  519:Fast loader 441:output_high 408:output_high 360:output_high 197:data buffer 165:term of art 161:bit bashing 157:bit banging 40:Bit-banding 36:Bit-slicing 18:Bit-banging 668:Categories 566:References 499:Bit stream 390:output_low 375:output_low 279:output_low 229:C language 221:See also: 215:See also: 95:newspapers 542:Light pen 474:interrupt 426:<<= 125:July 2014 488:See also 478:RTS, CTS 470:glitches 252:unsigned 653:SPI bus 641:I²C bus 173:samples 109:scholar 599:  466:jitter 414:SD_CLK 396:SD_CLK 111:  104:  97:  90:  82:  595:–12. 556:(SDR) 536:2MGUI 526:(IWM) 480:, or 447:SD_CS 402:delay 381:SD_DI 366:SD_DI 351:& 285:SD_CS 235:bus. 177:GPIOs 163:is a 116:JSTOR 102:books 38:, or 597:ISBN 530:FTDI 423:data 372:else 354:0x80 348:data 315:< 258:data 255:char 243:void 185:UART 151:and 88:news 482:DCD 468:or 405:(); 294:for 267:int 233:SPI 193:I²C 189:SPI 159:or 147:In 71:by 670:: 593:10 450:); 417:); 399:); 384:); 369:); 342:if 327:++ 288:); 203:. 191:, 187:, 155:, 34:, 605:. 453:} 444:( 435:} 432:; 429:1 411:( 393:( 378:( 363:( 357:) 345:( 333:{ 330:) 324:i 321:; 318:8 312:i 309:; 306:0 303:= 300:i 297:( 282:( 273:; 270:i 264:{ 261:) 249:( 138:) 132:( 127:) 123:( 113:· 106:· 99:· 92:· 65:. 42:. 20:)

Index

Bit-banging
Bit-twiddling
Bit-slicing
Bit-banding

verification
improve this article
adding citations to reliable sources
"Bit banging"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computer engineering
electrical engineering
term of art
data transmission
samples
GPIOs
microcontroller
UART
SPI
I²C
data buffer
embedded systems
I²C bus protocol
SPI bus - simultaneously transmit and receive a byte
C language

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.