From 811bde32a0c2d637e7a93efaa907d451237a7a43 Mon Sep 17 00:00:00 2001 From: Fisch Date: Tue, 21 Sep 2021 07:58:25 +0200 Subject: [PATCH] start own controller implementation --- flipshifter/.gitignore | 1 + flipshifter/.vscode/c_cpp_properties.json | 123 ++++++++++++++++++ flipshifter/.vscode/extensions.json | 7 + flipshifter/.vscode/launch.json | 34 +++++ flipshifter/include/README | 39 ++++++ flipshifter/lib/README | 46 +++++++ flipshifter/platformio.ini | 17 +++ flipshifter/src/main.cpp | 111 ++++++++++++++++ flipshifter/test/README | 11 ++ reverseengeneering/annax37623/annax37623.sch | 115 +++++++++------- ...rol_initialize_timingdiagram_wavedrom.json | 15 ++- ...l_renderColumn_timingdiagram_wavedrom.json | 21 +-- 12 files changed, 476 insertions(+), 64 deletions(-) create mode 100644 flipshifter/.gitignore create mode 100644 flipshifter/.vscode/c_cpp_properties.json create mode 100644 flipshifter/.vscode/extensions.json create mode 100644 flipshifter/.vscode/launch.json create mode 100644 flipshifter/include/README create mode 100644 flipshifter/lib/README create mode 100644 flipshifter/platformio.ini create mode 100644 flipshifter/src/main.cpp create mode 100644 flipshifter/test/README diff --git a/flipshifter/.gitignore b/flipshifter/.gitignore new file mode 100644 index 0000000..03f4a3c --- /dev/null +++ b/flipshifter/.gitignore @@ -0,0 +1 @@ +.pio diff --git a/flipshifter/.vscode/c_cpp_properties.json b/flipshifter/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..2dc75c2 --- /dev/null +++ b/flipshifter/.vscode/c_cpp_properties.json @@ -0,0 +1,123 @@ +// +// !!! WARNING !!! AUTO-GENERATED FILE! +// PLEASE DO NOT MODIFY IT AND USE "platformio.ini": +// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags +// +{ + "configurations": [ + { + "name": "PlatformIO", + "includePath": [ + "/media/fisch/HDD/Projects/flipdot/flipdot-eigenesrepo/flipshifter/include", + "/media/fisch/HDD/Projects/flipdot/flipdot-eigenesrepo/flipshifter/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/cores/esp8266", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/variants/d1_mini", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SdFat/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/LittleFS/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SDFS/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SPI", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Wire", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src", + "/home/fisch/.platformio/packages/tool-unity", + "" + ], + "browse": { + "limitSymbolsToIncludedHeaders": true, + "path": [ + "/media/fisch/HDD/Projects/flipdot/flipdot-eigenesrepo/flipshifter/include", + "/media/fisch/HDD/Projects/flipdot/flipdot-eigenesrepo/flipshifter/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/cores/esp8266", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/variants/d1_mini", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SdFat/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/LittleFS/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SDFS/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SPI", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker/src", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/Wire", + "/home/fisch/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src", + "/home/fisch/.platformio/packages/tool-unity", + "" + ] + }, + "defines": [ + "PLATFORMIO=50200", + "ESP8266", + "ARDUINO_ARCH_ESP8266", + "ARDUINO_ESP8266_WEMOS_D1MINI", + "F_CPU=80000000L", + "__ets__", + "ICACHE_FLASH", + "ARDUINO=10805", + "ARDUINO_BOARD=\"PLATFORMIO_D1_MINI\"", + "FLASHMODE_DIO", + "LWIP_OPEN_SRC", + "NONOSDK22x_190703=1", + "TCP_MSS=536", + "LWIP_FEATURES=1", + "LWIP_IPV6=0", + "VTABLES_IN_FLASH", + "" + ], + "cStandard": "c99", + "cppStandard": "c++11", + "compilerPath": "/home/fisch/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-gcc", + "compilerArgs": [ + "-mlongcalls", + "-mtext-section-literals", + "" + ] + } + ], + "version": 4 +} diff --git a/flipshifter/.vscode/extensions.json b/flipshifter/.vscode/extensions.json new file mode 100644 index 0000000..0f0d740 --- /dev/null +++ b/flipshifter/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ] +} diff --git a/flipshifter/.vscode/launch.json b/flipshifter/.vscode/launch.json new file mode 100644 index 0000000..d09a0af --- /dev/null +++ b/flipshifter/.vscode/launch.json @@ -0,0 +1,34 @@ +// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY +// +// PIO Unified Debugger +// +// Documentation: https://docs.platformio.org/page/plus/debugging.html +// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html + +{ + "version": "0.2.0", + "configurations": [ + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug", + "executable": "/media/fisch/HDD/Projects/flipdot/flipdot-eigenesrepo/flipshifter/.pio/build/d1_mini/firmware.elf", + "projectEnvName": "d1_mini", + "toolchainBinDir": "/home/fisch/.platformio/packages/toolchain-xtensa/bin", + "internalConsoleOptions": "openOnSessionStart", + "preLaunchTask": { + "type": "PlatformIO", + "task": "Pre-Debug" + } + }, + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug (skip Pre-Debug)", + "executable": "/media/fisch/HDD/Projects/flipdot/flipdot-eigenesrepo/flipshifter/.pio/build/d1_mini/firmware.elf", + "projectEnvName": "d1_mini", + "toolchainBinDir": "/home/fisch/.platformio/packages/toolchain-xtensa/bin", + "internalConsoleOptions": "openOnSessionStart" + } + ] +} diff --git a/flipshifter/include/README b/flipshifter/include/README new file mode 100644 index 0000000..194dcd4 --- /dev/null +++ b/flipshifter/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/flipshifter/lib/README b/flipshifter/lib/README new file mode 100644 index 0000000..6debab1 --- /dev/null +++ b/flipshifter/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/flipshifter/platformio.ini b/flipshifter/platformio.ini new file mode 100644 index 0000000..d7ea76b --- /dev/null +++ b/flipshifter/platformio.ini @@ -0,0 +1,17 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:d1_mini] +platform = espressif8266 +board = d1_mini +framework = arduino + + +monitor_speed = 115200 \ No newline at end of file diff --git a/flipshifter/src/main.cpp b/flipshifter/src/main.cpp new file mode 100644 index 0000000..86eb1f1 --- /dev/null +++ b/flipshifter/src/main.cpp @@ -0,0 +1,111 @@ +#include + +/* +D7 - Ser (data) +D5 - clock +D1 - _OE +D2 - latch +D3 - _clear +*/ + +#define PIN_DATA D7 +#define PIN_CLK D5 +#define PIN_OE D1 //active low +#define PIN_LATCH D2 +#define PIN_CLEAR D4 //active low + +#define NUMPANELS 1 +uint16_t dataRow = 0; +uint8_t dataControl = 0; +uint8_t dataColumn[NUMPANELS*7]; //raw data for shift register, 7bytes per panel (last 6 bits arent used) + +void sr_clear(); +void shiftOutSlow(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); + +unsigned long loopmillis=0; +unsigned long last_update=0; +#define UPDATE_INTERVAL 1000 + +void setup() { + pinMode(PIN_DATA, OUTPUT); + pinMode(PIN_CLK, OUTPUT); + pinMode(PIN_OE, OUTPUT); + pinMode(PIN_LATCH, OUTPUT); + pinMode(PIN_CLEAR, OUTPUT); + + digitalWrite(PIN_OE, HIGH); + digitalWrite(PIN_LATCH, LOW); + sr_clear(); + + Serial.begin(115200); +} + +int countz=0; + +void loop() { + loopmillis = millis(); + if (loopmillis > last_update + UPDATE_INTERVAL) + { + + dataControl=0; + #define CONTROL_LED 1 + #define CONTROL_CLEAR 128 //active low + + uint8_t selectedrow=0; + dataRow=2^selectedrow; //test select one row + + + if (countz%2==0) { + Serial.println("0"); + }else{ + dataControl=CONTROL_LED; + Serial.println("1"); + + } + + //first shifted out bytes are farthest away in the line + + shiftOutSlow(PIN_DATA, PIN_CLK, MSBFIRST, dataControl); //Control. Bit 1 is Qa + + shiftOutSlow(PIN_DATA, PIN_CLK, MSBFIRST, dataControl); //Control. Bit 1 is Qa + shiftOutSlow(PIN_DATA, PIN_CLK, MSBFIRST, (uint8_t)(dataRow>>8)); //High Byte + shiftOutSlow(PIN_DATA, PIN_CLK, MSBFIRST, (uint8_t)dataRow); //Low Byte + + digitalWrite(PIN_LATCH, HIGH); //Latch data + delayMicroseconds(1000); + digitalWrite(PIN_LATCH, LOW); + + digitalWrite(PIN_OE, LOW); //activate output + last_update=loopmillis; + + Serial.print("miau="); + Serial.println(countz); + countz++; + } + + +} + +void sr_clear() { + digitalWrite(PIN_CLEAR, LOW); + delayMicroseconds(1000); + digitalWrite(PIN_CLEAR, HIGH); +} + +void shiftOutSlow(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + delayMicroseconds(100); + digitalWrite(clockPin, HIGH); + delayMicroseconds(100); + digitalWrite(clockPin, LOW); + delayMicroseconds(100); + } +} \ No newline at end of file diff --git a/flipshifter/test/README b/flipshifter/test/README new file mode 100644 index 0000000..b94d089 --- /dev/null +++ b/flipshifter/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Unit Testing and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/page/plus/unit-testing.html diff --git a/reverseengeneering/annax37623/annax37623.sch b/reverseengeneering/annax37623/annax37623.sch index f89fea9..d58eab6 100644 --- a/reverseengeneering/annax37623/annax37623.sch +++ b/reverseengeneering/annax37623/annax37623.sch @@ -1,6 +1,5 @@ EESchema Schematic File Version 4 -LIBS:annax37623-cache -EELAYER 26 0 +EELAYER 30 0 EELAYER END $Descr A1 33110 23386 encoding utf-8 @@ -842,34 +841,34 @@ $EndComp $Comp L Device:CP CP1 U 1 1 5E2454CD -P 1650 4250 -F 0 "CP1" H 1768 4296 50 0000 L CNN -F 1 "1u" H 1768 4205 50 0000 L CNN -F 2 "" H 1688 4100 50 0001 C CNN -F 3 "~" H 1650 4250 50 0001 C CNN - 1 1650 4250 +P 2700 4400 +F 0 "CP1" H 2818 4446 50 0000 L CNN +F 1 "1u" H 2818 4355 50 0000 L CNN +F 2 "" H 2738 4250 50 0001 C CNN +F 3 "~" H 2700 4400 50 0001 C CNN + 1 2700 4400 1 0 0 -1 $EndComp $Comp L Device:CP CP2 U 1 1 5E24587D -P 650 4300 -F 0 "CP2" H 768 4346 50 0000 L CNN -F 1 "1u" H 768 4255 50 0000 L CNN -F 2 "" H 688 4150 50 0001 C CNN -F 3 "~" H 650 4300 50 0001 C CNN - 1 650 4300 +P 1700 4450 +F 0 "CP2" H 1818 4496 50 0000 L CNN +F 1 "1u" H 1818 4405 50 0000 L CNN +F 2 "" H 1738 4300 50 0001 C CNN +F 3 "~" H 1700 4450 50 0001 C CNN + 1 1700 4450 1 0 0 -1 $EndComp $Comp L Regulator_Linear:LM7812_TO220 U1 U 1 1 5E246055 -P 1200 4100 -F 0 "U1" H 1200 4342 50 0000 C CNN -F 1 "LM7812_TO220" H 1200 4251 50 0000 C CNN -F 2 "Package_TO_SOT_THT:TO-220-3_Vertical" H 1200 4325 50 0001 C CIN -F 3 "http://www.fairchildsemi.com/ds/LM/LM7805.pdf" H 1200 4050 50 0001 C CNN - 1 1200 4100 +P 2250 4250 +F 0 "U1" H 2250 4492 50 0000 C CNN +F 1 "LM7812_TO220" H 2250 4401 50 0000 C CNN +F 2 "Package_TO_SOT_THT:TO-220-3_Vertical" H 2250 4475 50 0001 C CIN +F 3 "http://www.fairchildsemi.com/ds/LM/LM7805.pdf" H 2250 4200 50 0001 C CNN + 1 2250 4250 1 0 0 -1 $EndComp $Comp @@ -930,32 +929,32 @@ $EndComp $Comp L power:VSS #PWR02 U 1 1 5E256144 -P 1200 4700 -F 0 "#PWR02" H 1200 4550 50 0001 C CNN -F 1 "VSS" H 1218 4873 50 0000 C CNN -F 2 "" H 1200 4700 50 0001 C CNN -F 3 "" H 1200 4700 50 0001 C CNN - 1 1200 4700 +P 2250 4850 +F 0 "#PWR02" H 2250 4700 50 0001 C CNN +F 1 "VSS" H 2268 5023 50 0000 C CNN +F 2 "" H 2250 4850 50 0001 C CNN +F 3 "" H 2250 4850 50 0001 C CNN + 1 2250 4850 -1 0 0 1 $EndComp $Comp L power:VDD #PWR01 U 1 1 5E256505 -P 1550 4100 -F 0 "#PWR01" H 1550 3950 50 0001 C CNN -F 1 "VDD" H 1567 4273 50 0000 C CNN -F 2 "" H 1550 4100 50 0001 C CNN -F 3 "" H 1550 4100 50 0001 C CNN - 1 1550 4100 +P 2600 4250 +F 0 "#PWR01" H 2600 4100 50 0001 C CNN +F 1 "VDD" H 2617 4423 50 0000 C CNN +F 2 "" H 2600 4250 50 0001 C CNN +F 3 "" H 2600 4250 50 0001 C CNN + 1 2600 4250 1 0 0 -1 $EndComp Wire Wire Line - 1200 4700 1200 4500 + 2250 4850 2250 4650 Wire Wire Line - 1200 4500 1650 4500 -Connection ~ 1200 4500 + 2250 4650 2700 4650 +Connection ~ 2250 4650 Wire Wire Line - 1200 4500 1200 4400 + 2250 4650 2250 4550 Wire Wire Line 15050 2300 14650 2300 Wire Wire Line @@ -1043,11 +1042,11 @@ Wire Wire Line Wire Wire Line 2400 2800 3650 2800 Connection ~ 3650 2800 -Connection ~ 1550 4100 +Connection ~ 2600 4250 Wire Wire Line - 1550 4100 1500 4100 + 2600 4250 2550 4250 Wire Wire Line - 1550 4100 1650 4100 + 2600 4250 2700 4250 $Comp L power:VDD #PWR013 U 1 1 5E2A362C @@ -1060,13 +1059,13 @@ F 3 "" H 3650 2400 50 0001 C CNN 1 0 0 -1 $EndComp Wire Wire Line - 1650 4400 1650 4500 + 2700 4550 2700 4650 Wire Wire Line - 650 4150 650 4100 + 1700 4300 1700 4250 Wire Wire Line - 1200 4500 650 4500 + 2250 4650 1700 4650 Wire Wire Line - 650 4500 650 4450 + 1700 4650 1700 4600 Wire Wire Line 6750 4550 6750 4900 Wire Wire Line @@ -1110,8 +1109,8 @@ $Comp L 4xxx_IEEE:4015 USR1 U 2 1 5E239743 P 11700 3050 -F 0 "USR1" H 11700 3506 50 0000 C CNN -F 1 "4015" H 11700 3415 50 0000 C CNN +F 0 "USR1" H 11450 3500 50 0000 C CNN +F 1 "4015" H 11550 3400 50 0000 C CNN F 2 "" H 11700 3050 50 0001 C CNN F 3 "" H 11700 3050 50 0001 C CNN 2 11700 3050 @@ -3880,10 +3879,10 @@ Wire Wire Line 1700 2700 1700 2500 Text GLabel 4250 2650 0 50 Input ~ 0 Vin -Text GLabel 650 4100 0 50 Input ~ 0 +Text GLabel 1700 4250 0 50 Input ~ 0 Vin Wire Wire Line - 650 4100 900 4100 + 1700 4250 1950 4250 Wire Wire Line 4350 2700 4350 3200 Wire Wire Line @@ -3914,4 +3913,26 @@ Wire Wire Line 4950 2700 7200 2700 Text Notes 3500 3600 2 50 ~ 0 GND +$Comp +L power:VSS #PWR? +U 1 1 618094A7 +P 11700 3250 +F 0 "#PWR?" H 11700 3100 50 0001 C CNN +F 1 "VSS" H 11718 3423 50 0000 C CNN +F 2 "" H 11700 3250 50 0001 C CNN +F 3 "" H 11700 3250 50 0001 C CNN + 1 11700 3250 + -1 0 0 1 +$EndComp +$Comp +L power:VDD #PWR? +U 1 1 6180A594 +P 11700 2800 +F 0 "#PWR?" H 11700 2650 50 0001 C CNN +F 1 "VDD" H 11717 2973 50 0000 C CNN +F 2 "" H 11700 2800 50 0001 C CNN +F 3 "" H 11700 2800 50 0001 C CNN + 1 11700 2800 + 1 0 0 -1 +$EndComp $EndSCHEMATC diff --git a/reverseengeneering/control_initialize_timingdiagram_wavedrom.json b/reverseengeneering/control_initialize_timingdiagram_wavedrom.json index 60881b6..43dafa2 100644 --- a/reverseengeneering/control_initialize_timingdiagram_wavedrom.json +++ b/reverseengeneering/control_initialize_timingdiagram_wavedrom.json @@ -1,15 +1,16 @@ {signal: [ - {name: 'clear', wave: '0.....1......0..0.0..1..1.1..0.'}, //controlBuffer - {name: 'clock', wave: '0..1..1......1..1.1..0..1.1..1.'}, //controlBuffer - {name: 'reset', wave: '0.....0......0..1.1..1..1.1..1.'}, //controlBuffer - {name: 'select', wave: '0..1..1......1..1.0..0..0.1..1.'}, //controlBuffer, selectBoard() - {name: '~Y', wave: 'x2.2....2..2...................', data: ['0','0','65535','0',]}, //columnBuffer + {name: '~clear', wave: '0.....1......0..0.0..1..1.1..0.'}, //controlBuffer + {name: '~clock', wave: '0..1..1......1..1.1..0..1.1..1.'}, //controlBuffer + {name: '~reset', wave: '0.....0......0..1.1..1..1.1..1.'}, //controlBuffer + {name: '~select', wave: '0..1..1......1..1.0..0..0.1..1.'}, //controlBuffer, selectBoard() + {name: 'Y', wave: 'x2.2....2..2...................', data: ['0','0','65535','0',]}, //columnBuffer {name: '~Shift_SCL', wave: '01.............................'}, //high after init {name: '~Shift_OE', wave: '01..0..........................'}, {name: 'Shift_RCK', wave: '01010.1010.1010.1010.10.1010.10', - node: '...a..b....c....d.e..f..g.h..i.'}, //pulses high after flushRegisters(). flushregisters writes controlBuffer and columnBuffer to output + node: '...a..b....c.z..d.e..f..g.h..i.'}, //pulses high after flushRegisters(). flushregisters writes controlBuffer and columnBuffer to output ], - config: { skin: 'narrow'} + config: { skin: 'default'}, + edge : ['a->b 30 ms', 'b->c 200 us', 'z->d 100 us', 'e->f 200 us', 'f->g 20 us', 'h->i 30 us'] } \ No newline at end of file diff --git a/reverseengeneering/control_renderColumn_timingdiagram_wavedrom.json b/reverseengeneering/control_renderColumn_timingdiagram_wavedrom.json index 37f7105..61d632b 100644 --- a/reverseengeneering/control_renderColumn_timingdiagram_wavedrom.json +++ b/reverseengeneering/control_renderColumn_timingdiagram_wavedrom.json @@ -1,15 +1,16 @@ {signal: [ //for each of the 25 columns - {name: 'clear', wave: 'x1..1..1......0..1..1..0.'}, //controlBuffer - {name: 'clock', wave: 'x1..0..1......1..0..1..1.'}, //controlBuffer - {name: 'reset', wave: 'x1..1..1......1..1..1..1.'}, //controlBuffer - {name: 'select', wave: 'x1..1..1......1..1..1..1.'}, //controlBuffer, selectBoard() - {name: '~Y', wave: '2........2..2............', data: ['0','ColumnX','0']}, //columnBuffer - {name: '~Shift_SCL', wave: 'x........................'}, //high after init - {name: '~Shift_OE', wave: 'x........................'}, - {name: 'Shift_RCK', wave: 'x10.10.1010.1010.10.10.10', - node: '.j..k..l.m..n.o..p..q..r.'}, //pulses high after flushRegisters(). flushregisters writes controlBuffer and columnBuffer to output + {name: '~clear', wave: 'x.1..1..1......0..1..1..0.'}, //controlBuffer + {name: '~clock', wave: 'x.1..0..1......1..0..1..1.'}, //controlBuffer + {name: '~reset', wave: 'x.1..1..1......1..1..1..1.'}, //controlBuffer + {name: '~select', wave: 'x.1..1..1......1..1..1..1.'}, //controlBuffer, selectBoard() + {name: 'Y', wave: '2.........2..2............', data: ['0','ColumnX','0']}, //columnBuffer + {name: '~Shift_SCL', wave: 'x.........................'}, //high after init + {name: '~Shift_OE', wave: 'x.........................'}, + {name: 'Shift_RCK', wave: 'x.10.10.1010.1010.10.10.10', + node: 'i.j..k..l.m..n.o..p..q..r.'}, //pulses high after flushRegisters(). flushregisters writes controlBuffer and columnBuffer to output ], - config: { skin: 'narrow'} + config: { skin: 'default'}, + edge : ['i->j 2 ms', 'j->k 200 us', 'k->l 20 us', 'm->n 2 ms', 'o->p 200 us', 'p->q 10 us', 'q->r 40 us'] } \ No newline at end of file