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