Erste RS-232 Kommunikation

Also liebe Leute, ich mach heute Abend noch einen Versuch. Ich guck nach dem nach dem Data schied hab ich zwar das Datenblatt aber schön das macht der Übersetzer hier falsch. Aber also der Diktierer aber ich hab kein mit dem Daten das reicht nicht und es sind mehr Pins als an dem normalen Display und sind 20 Pins nicht wie sonst 16 und man weiß halt nicht gerade mit dem Baden ob das so alles ist und ich guck mal ob ich irgendwo was finde, dass man das ne Möglichkeit hat es anzusteuern nach dem Controller und so und wenn ich das gefunden hab, dann probiere ich mal meinen AVR da dran anzuschließen und gleich mal was rüber zu schickenan Daten und auf dem Display was darzustellen und wenn ich das habe ich nehme einfach nacktes Bild was heißt in Park also nicht komprimiert ist also Bitmapformat heißt ja entpackt in Rohform fertig das probier ich dann heute mal mit dem Controller auf dem Display darzustellen

Ich müsste mir dann noch Draht beim Obi kaufen ich bin grad woanders und ja ich spiel heute Abend auch noch mal Klavier und rechne was mit Abacus. Um nicht du nicht aus der Übung zu kommen?

Na ja, wenn das so ist, dann lerne ich lieber in Ruhe weiter - verstehen sie, erst lernen, dann verstehen, erst mal alles lernen und dann immer weiter verstehen und dann kann man sich da ran wagen. Erst lernen, dann verstehen. Ich halte mich bescheiden mit dem was ich habe und tue ausser lernen auch nichts weiteres ueberfluessiges. Das ist der beste weg.

https://www.mikrocontroller.net/topic/103182

Hier ist etwas, das sagen sie funktioniert allerdings nicht 100 pro, demonstriert nur etwas.

Na ja, wenn das so ist, dann lerne ich lieber in Ruhe weiter - verstehen sie, erst lernen, dann verstehen, erst mal alles lernen und dann immer weiter verstehen und dann kann man sich da ran wagen. Erst lernen, dann verstehen. Ich halte mich bescheiden mit dem was ich habe und tue ausser lernen auch nichts weiteres ueberfluessiges. Das ist der beste weg.

Ich denke, bevor ich den MAX232 dann wirklich einloete mache ich auch erst mal eine Zeit in der ich es ganz in aller Ruhe lerne, bis ich mir sicher sein kann, es ist ganz sicher im Kopf, bevor ich einfach da irgendetwas los lege.

nein, mache ich doch nicht, mache ich wirklich nicht. Vom Inhalt muss ich das - ich sage nicht man, erst auswendig lernen. Weil, da geht es doch eher um details und die machen keinen sinn, wenn man es nicht weiss. Ich habe mir heute schon Sachen gemerkt. Ich moechte die nicht wiederholen. Ich habe mir was gemerkt. aber ich will dass es sicher von alleine geht

Was den Stecker betrifft muss ich sagen, laesst der sich nicht gut in eine Streifenlochrasterplatine einloeten.

So kompliziert sieht der Code da jetzt gar nicht aus

https://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

muss ich sagen - da sind keine speziellen prozeduren, unterprogramme, aber ich habe es ja von der Platine vom STK500 probiert, muesste ja tun - wenn man den Code ist er echt nicht kompliziert, aber - ich habe es vom STK 500 probiert, es wollte putty nicht, ich weiss nicht warum - ich vermute die baud rate stimmt zwar, aber die Prozessor Frequenz nicht, die ist 4 MHz, die baudrate im Code davon abhaengig. Ich weiss nicht woran es lag. Ich meine ich habe es richtig eingestellt, aber ich weiss es nicht

Ohne, selber MAX232 jetzt zu nehmen, was nach dem Schaltplan da kein Problem ist, wirklich nicht schwierig - kann man ja, das STK500 nehmen und probieren ob man es so zum laufen kriegt. Da ist ja gleich eine Schnittstelle extra fuer so etwas da.

das muss man halt auch alles erst auswenig lernen http://modelleisenbahn-steuern.de/controller/atmega8/4-systemtakt-und-takt-einstellungen.htm

Hier fragen andere auch

https://www.mikrocontroller.net/topic/240611

Zitat: Und der Grund ist ganz einfach: Alle AVR werden so ausgeliefert, dass sie mit 1Mhz laufen. Dann hat man erst mal eine Konstante. Ändern kann man das selber immer noch.

Ausgeliefert! Gut zu wissen, weil der ist neu. also 1MHz, dann liegt es vielleicht daran, im Code korriegieren

...

Und dann kommt das - Problem das hatte ich neulich naemlich schon mal, da habe ich ein MHz probiert, dann kam das, dann habe ich es gelassen, dabei wird es wohl das sein

david@work:~$ avra m820240923_002.asm
AVRA: advanced AVR macro assembler (version 1.4.2)
Pass 1...
m820240923_002.asm(16) : Error   : Systematischer Fehler der Baudrate gr"osser 1 Prozent und damit zu hoch!
m820240923_002.asm(16) : Maximum error count reached. Exiting...
david@work:~$

Zitat: Und der Grund ist ganz einfach: Alle AVR werden so ausgeliefert, dass sie mit 1Mhz laufen. Dann hat man erst mal eine Konstante. Ändern kann man das selber immer noch.

Ausgeliefert! Gut zu wissen, weil der ist neu. also 1MHz, dann liegt es vielleicht daran, im Code korriegieren

Und dann kommt das - Problem das hatte ich neulich naemlich schon mal, da habe ich ein MHz probiert, dann kam das, dann habe ich es gelassen, dabei wird es wohl das sein

david@work:~$ avra m820240923_002.asm
AVRA: advanced AVR macro assembler (version 1.4.2)
Pass 1...
m820240923_002.asm(16) : Error   : Systematischer Fehler der Baudrate gr"osser 1 Prozent und damit zu hoch!
m820240923_002.asm(16) : Maximum error count reached. Exiting...
david@work:~$

zum glueck die Fehlermeldung macht das Programm selber, loesung baud rate halbieren, steht im Programm selber die Fehlermeldung, also kleinere Baudrate standard nachschauen.

Im RS232-Protokoll werden Baudraten von 110 bis 230400 unterstützt. Am häufigsten werden Baudraten von 1200, 4800, 9600 und 115200 beobachtet. Die Baudrate bestimmt die Geschwindigkeit, mit der die Übertragung erfolgt, und muss für beide Seiten der Kommunikation gleich sein

jetzt tut es

david@work:~$ avra m820240923_002.asm
AVRA: advanced AVR macro assembler (version 1.4.2)
Pass 1...
Pass 2...
/usr/share/avra/m8def.inc(44) : PRAGMA PARTINC directive currently ignored
/usr/share/avra/m8def.inc(48) : PRAGMA AVRPART directive currently ignored
/usr/share/avra/m8def.inc(53) : PRAGMA AVRPART directive currently ignored
/usr/share/avra/m8def.inc(690) : PRAGMA AVRPART directive currently ignored
/usr/share/avra/m8def.inc(691) : PRAGMA AVRPART directive currently ignored
/usr/share/avra/m8def.inc(692) : PRAGMA AVRPART directive currently ignored
/usr/share/avra/m8def.inc(693) : PRAGMA AVRPART directive currently ignored
/usr/share/avra/m8def.inc(734) : PRAGMA AVRPART directive currently ignored
done

Assembly complete with no errors.
Segment usage:
   Code      :        28 words (56 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes
david@work:~$

// Das hat funktioniert

// mit avr-gcc -mmcu=atmega8 test20240925_001.c -O1 -o test
// und  avrdude -c stk500 -p atmega8 -U flash:w:test -P /dev/ttyS3

// Testprogramm f"ur CPU Takt
// Hier die vermeintliche Taktrate des µC eintragen
// Im Beispiel hier: 1MHz

#define F_CPU 1000000

#include <avr/io.h>
#include <util/delay.h>

// Hier die tats"achlich verwendeten Parameter angeben

#define LED_PORT    PORTB
#define LED_DDR     DDRB
#define LED_PIN     PB0

int main()
{
   LED_DDR |= 1 << LED_PIN;

   while (1)
   {
      LED_PORT ^= 1 << LED_PIN;
      _delay_ms(1000);
   }

   return 0;
}

Warte Mal! Es tut schon was! Es tut schon was - es funktioniert! nur die zeichen sind daemlich. putty funktioniert nicht

Aber cat /dev/ttyS3

funktioniert. Mit daemlichen Zeichen. nachdem ich die Baudrate eingestellt habe, etc.

0002700 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0002720 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0002740 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0002760 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0003000 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0003020 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0003040 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0003060 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0003100 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0003120 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0003140 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0003160 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0003200 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0003220 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0003240 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0003260 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0003300 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0003320 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0003340 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0003360 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0003400 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0003420 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0003440 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0003460 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
^C
root@work:/home/david# cat /dev/ttyS3
j<?><?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q^C
root@work:/home/david#

Ja! yeah! Es funktioniert, nachdem die daemlichen Zeichen kamen, habe ich - den Prozessor, am Board gerestettet, mit RESET und jetzt kommt

root@work:/home/david# cat /dev/ttyS3 | od -tx1
0000000 57 92 a8 88 55 cd d1 85 29 35 51 95 cd d1 85 29
0000020 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0000040 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0000060 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0000100 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0000120 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0000140 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0000160 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0000200 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0000220 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0000240 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0000260 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0000300 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0000320 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0000340 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0000360 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0000400 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0000420 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0000440 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0000460 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0000500 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0000520 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0000540 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0000560 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0000600 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0000620 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0000640 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0000660 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0000700 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0000720 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0000740 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0000760 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0001000 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0001020 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0001040 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0001060 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0001100 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0001120 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0001140 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0001160 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0001200 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0001220 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0001240 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0001260 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0001300 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0001320 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0001340 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0001360 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0001400 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0001420 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0001440 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0001460 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0001500 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0001520 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0001540 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0001560 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0001600 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0001620 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0001640 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0001660 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0001700 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0001720 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0001740 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0001760 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0002000 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0002020 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0002040 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0002060 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0002100 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0002120 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0002140 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0002160 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0002200 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0002220 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0002240 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0002260 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0002300 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0002320 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0002340 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0002360 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0002400 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0002420 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0002440 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0002460 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0002500 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0002520 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0002540 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0002560 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0002600 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0002620 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0002640 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0002660 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0002700 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0002720 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0002740 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0002760 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0003000 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0003020 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0003040 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0003060 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0003100 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0003120 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0003140 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0003160 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0003200 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0003220 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0003240 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0003260 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0003300 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
0003320 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35
0003340 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95
0003360 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1
0003400 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29
0003420 35 51 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51
0003440 95 cd d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd
0003460 d1 85 29 35 51 95 cd d1 85 29 35 51 95 cd d1 85
^C
root@work:/home/david# cat /dev/ttyS3
j<?><?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q^C
root@work:/home/david# [A
bash: [A: command not found
root@work:/home/david# cat /dev/ttyS3
U<?>W<?><?><?>U<?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5Q<?><?>x)5<?>Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Te^C
root@work:/home/

Image Screenshot_20240925_213222

Image Screenshot_20240925_213227

Image Screenshot_20240925_213234

Ja! yeah! Es funktioniert, nachdem die daemlichen Zeichen kamen, habe ich - den Prozessor, am Board gerestettet, mit RESET und jetzt kommt

Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Test!
Te^C
root@work:/home/david#
Ich habe dann jetzt auch was automatisch dazu gelernt, sehr gut, und zwar ohne es auswendig zu lernen. Klar, keine Panik, wenn ich das so alles runter auswendig lerne, dann sitzt es auch. Aber ich weiss jetzt, dass der UART auf dem Atmega8 integriert ist, das weiss ich jetzt, keine Sorge, wenn ich das auswendig lerne, dann weiss ich im Detail alles. Aber der UART, der eigentliche UART ist auf dem Atmega8 und der MAX232 ist nur fuer die Pegelanpassung. Weil, es gibt ja, das habe ich heute auswendig gelernt, MARK und SPACE fuer 1 und 0. Und die RS232 arbeitet ja mit 15 - 3 V und -3 bis -15. gut und - der MAX232 ist nur fuer die Pegelanpassung. Daneben weiss ich RxD TxD, und - bei der Schaltung ist es nicht ueber Kreuz, der UART selber wird ueber PORTS angesprochen auf dem Atmega8, die wie register speichern, aber sie werden mit IN und OUT bedient. Frage, wo ist der PORT aussen. Gar nicht. TxD und RxD gehen ueber PD0 und PD1 von PORTD. Und auf dem STK500 ist eben dieses SPARE SUB-D9 fuer die Uebertragung der Programmierung, da kann man von selber drauf kommen, das hat mit dem Atmega8 nicht unbedingt was zu tun, wenn er nicht drin ist und dann ist da ein Connector auf dem STK 500, TxD, RxD, kann wahlweise vertauscht rein gesetzt werden und das muss bei Spare an PD0 und PD1.

Ich wage jetzt mal was zu prognostizieren, als ich das mit dem Baud mal angeguckt habe, und sie wissen, ich lerne gerade, alsa und pulseaudio. Die Baud Rate, dachte ich, der Name kaeme von einer Zusammen setzung aus Bit und so weiter. Stimmt aber nicht. das kommt vom Franzoesischen Namen, das ist die abtastraten. Beim Sound - das weiss ich von ALSA und Pulseaudio, sollte man von CD heisst das beim Sound sample rate. aber dieses Baud ist bei RS232 wohl die Abtastrate, weil das Signal muss gar nicht 1pro passen. man kann sich ja vorstellen, wie beim Flip Flop, gibt es eine setz und haltezeit. Aber - wenn zum Beispiel die Abtastung alle 1/4800 stattfindet, macht es ja nichts, wenn vorher genug platz ist und hinterher - im ns bereich, ich habe von ungenauigkeit in Prozent gelesen, das ist die Abtastrate, in diesem Falle, weil kein Takt mit uebertragen wird. Und 4800 ist ja recht gnaedig. Da kommt es auf ein bisschen im ns bereich nicht an.

Das ist, ich traue mich jetzt noch einen satz zu sagen, was ich von minix bereits sehe, was ich noch frueher nicht so sah. Den Speicher manager habe ich bei Minix gut verstanden, mit der Freispeicherliste, aber - den Prozessmanager kann ich mir vorstellen, aber Lustig am Kernel ist ja, eine Hauptaufgabe, ist die Behandlung der Geraete, Terminal, Diskette usw. Und das ist teil vom Kernel innersten und bei Linux kommen eben LKM Loadable Kernel Modules, da werden, was man bei Windows Treiber sind, wo addressen drin sind, aber das Code ist, in den Kernel nachgeladen.

Jetzt probiere ich mal was anderes aus, vom Computer, zeichen zum LCD vom AVR zu schicken.

es hat funktioniert! Auf anhieb!

;; den code musste ich ein bisschen aendern, denn in dem Beispiel Code, keine sorge, das lerne ich auswendig, das ist nicht kompliziert, da sind - PORTD als ausgabe Port, aber da haengt ja mein bisher jedenfalls TXD und RxD dran. Ausserdem musste ich den Port vom LCD aendern. ich habe es mit Polling gemacht

.include "m8def.inc"

.def temp1 = r16
.def temp = r16
.def temp2 = r17
.def temp3 = r18

.equ F_CPU = 1000000                            ; Systemtakt in Hz
.equ BAUD  = 4800                               ; Baudrate

; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif

    ; Stackpointer initialisieren

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

    ; Port D = Ausgang

    ldi     temp, 0xFF
    out     DDRD, temp

           ldi temp1, 0xFF    ;Port D = Ausgang
           out DDRB, temp1

           rcall lcd_init     ;Display initialisieren
           rcall lcd_clear    ;Display löschen

    ; Baudrate einstellen

    ldi     temp, HIGH(UBRR_VAL)
    out     UBRRH, temp
    ldi     temp, LOW(UBRR_VAL)
    out     UBRRL, temp

    ; Frame-Format: 8 Bit

    ldi     temp, (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)
    out     UCSRC, temp

    sbi     UCSRB, RXEN                     ; RX (Empfang) aktivieren

receive_loop:
   sbis     UCSRA, RXC                      ; warten, bis ein Byte angekommen ist
   rjmp     receive_loop
   in       temp, UDR                       ; Empfangenes Byte nach temp kopieren
    rcall lcd_data
   rjmp     receive_loop                    ; zur"uck zum Hauptprogramm

.include "lcd-routines.asm"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                 LCD-Routinen                ;;
;;                 ============                ;;
;;              (c)andreas-s@web.de            ;;
;;                                             ;;
;; 4bit-Interface                              ;;
;; DB4-DB7:       PD0-PD3                      ;;
;; RS:            PD4                          ;;
;; E:             PD5                          ;;
;;                                             ;;
;; Takt:          4 MHz                        ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 ;sendet ein Datenbyte an das LCD
lcd_data:
           mov temp2, temp1             ; "Sicherungskopie" f"ur
                                        ; die "Ubertragung des 2. Nibbles
           swap temp1                   ; Vertauschen
           andi temp1, 0b00001111       ; oberes Nibble auf Null setzen
           sbr temp1, 1<<4              ; entspricht 0b00010000 (Anm. 1)
           out PORTB, temp1             ; ausgeben
           rcall lcd_enable             ; Enable-Routine aufrufen
                                        ; 2. Nibble, kein swap, da es schon
                                        ; an der richtigen Stelle ist
           andi temp2, 0b00001111       ; obere H"alfte auf Null setzen
           sbr temp2, 1<<4              ; entspricht 0b00010000
           out PORTB, temp2             ; ausgeben
           rcall lcd_enable             ; Enable-Routine aufrufen
           rcall delay50us              ; Delay-Routine aufrufen
           ret                          ; zur"uck zum Hauptprogramm

 ; sendet einen Befehl an das LCD
lcd_command:                            ; wie lcd_data, nur RS=0
           mov temp2, temp1
           swap temp1
           andi temp1, 0b00001111
           out PORTB, temp1
           rcall lcd_enable
           andi temp2, 0b00001111
           out PORTB, temp2
           rcall lcd_enable
           rcall delay50us
           ret

 ; erzeugt den Enable-Puls
 ;
 ; Bei höherem Takt (>= 8 MHz) kann es notwendig sein,
 ; vor dem Enable High 1-2 Wartetakte (nop) einzuf"ugen.
 ; Siehe dazu https://www.mikrocontroller.net/topic/81974#685882
lcd_enable:
           sbi PORTB, 5                 ; Enable high
           nop                          ; mindestens 3 Taktzyklen warten
           nop
           nop
           cbi PORTB, 5                 ; Enable wieder low
           ret                          ; Und wieder zur"uck

 ; Pause nach jeder "Ubertragung
delay50us:                              ; 50µs Pause (bei 4 MHz)
           ldi  temp1, $42
delay50us_:dec  temp1
           brne delay50us_
           ret                          ; wieder zur"uck

 ; L"angere Pause f"ur manche Befehle
delay5ms:                               ; 5ms Pause (bei 4 MHz)
           ldi  temp1, $21
WGLOOP0:   ldi  temp2, $C9
WGLOOP1:   dec  temp2
           brne WGLOOP1
           dec  temp1
           brne WGLOOP0
           ret                          ; wieder zur"uck

 ; Initialisierung: muss ganz am Anfang des Programms aufgerufen werden
lcd_init:
           ldi  temp3,50
powerupwait:
           rcall  delay5ms
           dec  temp3
           brne powerupwait
           ldi temp1, 0b00000011        ; muss 3mal hintereinander gesendet
           out PORTB, temp1             ; werden zur Initialisierung
           rcall lcd_enable             ; 1
           rcall delay5ms
           rcall lcd_enable             ; 2
           rcall delay5ms
           rcall lcd_enable             ; und 3!
           rcall delay5ms
           ldi temp1, 0b00000010        ; 4bit-Modus einstellen
           out PORTB, temp1
           rcall lcd_enable
           rcall delay5ms
           ldi temp1, 0b00101000        ; 4Bit / 2 Zeilen / 5x8
           rcall lcd_command
           ldi temp1, 0b00001100        ; Display ein / Cursor aus / kein Blinken
           rcall lcd_command
           ldi temp1, 0b00000110        ; Cursor inkrementieren / kein Scrollen
           rcall lcd_command
           ret

 ; Sendet den Befehl zur Löschung des Displays
lcd_clear:
           ldi temp1, 0b00000001   ; Display löschen
           rcall lcd_command
           rcall delay5ms
           ret

 ; Sendet den Befehl: Cursor Home
lcd_home:
           ldi temp1, 0b00000010   ; Cursor Home
           rcall lcd_command
           rcall delay5ms
           ret

root@work:/home/david# echo "hallo david vajda 2024-09-25" > /dev/ttyS3

Image IMG_3468

Image IMG_3469

Image Screenshot_20240925_223329

Image Screenshot_20240925_223637