https://www.udemy.com/learn-angularjs/?couponCode=YOUTUBE119
[ add comment ] | [ 0 trackbacks ] | permalink | related link
Enable the I2C devices on the BeagleBone Black
http://beaglebone.cameon.net/home/i2c-devices
PyBBIO, PinMux
https://github.com/graycatlabs/PyBBIO/wiki
https://github.com/graycatlabs/PyBBIO
Pinmux Map
http://www.element14.com/community/thre ... hread=true
[ add comment ] | [ 0 trackbacks ] | permalink
optimal resistor accuracy while building DAC - R2R ladder
----------------------
12 bit R2R =
2^12 = 4092
precission of a single resistor
(1/4092)*100 = 0,025
10 bit ladder requires 0.025% precission resistors
----------------------
10 bit R2R =
2^10 = 1024
precission of a single resistor
(1/1024)*100 = 0,09765625
10 bit ladder requires 0.1% precission resistors
----------------------
9 bit R2R =
2^9 = 512
precission of a single resistor
(1/512)*100 = 0,19%
----------------------
8 bit R2R =
2^8 = 256
precission of a single resistor
(1/256)*100 = 0,39%
----------------------
7 bit R2R =
2^7 = 128
precission of a single resistor
(1/128)*100 = 0,78125%
---------------------------
6 bit R2R = 64
2^6 = 64
precission of a single resistor
(1/128)*100 = 1,5625%
---------------------------
[ add comment ] | [ 0 trackbacks ] | permalink | related link
http://pcbshopper.com/
EEVblog PCB manufacturing
https://www.youtube.com/watch?v=Uemr8xaxcw0
pcb+stencil
http://www.shenzhen2u.com/PCB
[ add comment ] | [ 0 trackbacks ] | permalink | related link
http://hackaday.io/project/1662-global- ... ng-network
text
[ add comment ] ( 1 view ) | [ 0 trackbacks ] | permalink | related link
http://www.koopron.cz/
http://www.kovosreal.cz/178-zpracovani-plechu-cz
[ add comment ] | [ 0 trackbacks ] | permalink
http://www.circuitvalley.com/2013/09/ro ... chpad.html
[ add comment ] | [ 0 trackbacks ] | permalink | related link
/*
* This file is automatically generated and does not require a license
*
* ==== WARNING: CHANGES TO THIS GENERATED FILE WILL BE OVERWRITTEN ====
*
* To make changes to the generated code, use the space between existing
* "USER CODE START (section: <name>)"
* and
* "USER CODE END (section: <name>)"
* comments, where <name> is a single word identifying the section.
* Only these sections will be preserved.
*
* Do not move these sections within this file or change the START and
* END comments in any way.
* ==== ALL OTHER CHANGES WILL BE OVERWRITTEN WHEN IT IS REGENERATED ====
*
* This file was generated from
* C:/ti/grace_3_00_01_48_eng/packages/ti/mcu/msp430/csl/interrupt_vectors/InterruptVectors_init.xdt
*/
#include <msp430.h>
/* USER CODE START (section: InterruptVectors_init_c_prologue) */
#include <stdint.h>
extern unsigned char calibrate_flag;
struct Voice {
uint8_t osc_divider;
uint8_t osc_counter_lsb;
uint8_t osc_counter_msb;
uint8_t osc_dac_lsb;
uint8_t osc_dac_msb;
} voice;
unsigned int i2c_cntr = 0;
unsigned int virtual_TA0CCR0;
unsigned int virtual_TA0CTL;
unsigned char play_midi_note_toggle_bit;
/* USER CODE END (section: InterruptVectors_init_c_prologue) */
/*
* ======== InterruptVectors_graceInit ========
*/
void InterruptVectors_graceInit(void)
{
}
/* Interrupt Function Prototypes */
/*
* ======== USCI A0/B0 TX Interrupt Handler Generation ========
*
* Here are several important notes on using USCI_A0/B0 TX interrupt Handler:
* 1. User could use the following code as a template to service the interrupt
* handler. Just simply copy and paste it into your user definable code
* section.
* For UART and SPI configuration:
if (IFG2 & UCA0TXIFG) {
}
else if (IFG2 & UCB0TXIFG) {
}
* For I2C configuration:
if (IFG2 & UCA0/B0TXIFG) {
}
else if (IFG2 & UCA0/B0RXIFG) {
}
* 2. User could also exit from low power mode and continue with main
* program execution by using the following instruction before exiting
* this interrupt handler.
*
* __bic_SR_register_on_exit(LPMx_bits);
*/
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR_HOOK(void)
{
/* USER CODE START (section: USCI0TX_ISR_HOOK) */
if (IFG2 & UCB0TXIFG) { // callback to transmit bytes
UCB0TXBUF = 0xff;
} else if (IFG2 & UCB0RXIFG) { // callback for bytes received
switch(i2c_cntr) {
case 0:
voice.osc_divider = UCB0RXBUF;
i2c_cntr++;
break;
case 1:
voice.osc_counter_msb = UCB0RXBUF;
i2c_cntr++;
break;
case 2:
voice.osc_counter_lsb = UCB0RXBUF;
i2c_cntr++;
break;
case 3:
voice.osc_dac_msb = UCB0RXBUF;
i2c_cntr++;
break;
case 4:
voice.osc_dac_lsb = UCB0RXBUF;
i2c_cntr++;
virtual_TA0CCR0 = voice.osc_counter_msb; // (2) CCR0 - set CCR0 (compare register value)
virtual_TA0CCR0 = virtual_TA0CCR0 << 8;
virtual_TA0CCR0 |= voice.osc_counter_lsb;
if(voice.osc_divider == 1) {
// (4) TA0CTL - clock src & divider & mode
// start TIMER0_A0
// TASSEL_2 == Timer A clock source select: 2 - SMCLK
// ID_0 == Timer A input divider: none
virtual_TA0CTL = TASSEL_2 | ID_0 | MC_1; // MC_1 == Timer A mode control: 1 - Up to CCR0
} else if(voice.osc_divider == 2) {
// (4) TA0CTL - clock src & divider & mode
// TASSEL_2 -- SMCLK
// ID_1 -- Timer A input divider: 1 - /2 *
virtual_TA0CTL = TASSEL_2 | ID_1 | MC_1; // MC_1 -- Timer A mode control: 1 - Up to CCR0
} else if(voice.osc_divider == 4) {
// (4) TA0CTL - clock src & divider & mode
// TASSEL_2 -- SMCLK
// ID_2 -- Timer A input divider: 2 - /4 *
virtual_TA0CTL = TASSEL_2 | ID_2 | MC_1; // MC_2 -- Timer A mode control: 1 - Up to CCR0
} else if(voice.osc_divider == 8) {
// (4) TA0CTL - clock src & divider & mode
// TASSEL_2 -- SMCLK
// ID_2 -- Timer A input divider: 3 - /8
virtual_TA0CTL = TASSEL_2 | ID_3 | MC_1; // MC_2 -- Timer A mode control: 1 - Up to CCR0
} else if(voice.osc_divider == 16) {
// (4) TA0CTL - clock src & divider & mode
// TASSEL_2 -- SMCLK
// ID_2 -- Timer A input divider: 3 - /8
virtual_TA0CTL = TASSEL_2 | ID_3 | MC_3; // MC_3 -- Timer A mode control: 3 - Up/Down
} else if(voice.osc_divider == 0xff) { // calibration request (0xff)
calibrate_flag = 1; // set calibration flag
P1OUT |= BIT2; // ON LED; BIT0(P1) is MCU pin 2
}
}
if(!calibrate_flag) {
//
// TOGGLE play_midi_note_toggle_bit & SET
//
play_midi_note_toggle_bit ^= BIT7; // toggle play_midi_note_toggle_bit
if(play_midi_note_toggle_bit != 0) {
P1OUT |= BIT3; // BIT3(P1) is MCU pin 5
} else {
P1OUT &= ~(BIT3); // BIT3(P1) is MCU pin 5
};
//
// set voltages on R2R
//
if(voice.osc_dac_msb != 0) { // prevent ower-current when MSB state changes
// ie. 10 11111000 <-> 11 10000000
P3OUT = 0;
}
voice.osc_dac_msb |= 0xfc;
P2OUT &= voice.osc_dac_msb;
voice.osc_dac_msb &= 0x03;
P2OUT |= voice.osc_dac_msb;
P3OUT = voice.osc_dac_lsb;
}
}
/* USER CODE END (section: USCI0TX_ISR_HOOK) */
}
/*
* ======== USCI A0/B0 RX Interrupt Handler Generation ========
*
* Here are several important notes on using USCI_A0/B0 RX interrupt Handler:
* 1. User could use the following code as a template to service the interrupt
* handler. Just simply copy and paste it into your user definable code
* section.
* For UART and SPI configuration:
if (IFG2 & UCA0RXIFG) {
}
else if (IFG2 & UCB0RXIFG) {
}
* For I2C configuration:
if (UCB0STAT & UCSTTIFG) {
}
else if (UCB0STAT & UCSTPIFG) {
}
else if (UCB0STAT & UCNACKIFG) {
}
else if (UCB0STAT & UCALIFG) {
}
* 2. User could also exit from low power mode and continue with main
* program execution by using the following instruction before exiting
* this interrupt handler.
*
* __bic_SR_register_on_exit(LPMx_bits);
*/
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR_HOOK(void)
{
/* USER CODE START (section: USCI0RX_ISR_HOOK) */
if (UCB0STAT & UCSTTIFG) { // start condition interrupt (1 is pending)
i2c_cntr = 0; // transmission begins
UCB0STAT &= ~UCSTTIFG; // clear start condition int flag
} else if (UCB0STAT & UCSTPIFG) { // stop condition interrupt (1 is pending)
UCB0STAT &= ~UCSTPIFG; // clear stop condition int flag
} else if (UCB0STAT & UCNACKIFG) { // slave not acknowledge received data (if master)
UCB0STAT &= ~UCNACKIFG;
} else if (UCB0STAT & UCALIFG) { // two or more masters start trans. simultaneously
// master code
}
/* USER CODE END (section: USCI0RX_ISR_HOOK) */
}
/*
* ======== Timer0_A3 Interrupt Service Routine ========
*/
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR_HOOK(void)
{
/* USER CODE START (section: TIMER0_A0_ISR_HOOK) */
TA0CTL = virtual_TA0CTL;
TA0CCR0 = virtual_TA0CCR0;
/* USER CODE END (section: TIMER0_A0_ISR_HOOK) */
}
[ add comment ] | [ 0 trackbacks ] | permalink
[ add comment ] | [ 0 trackbacks ] | permalink
Revive FWbuilder
# yum install qt-devel qt-config
# yum install autoconf
# yum install automake
# yum install libtool
# yum install gcc-c++
# yum install libxml2-devel
# yum install libxslt-devel
* download fwbuilder wget https://github.com/UNINETT/fwbuilder/archive/master.zip
* unzip and go to extracted dir, change constructor call for QCoreApplication app(argc, argv); there is no false parameter in call any longer
# ./autogen.sh
# ./runqmake.sh
# make clean
# make all
edit "./src/ipt/ipt.cpp" 204L, 5258C
int main(int argc, char **argv)
{
// QCoreApplication app(argc, argv, false);
QCoreApplication app(argc, argv); <-- replace
edit "./src/pf/pf.cpp" 198L, 4973C
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv); // 3rd arg false deleted
edit "./src/ipf/ipf.cpp"
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv); // 3rd arg false deleted
edit "./src/ipfw/ipfw.cpp"
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
edit "./src/nxosacl/nxosacl.cpp" 193L, 4781C written
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv); // 3rd arg false deleted
edit "./src/pix/pix.cpp" 197L, 4857C written
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv); // 3rd arg false deleted
edit "./src/procurve_acl/procurve_acl.cpp" 193L, 4784C written
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv); // 3rd arg false deleted
--
compile
/usr/local/share/fwbuilder-5.2.0.3600/
/usr/local/bin/fwbuilder
[ add comment ] | [ 0 trackbacks ] | permalink | related link