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/
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"osser 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"oschen ; 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"oherem 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"oschung des Displays lcd_clear: ldi temp1, 0b00000001 ; Display l"oschen 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