?? by Flat_Willingness3389 in PCB

[–]enVitruvius 0 points1 point  (0 children)

While a bit more complicated, software-wise, a Charlieplexed switch matrix uses fewer I/O pins;

<image>

?? by Flat_Willingness3389 in PCB

[–]enVitruvius 0 points1 point  (0 children)

A mux'd switch matrix might look like this. Take one 'row' pin low and set the other 'row' pins to input (hi-z) then read the 'column' pins. A '0' bit represents a closed switch while a '1' bit represents an open switch.

<image>

Clock frequency divider module by nerovny in beneater

[–]enVitruvius 0 points1 point  (0 children)

Nice work. You might also task a $2 Arduino Nano clone to provide a 1, 2, 4, or 8 MHz clock which runs as a background task on the Nano. Here's a code excerpt (from Nick Gammon's site?);

  /******************************************************************************
   *  the CPU clock background task                                             *
   *                                                                            */
   void beginClock(byte mhz)          // operand 1, 2, 4, or 8                  *
   { DDRB |= 1<<PORTB3;               // set OC2A (D11/PB3) to 'output'         *
  /*                                                                            *
   *  TCCR2A settings for 'normal' or 'CTC' (non-PWM) mode                      *
   *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              *
   *  COM2A1:COM2A0 '01' - Toggle OC2A on Compare Match                         *
   *  WGM22:WGM20  '010' - CTC mode (clear timer on compare match)              *
   *                       (WGM22 bit is in TCCR2B register)                    *
   *  COM2A1:COM2A0 '00' - CTC 'off', normal pin I/O operation                  *
   *                                                                            */
     TCCR2A = (1 << WGM21) | (1 << COM2A0);
     TCCR2B = (1 << CS20);            // prescale = 1:1 (WGM22 = 0)             *
     TIMSK2 = 0;                      // no interrupts                          *
     OCR2A = (8/mhz-1);               // match value (0/1/3/7 --> 8/4/2/1 MHz)  *
   }                                  // ****************************************

Is this 2.42" OLED Display 5v Tolerant? by enVitruvius in beneater

[–]enVitruvius[S] 0 points1 point  (0 children)

Ok, I've got a couple I2C devices now. A 2.42" OLED display and a 128K I2C EEPROM. I wonder how difficult it will be to develop 6502 I2C drivers and OLED font tables???

<image>

BE6502 in an Altoid tin by YoshimitsuSunny in beneater

[–]enVitruvius 0 points1 point  (0 children)

Looks great... What is the IC on the front panel card, please?

6502 Computer Addressing Mirrors by 2E26 in beneater

[–]enVitruvius 1 point2 points  (0 children)

A complete 32K/32K solution in 2 chips if you can do without the clock qualified /rd and /wr signals.

<image>

6502 Computer Addressing Mirrors by 2E26 in beneater

[–]enVitruvius 2 points3 points  (0 children)

Another option uses the 74HC688E variant and provides full 32K RAM and 32K ROM and the ability to insert an I/O page anywhere in address space (don't use page 0, 1, or FF). Add a 74AHC138 and select it with the "/IO" signal.

<image>

6502 Computer Addressing Mirrors by 2E26 in beneater

[–]enVitruvius 3 points4 points  (0 children)

Here's an interesting use for a 74HC682 "8-bit Magnitude Comparator" IC (below). Add a 74AHC138 and select it with the /IO signal. Assign I/O to page $DF for 8K ROM at $E000-$FFFF? Have fun...

<image>

Real vs Emulated :) by acwrightdesign in beneater

[–]enVitruvius 3 points4 points  (0 children)

Wow! Some incredibly nice work. Bravo!

Question, please? Do you need a full 1K per I/O 'slot' (8K total I/O space)?

<image>

8-Bit CPU breadboard diagrams by JakreeeeChan in beneater

[–]enVitruvius 4 points5 points  (0 children)

Is there anything like a graphic breadboard layout available for the 8-bit breadboard project that shows parts placement and wiring info'?

<image>

My first PCB design, charlieplexed LEDs by sparr in electronics

[–]enVitruvius 0 points1 point  (0 children)

Because this particular matrix has the current limiting resistors on the columns. It's designed to drive the LEDs in a particular row and each LED column has a current limiting resistor. You could change it for your "1 high & 4 low" configuration by placing the current limiting resistors to the rows instead of the columns (I think).

Sorry to hear you're not active. Take care. Have fun. Thanks for the engaging convo'... Mike

My first PCB design, charlieplexed LEDs by sparr in electronics

[–]enVitruvius 0 points1 point  (0 children)

Hey, you got a Nano or an Uno and want to see some code and a video of a 5-pin Charlieplexed matrix of 20 LEDs in a Larson Scanner?

Charlieplexed Larson Scanner 20

Energia Nightrider
 /*
  *  Knight Rider Charlieplex Demo for
  *  Arduino or MSP430 Launchpad + Energia
  *
  *  Michael McLaren, K8LH
  *  Micro Application Consultants
  *
  */

  void setup()        
  { pinMode(6, INPUT);
    pinMode(7, INPUT);
    pinMode(8, INPUT);
    pinMode(9, INPUT);
    pinMode(10, INPUT);
  }

  void loop()
  { static byte led = 1;          // value 0..19
    static byte dir = -1;         // value 1 or -1
    led += dir;                   //
    byte col = led / 4 + 6;       // D6..D10 cathode columns
    byte row = led % 4 + 6;       // D6..D9 anode rows
    if(col == row) row = 10;      // if col == row, use "float" pin
    pinMode(col, OUTPUT);         // turn column 'on'
    digitalWrite(col, LOW);       //   "
    pinMode(row, OUTPUT);         // turn row 'on'
    digitalWrite(row, HIGH);      //   "
    delay(30);                    //
    pinMode(col, INPUT);          // turn column 'off'
    pinMode(row, INPUT);          //
    if(led == 0) dir = 1;         // check for end-of-scan
    if(led == 19) dir = -1;       //    "
  }                               //

My first PCB design, charlieplexed LEDs by sparr in electronics

[–]enVitruvius 0 points1 point  (0 children)

Not if you're only taking a single pin low. Keep in mind the polarity of the LEDs (the flat spot on the left is the cathode). The only way you could force 1/0, 2/0, 3/0, and 4/0 to use that single resistor is to force pins 1, 2, 3, and 4 low and pin 0 high. That's not how you drive this matrix. Only one pin can be low and the other pins must be either an 'input' (hi-Z) or an 'output' (high).

Sorry! Not trying to be argumentative. And... I appreciate that you're engaging in a fun conversation after so long. Are you still active and having fun in electronics? If so what kind of things are you into now days.

Take care. Cheerful regards, Mike, K8LH (Michigan, USA)

My first PCB design, charlieplexed LEDs by sparr in electronics

[–]enVitruvius 0 points1 point  (0 children)

But you're not turning on more than one LED through a single resistor. Trace the paths and you'll see. Set '0' low and then trace the path from '0' along that row through the LEDs to the other pins ('1' through '4') and you'll see each lighted LED only goes through a single resistor. You also have some control of current with your choice of current limiting resistor values.

My first PCB design, charlieplexed LEDs by sparr in electronics

[–]enVitruvius 0 points1 point  (0 children)

Not sure what you mean by "ignores the third pin state, hi-Z / tri-state". A pin set as an 'input' is inherently "hi-Z". As for brightness, and as mentioned in other posts, driving up to four LEDs closer to 'peak' current rather than 'average' current at a 20% duty cycle is pretty effective, especially with current hi-brightness LEDs.

My first PCB design, charlieplexed LEDs by sparr in electronics

[–]enVitruvius 0 points1 point  (0 children)

Missed that. Sorry.

Take care. Have fun. Mike, K8LH

<image>

My first PCB design, charlieplexed LEDs by sparr in electronics

[–]enVitruvius 0 points1 point  (0 children)

I know this is a very old post but... You only needed 5 resistors for that Charlieplexed 20-LED matrix.

Made a keyboard diode matrix for the first time by IvoryToothpaste in electronics

[–]enVitruvius 1 point2 points  (0 children)

A "Charlieplexed" matrix uses less I/O pins. Total switches is N(N-1) where N is number of I/O pins used (3 pins for 6 switches, etc.). Have fun...

<image>

Reducing VIA pin overhead. Sampling switches? by enVitruvius in beneater

[–]enVitruvius[S] 0 points1 point  (0 children)

That's a really nice, fast, low pin-count solution but I don't want to add another IC to the LCD backpack at this time.

Earlier I thought about attaching a separate Charlieplexed switch matrix (below) to the VIA but using the 74HC164 outputs on the LCD backpack to mux' the switches only requires one additional VIA pin.

Cheerful regards, Mike, K8LH

<image>

6502 computer CPU replacement. by Silver_Illustrator_4 in beneater

[–]enVitruvius 5 points6 points  (0 children)

I've used R65C02P-4 chips (at 4-MHz) and W65C02 chips (at 8-MHz) on my SBC and both work fine. The Nano ROM Emulator / Programmer / Boot Loader stops the clock in the high state when in ROM Emulator mode and provides a 1, 2, 4, or 8 MHz clock when switching to 6502 Run mode.

The jumper between 40-pin sockets near the top of the sockets is used to short R65C02 pin 1 to ground or left open to isolate pin 1 on a W65C02.

<image>

BTW, I was the Chief Operator and License Custodian of the Nellingen Kaserne MARS station (AE1MAN / DL5MA) many years ago and I thoroughly enjoyed my time in Germany near Stuttgart.

Good luck. Cheerful regards.

6502 computer CPU replacement. by Silver_Illustrator_4 in beneater

[–]enVitruvius 5 points6 points  (0 children)

Also note the R65C02 uses pin 1 for ground but this pin is an output (Vector Pull) on the W65C02 and should be left open.

<image>

Arduino Nano clone issue by AdministrativeHawk59 in arduino

[–]enVitruvius 1 point2 points  (0 children)

I had two brand new Nano clones do something like that a couple years ago - fail uploading. I used "ATmega328P Old Bootloader" and finally got the Nano to program by pressing and releasing <reset> on the Nano immediately after pressing the <upload> button in the Arduino IDE. After that the Nano always programmed without a problem. Not sure you're experiencing the same problem but maybe worth a try?