Skip to content

Commit

Permalink
Merge pull request #1 from gaz20004/Develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
gaz20004 authored Oct 21, 2024
2 parents 8f73a1a + 03c8b6d commit 1bfc243
Show file tree
Hide file tree
Showing 8 changed files with 3,567 additions and 46 deletions.
306 changes: 306 additions & 0 deletions SDPMcu/Core/Inc/cJSON.h

Large diffs are not rendered by default.

3,164 changes: 3,164 additions & 0 deletions SDPMcu/Core/Src/cJSON.c

Large diffs are not rendered by default.

Binary file modified SDPPython/__pycache__/chip.cpython-312.pyc
Binary file not shown.
Binary file modified SDPPython/__pycache__/chips.cpython-312.pyc
Binary file not shown.
29 changes: 27 additions & 2 deletions SDPPython/chip.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import json
import serial
from functions import *
class IC74Series:
def __init__(self, chip_number, logic_type,n,TruthTable=[],pin_count=14, description=None, pin_config=None):
"""
Expand Down Expand Up @@ -81,7 +80,7 @@ def pin_configuration_json(self):

def send_pin_configuration(self, uart_port, baudrate=250000):
"""
Sends the pin configuration as a JSON string over UART.{"chip_number": "00", "logic_type": "NAND", "pin_count": 14, "description": "Quad 2-input NAND gate", "pins": {"1": "input", "2": "input", "3": "output", "4": "input", "5": "input", "6": "output", "7": "ground", "8": "output", "9": "input", "10": "input", "11": "output", "12": "input", "13": "input", "14": "VCC"}}
Sends the pin configuration as a JSON string over UART.
:param uart_port: The UART port (e.g., 'COM3' on Windows or '/dev/ttyUSB0' on Linux).
:param baudrate: The baudrate for UART communication.
Expand All @@ -96,9 +95,35 @@ def send_pin_configuration(self, uart_port, baudrate=250000):
print(f"Sent JSON data over UART: {json_data}")
def set_truth_table(self,outputs):
self.TruthTable=binary_number_list(self.inputn,outputs)

def print_truth_tale(self):
print(f"Chip: {self.chip_number}")
print(f"Logic type: {self.logic_type}")
print("INPUT BITS|OUTPUT BITS")
for entry in self.TruthTable:
print(f" {entry[0]} {entry[1]}")

def binary_number_list(bits,outputs):
list = []
for number in range(0,(2**bits)):
bitslist = separate_bits(number,bits)
list.append([bitslist,outputs[number]])
return list

def separate_bits(num, n):
bits = [(num >> i) & 1 for i in range(n)] # Extract each bit
return bits[::-1] # Return in correct order

def find_input_pins(ic):
n = ic.inputn

inputpins = []
temp = []
for pin in range(1,ic.pin_count+1):
print("PIN NUMBER IS: ", pin, ic.get_pin(pin))
if(ic.get_pin(pin) == "input"):
temp.append(pin)
if len(temp) == n:
inputpins.append(temp)
temp=[]
return inputpins
53 changes: 52 additions & 1 deletion SDPPython/chips.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,55 @@
ic_7400.set_pin(12, "input")
ic_7400.set_pin(13, "input")
ic_7400.set_pin(14, "VCC")
ic_7400.set_truth_table([1,1,1,0])
ic_7400.set_truth_table([1,1,1,0])

ic_7408 = IC74Series(chip_number="08", logic_type="AND",n = 2,description="Quad 2-input AND gate")
ic_7408.set_pin(1, "input")
ic_7408.set_pin(2, "input")
ic_7408.set_pin(3, "output")
ic_7408.set_pin(4, "input")
ic_7408.set_pin(5, "input")
ic_7408.set_pin(6, "output")
ic_7408.set_pin(7, "ground")
ic_7408.set_pin(8, "output")
ic_7408.set_pin(9, "input")
ic_7408.set_pin(10, "input")
ic_7408.set_pin(11, "output")
ic_7408.set_pin(12, "input")
ic_7408.set_pin(13, "input")
ic_7408.set_pin(14, "VCC")
ic_7408.set_truth_table([0,0,0,1])

ic_7432 = IC74Series(chip_number="32", logic_type="OR",n = 2,description="Quad 2-input OR gate")
ic_7432.set_pin(1, "input")
ic_7432.set_pin(2, "input")
ic_7432.set_pin(3, "output")
ic_7432.set_pin(4, "input")
ic_7432.set_pin(5, "input")
ic_7432.set_pin(6, "output")
ic_7432.set_pin(7, "ground")
ic_7432.set_pin(8, "output")
ic_7432.set_pin(9, "input")
ic_7432.set_pin(10, "input")
ic_7432.set_pin(11, "output")
ic_7432.set_pin(12, "input")
ic_7432.set_pin(13, "input")
ic_7432.set_pin(14, "VCC")
ic_7432.set_truth_table([0,1,1,1])

ic_7486 = IC74Series(chip_number="86", logic_type="XOR",n = 2,description="Quad 2-input XOR gate")
ic_7486.set_pin(1, "input")
ic_7486.set_pin(2, "input")
ic_7486.set_pin(3, "output")
ic_7486.set_pin(4, "input")
ic_7486.set_pin(5, "input")
ic_7486.set_pin(6, "output")
ic_7486.set_pin(7, "ground")
ic_7486.set_pin(8, "output")
ic_7486.set_pin(9, "input")
ic_7486.set_pin(10, "input")
ic_7486.set_pin(11, "output")
ic_7486.set_pin(12, "input")
ic_7486.set_pin(13, "input")
ic_7486.set_pin(14, "VCC")
ic_7486.set_truth_table([0,1,1,0])
25 changes: 0 additions & 25 deletions SDPPython/functions.py

This file was deleted.

36 changes: 18 additions & 18 deletions SDPPython/serialcommunication.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import serial
import time
import json
from chip import IC74Series
from chip import *
from chips import ic_7400
from functions import find_input_pins,separate_bits
ser = serial.Serial('COM5', 9600)


Expand All @@ -12,30 +11,31 @@

# Sending data
message = ic_7400.pin_configuration_json()
ser.write((message+"\n").encode('utf-8'))
ser.write((message).encode('utf-8'))
print(f'Sent: {message}')



time.sleep(.5)
time.sleep(.45)



inputpins = find_input_pins(ic_7400)
# inputpins = find_input_pins(ic_7400)

for number in range(0, (2 ** ic_7400.inputn)):
bits = separate_bits(number,ic_7400.inputn)
print(bits)
for inputs in inputpins:
print(f"Working on pins: {inputs}")
message1 = json.dumps({inputs[1]:bits[0]})
ser.write((message1+"\n").encode('utf-8'))
print(f'Sent: {message1}')
# for number in range(0, (2 ** ic_7400.inputn)):
# bits = separate_bits(number,ic_7400.inputn)
# print(f"working on number {number} bits:{bits}")
# for inputs in inputpins:
# print(f"Working on pins: {inputs}")
# message1 = json.dumps({inputs[1]:bits[0]})
# ser.write(message1.encode('utf-8'))
# print(f'Sent: {message1}')


message2 = json.dumps({inputs[0]:bits[1]})
ser.write((message2+"\n").encode('utf-8'))
print(f'Sent: {message2}')
time.sleep(0.02)

# message2 = json.dumps({inputs[0]:bits[1]})
# ser.write(message2.encode('utf-8'))
# print(f'Sent: {message2}')

# time.sleep(0.1)
# ser.write(("\n").encode('utf-8'))

0 comments on commit 1bfc243

Please sign in to comment.