Gut, hier tut grad das der Ausdruck irgendwie nicht bei diesen Dingen. Immer wenn alle Eingangs variablen aus sind, ist die ausgangsvariable auch aus. Das soll eigentlich nicht so und gucken wir uns das nachher an und was stimmt noch nicht ach ja irgendwas stimmt mit der Unterbrechung nicht, müssen wir angucken ach ja, die Beiträge zusammenfassen wäre ne gute Sache Beiträge zusammenfassen und mit dem Basic. Das muss ich mir erst mal angucken, wie die Sprache an sich aussieht. Was ist dazu zu bedenken gibt und ja dann halt das Zeug einfach weitermachen wie bisher auch. Was fehlt noch jetzt hier ach mit dem GAL vielleicht mal gucken oder so so

Gut kleine Debug Aufgabe...

Erstens: wenn alle aus sind sind alle aus, kann nicht sein definitiv ein Fehler

Zweitens: led vertauscht,

x2,x1,x0
Hier ist wäre Vertauschung möglich...

jetzt weiter...

jetzt weiter...

gut, ich tue jetzt folgendes: ich gehe noch mal einkaeufe, das zeug wird heute in einem beitrag zusammen gefasst, daran arbeite ich. erstens und zweitens: es gibt ja die programmiersprache BASIC, ich selber habe eine Art Compiler mehrfach geschrieben, viele kleine. Bakus Naur Form sind welche. so, viele kleine, aber groessere

ich hatte das buch von dijkstra ist der herr glaube ich, muss aber gucken, oder ein anderer. compilerbau oberon. an der fernuni hagen, compilerbau kurs

basic vom prinzip einfach. ich probiere einen fuer atmega8 und pc allgemein zu schreiben, indem falle, atmega8...

Jetzt einmal Dampfmaschine fahren lassen dann muss ich ja einmal aufräumen kann ich heute auch nicht mehr machen

Ich habe es allerdings genau gesehen und das hab ich auch schon vorher gesehen. Beim ersten bleibt die LED im Ausgang Schalt Netz würde man beim Schaltwerk sagen aus und es ist falsch. Also da muss ich noch mal gucken was die TTL Gatter betrifft

Der Timer tut, er tut gut toll und ja also ich mach kurz einen Film und zeige kurz es bietet sich jetzt der das externe Interrupt an also wo ich immer auf den Knopf drücken muss weil dann kann ich das ablesen wenn es als Film so schnell durchläuft. Da hab ich natürlich meine Schwierigkeiten auch wenn's relativ langsam geht die LED am Ausgang des Schaltnetzes zu kontrollieren.

Sprich, wenn ich meinen Knopf drücken muss, kann ich genau danach fotografieren

Image IMG_4080.HEIC

;; david vajda; m8 intervall timer / led slow

.include "m8def.inc"

.org 0x0000
rjmp RESET
.org OVF1Addr
rjmp OVF1Hndlr

RESET:
ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRB, r16

ldi r16, 0xff
out PORTB, r16

;; ldi r16,
;; out TCCR1B, r16

;; ldi r16,
;; out TIMSK, r16

;; so weit ich es. aber ich weiss nicht,
;; wie heissen, die flags, 1. zur aktivierung
;; des timers, 2. zum prescaler heisst, teiler
;; also beim wievielten mal\dots
;; die nachgucken

sei
main001: rjmp main001

OVF1Hndlr:
inc r16
out PORTB, r16
reti

So, jetzt geht es weiter. Es kommt der IntervalTimer.

Gut, die Schaltung tut schon mal. Da ist aber eins und zwei glaub ich vertauscht also null und eins ist vertauscht. Muss noch mal gucken wo an den LED oder am Eingang einen Moment

Ist Oszilloskop tut, das ist das eine und die Schaltung mir ist grad jetzt nicht weiter danach. Ich muss auf die Straße raus ist jetzt zu viel geworden für mich und muss noch mal auf die Straße raus. Ich weiß nicht ich hab die Schaltung soweit aufgebaut muss ich nachher ausprobieren.

So, jetzt hab ich das Ding hier auch noch gebastelt wenn ich das hab ja also da fehlen jetzt die Anschlüsse einerseits vom nicht und andererseits in die nicht rein so und also in die 7404 wenn es geschehen ist, dann haben wir jetzt kurz eine rauchen und was noch für ein Zeug keine Ahnung. Ach so das mit dem Zeit Zeit Unterbrechung Zähler

Image IMG_4068.HEIC

Image IMG_4069.HEIC

Image IMG_4070.HEIC

Image IMG_4071.HEIC

Image IMG_4072.HEIC

Image IMG_4073.HEIC

Image IMG_4074.HEIC

Image IMG_4075.HEIC

So, hier ist das Bild richtig das blau-weiß das spielt so kein Rollen auf dem Brett selber. Das ist jetzt vertauscht. Jetzt hab ich das jetzt kommt im nächsten Schritt. Wie gesagt ich muss die Schaltung noch mit normalen Gattern aufbauen. Im nächsten Schritt kommt noch das mit dem Timer Intervall

Image IMG_4067.HEIC

Image IMG_4066.HEIC

Image IMG_4065.HEIC

Man sieht es blau-weiße Kabel war vertauscht. Ich mach die Aufnahme auf dem Oszilloskop noch mal.

Nachher ein Beitrag wie gesagt, raus hier mit dem GAL zählt das fantastisch

Image IMG_4060.HEIC

Image IMG_4061.HEIC

Image IMG_4063.HEIC

Image IMG_4065.HEIC

Image IMG_4066.HEIC

Image IMG_4067.HEIC

GAL16V8

Damit zählt fantastisch. Ich zeige Ihnen das auf dem Display von dem Oszilloskop und ich hab es auch ausprobiert mit dem langsamen, was schrittweise die LED nach oben zählt. Und ja, das geht auch sehr gut. Also mit dem GAL das ist die LED nach oben. Zählt ein Moment.

Image IMG_4068.HEIC

Image IMG_4058.HEIC

Image IMG_4059.HEIC

;; so jetzt mit oszi, gleich dran machen\dots fuer das erste

;; david vajda
;; 06/27/2026
;; m8 count oszi count

.include "m8def.inc"

ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRB, r16

ldi r16, 0xff
main001:
out PORTB, r16
;; rcall waitloop001
dec r16
rjmp main001

waitloop001:
push r16
push r17
push r18
ldi r16, 0x04
waitloop002:
ldi r17, 0xff
waitloop003:
ldi r18, 0xff
waitloop004:
dec r18
brne waitloop004
dec r17
brne waitloop003
dec r16
brne waitloop002
pop r18
pop r17
pop r16
ret

;; das tut - aber die wait loop zu langsam
;; danach extern und ohne verzoegerung, aber das laesst sich mit timer 0 auch schnell mit interrupts machen

;; david vajda
;; 06/27/2026
;; m8 count led by wait loop

.include "m8def.inc"

ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRB, r16

ldi r16, 0xff
main001:
out PORTB, r16
rcall waitloop001
dec r16
rjmp main001

waitloop001:
push r16
push r17
push r18
ldi r16, 0x0f
waitloop002:
ldi r17, 0xff
waitloop003:
ldi r18, 0xff
waitloop004:
dec r18
brne waitloop004
dec r17
brne waitloop003
dec r16
brne waitloop002
pop r18
pop r17
pop r16
ret

das ziel ist jetzt noch

  1. natuerlich timer intervall
  2. das timer kann auch kurz sein, sprich, loop ausserdem ohne: waitloop ins oszilloskop rein
  3. durch das oszilloskop dann
  4. durch ttl gatter - das ist einfach aufgebaut: 3 UND - mit 2 Eingaengen, so ist es da. dann ein ODER mit 3 eingaengen. da eine verbindung
  5. das GAL - alles durchschicken
  6. aber oszilloskop beides...

;; es tut, der erste quelltext

;; david vajda
;; 06/27/2026
;; m8 count led by ext int

.include "m8def.inc"

.org 0x000
rjmp RESET
.org INT0addr
rjmp INT0hndlr
.org INT1addr
rjmp INT1hndlr

RESET:
ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRB, r16
ldi r16, 0xff

ldi r16, (1 << CS00) | (1 << CS01)
out MCUCR, r16
ldi r16, (1 << INT0) | (1 << INT1)
out GICR, r16

sei
main001: rjmp main001

INT0hndlr:
dec r16
out PORTB, r16
reti

INT1hndlr:
inc r16
out PORTB, r16
reti

Image IMG_4051

Image IMG_4052

Image IMG_4055.HEIC

Image IMG_4056.HEIC

Image IMG_4057.HEIC

Image m8countled06272026extint.pdf-1

;; david vajda
;; 06/27/2026
;; m8 count led by ext int

.include "m8def.inc"

.org 0x000
rjmp RESET
.org INT0addr
rjmp INT0hndlr
.org INT1addr
rjmp INT1hndlr

RESET:
ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRB, r16
ldi r16, 0xff

ldi r16, (1 << CS00) | (1 << CS01)
out MCUCR, r16
ldi r16, (1 << INT0) | (1 << INT1)
out GICR, r16

sei
main001: rjmp main001

INT0hndlr:
dec r16
out PORTB, r16
reti

INT1hndlr:
inc r16
out PORTB, r16
reti

Image m8countled06272026waitloop.pdf-1

;; david vajda
;; 06/27/2026
;; m8 count led by wait loop

.include "m8def.inc"

ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRB, r16

ldi r16, 0xff
main001:
out PORTB, r16
rcall waitloop001
dec r16
rjmp main001

waitloop001:
push r16
push r17
push r18
ldi r16, 0x0f
waitloop002:
ldi r17, 0xff
waitloop003:
ldi r18, 0xff
waitloop004:
dec r18
brne waitloop004
dec r17
brne waitloop003
dec r16
brne waitloop002
pop r18
pop r17
pop r16
ret

Image quine06272026dnf

Ach ja, und so sehr sie angepisst sind, dass ich jetzt hier ständig was sage, da sind sie und werden sich sonst wohin setzen ich mich auch dagegen können wir auch nix machen. Verstehe alles. Lassen wir soweit gut sein. Jetzt kommt als Nächstes trotzdem

Ja, bei mir heißt es lass mir gut sein bitte wir müssen das nicht alles besprechen wer oder was auch immer wir sind oder nicht sind auch darum können wir uns nicht drücken verstehe ich alles. Ich bin trotzdem froh über das Programm hier von Linux und auch über das batronix

Jedenfalls soweit und kommt noch das nächste Thema. Wie gesagt, ich bin froh bei den dividier Befehl. Ich wollte trotzdem zur ständigen Übungen das gehört ja bei mir dazu.

Also, wo ich den atmega8 immer jeden Tag programmiere kommt ja der Klassiker mit der Warteschleife, dann mit dem externen Interrupt und dann mit dem Zeit Intervall

Das kommt und: das ist halt das und das ist auch schön so. Und jedenfalls das mache ich dann auch gleich zur Übung weil dann kann ich das auch mit diesem Baustein sehr gut durchlaufen lassen. So nächstes Thema jetzt erst mal der Schaltplan und wenn ich den hab, dann geh ich noch mal was einkaufen dann kommt der Rest heute Abend.

Jetzt sehe ich stimmt die Schaltung doch

Und ich bin froh, weil es ist mein erster programmierter

GAL

In meinem Leben, von dem ich ausgehen kann, ist es richtig

Ich bin glücklich, dass ich da rein geguckt hab, dass ich jetzt auch sehe bei dem map oder wie soll ich sagen? Pin und so weiter

Ich habe galasm das ist sicher eine Abwandlung von Abel die ich zunächst seltsam fand, muss allerdings sagen, es stimmt wahrscheinlich nachdem ich zum Beispiel Beispiel gefunden hab eben nicht, dass keine Flip Flops möglich sind Sie sicher nicht. Der Fall von der Sache her, sah für mich auf den ersten Blick so aus. Es sieht alles ein bisschen anders aus ist sicher genauso hübsch. Ich werde auch probieren, sozusagen dieses jedec also Fuse ist selber zu machen, solange dieses galasm und auch was immer sie selber sind ich auch. Können wir uns sonst was einbilden und es vielleicht am Ende leider auch noch sein oder nicht leider wir können uns nicht von allem drum rum drücken das wissen wir da können wir auch trotzdem galasm beleidigen. Auch dahin da drum kommen wir nicht drum rum wahrscheinlich tut's ich bin froh, dass es damit geklappt hat. Jedenfalls der Baustein tut und es ist sicher auch trotzdem die nette Sprache, auch wenn wir uns noch was einbilden und es auch am Ende sind oder nicht, warum wir nicht drum rum drücken sie verstehen schon jedenfalls es tut jetzt hier in diesem Fall

Image IMG_4043.HEIC

Image IMG_4044.HEIC

Image IMG_4045.HEIC

Image IMG_4046.HEIC

Image IMG_4047.HEIC

Image IMG_4048.HEIC

Image IMG_4049.HEIC

Image IMG_4050.HEIC

So, jetzt muss ich noch mal den Baustein testen. Stimmt da irgendwas nicht?

Image IMG_4051

Image IMG_4052

so, jetzt probiere ich weil wohl eine zeile bei den gleichungen in der tabelle nicht funktioniert hat...muss ich noch mal gucken und die aufgabe soll vollstaendig sein, das heisst:

der atmega8 code, zaehlen, mit warteschleife, externen interrupt, zeitintervall muss her.

und wenn wir das haben: ach so der rest, mit samt diagramm

ieee 91-1984
,
din 40900
und so weiter und din 40700 ok. und dann alle beitraege zusammen.

Ich müsste noch mal die Gleichung analysieren, aber für heute ist mir die Lust vergangen. Danke schön. Ich bin froh, dass dieser GAL 16 V8 tut.

Wie gesagt, da muss ich das normale an der DNF weitermachen auch den Schaltplan aber den muss ich heute nicht mehr machen, mit der Hand und mit dem Computer und die Schaltung noch bauen

(C) David Vajda
Sat Jun 27 11:46:55 2026
3 Network - TTL - Disjunktive Normalform

	x2	x1	x0		y
 0	0	0	0		1
 1	0	0	1		0
 2	0	1	0		1
 3	0	1	1		0
 4	1	0	0		1
 5	1	0	1		1
 6	1	1	0		0
 7	1	1	1		1


	x2	x1	x0		y
 0	0	0	0		1
 2	0	1	0		1
 4	1	0	0		1
 5	1	0	1		1
 7	1	1	1		1


	x2	x1	x0		y
Gruppe 0:
 0	0	0	0		1
Gruppe 1:
 2	0	1	0		1
 4	1	0	0		1
Gruppe 2:
 5	1	0	1		1
Gruppe 3:
 7	1	1	1		1


	x2	x1	x0		y
0:2	0	-	0
0:4	-	0	0
4:5	1	0	-
5:7	1	-	1


	x2	x1	x0		y
0:4	-	0	0
0:2	0	-	0
5:7	1	-	1
4:5	1	0	-


Primimplikantentafel:

	0	2	4	5	7
0:4	x		x
0:2	x	x
5:7				x	x
4:5			x	x


Primimplikantentafel, welcher muss auf jeden fall bleiben?
	0	2	4	5	7
0:4	x		x
0:2	x	x
5:7				x	x	p
4:5			x	x

Gibt es irgendwelche gruende diese oder jene Gleichung Zu streichen? Etwa in Prozenten? Eine Entdeckung? Immerhin:

<CR><LF>
oder
<LF><CR>
eigentlich wuerde doch Beides? Ich dachte: wann überlebt die Schreibmaschine, wg. Wagen am Rand, mehr oder ...Der/die/das Schreiber vielleicht - wo ist mehr klecks? Klecks im nächsten, wird ueberschrieben, oder nicht frische Tinte? Was auch immer...wir koennen ja jetzt fragen an die Prozente die Wahrscheinlichkeitsrechnung stellen?

Was ist denn jetzt klüger, diese variable dieses UND/ODER Gatter bevorzugt oder dieses? Vielleicht weiss es ja jemand? Wie beim Schach? Oder wir wissen es einfach nicht!

Wir wissen es einfach nicht, weil jemand sagen wuerde, oh Vajda! Wie beim Schach!

Weil: ich sage mal so: woher wissen wir? Dass es nicht teil Unserer aufgäbe ist? Nicht teil unserer aufgäbe ist, Einteilung Fast wie Prozente, blos: ich glaube wir muessen das mal einsehen, Dass auch die uni bis ins 19. jhdt. Ziemlich langsam war. zunaechst. Vielleicht gewöhnen wir uns daran...

Fanatisch und perfektionistisch Fanatismus und Perfektionismus blos wir koennen ja mit dem leben. Aber es ist ein wenig frisch. Und wir muessen erst mal 2000 jähre damit Leben ohne das Gedudel anderer menschen und sei es auf der Strasse. Dann machen wir es wenn schon ordentlich selbst, ohne Anspruch, Andere zu überzeugen. Weil: schon das Gedudel stimuliert sie. Deswegen Wahrscheinlich sagen manche leute ist Strassenmusik schlecht, sie genügt Keinem Anspruch.

Warum? Weil sie schoen ist, wie die Musik im Radio. Noch schöner, wenn gut Schleicht sich da wieder was ein? Ja, leider. Warum? Weil Musik schlecht klingen muss, auch wenn man die dauernd übt. Dann ist gut geübte schlechte Musik, wenn selbst, besser. Warum? Warum ganz einfach: sie kennen ja diese komischen Tänzerinnen im 19. jhdt. Was da auf der Strasse jetzt auf ein mal so schon dudelt gerade, das ist teil Der Sache. Ein fortschritt zum Radio von gerade eben? Nein, leider nicht! Wenn man wo anders hin muss...sie wissen Und ich sage: wenn sie weiter schöne Musik spielen, dann wird die welt leider Bald nicht mehr schoen sein, gemeint sind nicht, unschöne Unterredungen im Unschönen Büro. Dass sie noch Musik spielen koennen verdanken sie lange gespielter Unschöner Musik. Das ist das problem. Sie muessen sich alle erst mal sehr lange Gewöhnen und das ist glaube ich das ziel in der Wissenschaft der Zukunft, die jetzt Anfangen sollte und sehr lange so gehen sollte.

	0	2	4	5	7
0:4	x		x
0:2	x	x
5:7				x	x	p

	x2	x1	x0		y
0:4	-	0	0
0:2	0	-	0
5:7	1	-	1

	y	<=	(not x1 and not x0) or
			(not x2 and not x0) or
			(x2 and x0);

-- vhdl\dots
-- (C) David Vajda
-- Sat Jun 27 11:46:55 2026
-- 3 Network - TTL - Disjunktive Normalform

library ieee;
use ieee.std_logic_1164.all;

entity quine06272026 is 
port (
	x2, x1, x0: in std_logic;
	y: out std_logic
);
end;

architecture behaviour of quine06272026 is 
begin 
	y	<=	(not x1 and not x0) or
			(not x2 and not x0) or
			(x2 and x0);
end;

library ieee;
use ieee.std_logic_1164.all;

entity quine06272026debug is 
port (
	y: out std_logic
);
end;

architecture behaviour of quine06272026debug is 
	component quine06272026 
	port (
		x2, x1, x0: in std_logic;
		y: out std_logic
	);
	end component;
	signal x2, x1, x0: std_logic 
begin 
	q: quine06272026 PORT MAP (x2=>x2, x1=>x1, x0=>x0, y=>y);

	x0 <= '0' after 0 ns, '1' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '1' after 50 ns, '0' after 60 ns, '1' after 70 ns, '0' after 80 ns;

	x1 <= '0' after 0 ns, '0' after 10 ns, '1' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns;

	x2 <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '1' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns;
end;

(C) David Vajda
Sat Jun 27 11:46:55 2026
3 Network - TTL - Disjunktive Normalform

	x2	x1	x0		y
 0	0	0	0		1
 1	0	0	1		0
 2	0	1	0		1
 3	0	1	1		0
 4	1	0	0		1
 5	1	0	1		1
 6	1	1	0		0
 7	1	1	1		1

ergibt $19 \cdot 11 + 3 = 212$ (korrekt) und $17 \cdot 7 + 15 = 134$ (korrekt) ...

// david vajda
// 06/26/2026
// divisionsoperation like network one operation

#include <stdio.h>

#define DIVIDEND    134
#define DIVISOR     17

int main (void) {
    int b [8];
    int a [8];
    int q = 0;
    int r;
    int p [8];  // (debug modus fuer q)

    int i;

    for (i = 7;  i >= 0;  i--)
        b [i] = DIVIDEND;
    for (i = 7;  i >= 0;  i--)
        a [i] = DIVISOR << i;

    /*
     *  jetzt haben wir:
     *  b7,
     *  b6,
     *  b5,
     *  ...
     *  b0
     *  mit fuehrenden nullen
     *  dann kommt als naechstes
     *  a7,
     *  a6,
     *  ...
     *  a0
     *
     *  die subtrahieren wir alle einzeln voneinander und gucken
     *  uns das ergebnis in einer art 1. debug modus an...
     */

    for (i = 7;  i >= 0;  i--)
        p [i] = b [i] - a [i];

    for (i = 7;  i >= 0;  i--)
        printf ("%2i.) %x = %x - %x; %i = %i - %i, p[%i] = b[%i] - a[%i]\n", i, b[i], a[i], p [i], b[i], a[i], p [i], i, i, i);

    for (i = 7;  i >= 1;  i--) {
        if (b [i] - a[i] >= 0) {
            b [i-1] = b [i] - a[i];
            q = q + (1 << i);
        }
        else
            b [i-1] = b [i];
        printf ("%i %i %i\n", b[i], b[i-1], q);
    }
    if (b [0] - a[0] >= 0) {
        q = q + (1 << 0);
        r = b [0] - a[0];
    }
    else
        r = b [0];

     printf ("%i %i, rest: %i\n", b[0], q, r);

return 0;
}

Image Screenshot_20260625_211925

Image Screenshot_20260625_211932

Image Screenshot_20260626_091546

Image Screenshot_20260626_092711

for (i = 7;  i >= 1;  i--) {
        if (b [i] - a[i] >= 0) {
            b [i-1] = b [i] - a[i];
            q = q + (1 << i);
        }
        else
            b [i-1] = b [i];
        printf ("%i %i %i\n", b[i], b[i-1], q);
    }
    if (b [0] - a[0] >= 0)
        q = q + (1 << 0);
     printf ("%i %i\n", b[0], q);

// david vajda
// 06/26/2026
// divisionsoperation like network one operation

#include <stdio.h>

#define DIVIDEND    134
#define DIVISOR     17

int main (void) {
    int b [8];
    int a [8];
    int q;
    int p [8];  // (debug modus fuer q)

    int i;

    for (i = 7;  i >= 0;  i--)
        b [i] = DIVIDEND;
    for (i = 7;  i >= 0;  i--)
        a [i] = DIVISOR << i;

    /*
     *  jetzt haben wir:
     *  b7,
     *  b6,
     *  b5,
     *  ...
     *  b0
     *  mit fuehrenden nullen
     *  dann kommt als naechstes
     *  a7,
     *  a6,
     *  ...
     *  a0
     *
     *  die subtrahieren wir alle einzeln voneinander und gucken
     *  uns das ergebnis in einer art 1. debug modus an...
     */

    for (i = 7;  i >= 0;  i--)
        p [i] = b [i] - a [i];

    for (i = 7;  i >= 0;  i--)
        printf ("%2i.) %x - %x = %x (%i), p[%i], b[%i] - a[%i]\n", i, b[i], a[i], p [i], i, i, i);

return 0;
}

Divisions Operation binary + atmega8 commands and co

david vajda