Hallo,
Ich habe eine kleine Platine mit Atmega8, der Atmega wird mit 2
Interrupts für den Empfang/Senden von Daten konfiguriert.
Mit dem Oszi kann ich sehen, dass Daten am RX-Pin eingehen. Ebenso
überwache ich den TX-Pin.
Leider schaffe ich es nicht dass er etwas sendet oder Empfängt, beide
Interrupts schneinen niemals auszulösen...
Da dieser Code mit einem Atmega1284 problemlos funktioniert und ich den
entscheidenden Fehler/Unterschied in der Konfiguration im
Atmega8-Datenblatt und auch beim Vergleich der Datenblätter nicht sehe
bin ich überfragt...
Er hat auch ein LCD-Display auf welchem das "E" geschrieben wird.
Jedoch kommt er nicht zum F.
Vielleicht habt ihr eine Idee?
1
staticcharTxBuff[32];
2
staticcharRxBuff[32];
3
4
staticvolatileuint8_tRxRead=0;// Zeigt auf Zeichen, das gesendet werden soll
5
staticvolatileuint8_tRxWrite=0;// Zeigt auf nächste Schreibposition im Puffer
6
7
staticvolatileuint8_tRxLen=0;// Zeigt auf nächste Schreibposition im Puffer
8
9
staticvolatileuint8_tTxRead=0;// Zeigt auf Zeichen, das gesendet werden soll
10
staticvolatileuint8_tTxWrite=0;// Zeigt auf nächste Schreibposition im Puffer
Matthias schrieb:> void UART_HMI_Init()> {>> UCSRA&=0xFC; //U2X=0, kein MCPM> UCSRB=0x98; //RX/TX-Enable, IRQ-Enable> UBRRH=0x00;> UCSRC=0x86; //8Bit, Kein Parity, ein Stop> UBRRL=0x33; // Baud-Rate @8MHz = 1200Baud> }
Soll das ein Witz sein mit deinen Magic Numbers? Da darf sich
jeder der Lust hast sich seine Bits raussuchen um zu sehen ob
du es richtig machst? Weil du zu faul bist es dem Hilfeanbieter
leicht zu machen durchzublicken?
Dann noch dies hier:
---------------------------------------------
Wichtige Regeln - erst lesen, dann posten!
.................
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
---------------------------------------------
S. Landolt schrieb:> Wo wird dieses UART_HMI_Init denn aufgerufen?
Dass wird es wohl sein :)
Ja, das ist es :-)
Vielen Dank ;-)
OMG schrieb:> Soll das ein Witz sein mit deinen Magic Numbers? Da darf sich> jeder der Lust hast sich seine Bits raussuchen um zu sehen ob> du es richtig machst? Weil du zu faul bist es dem Hilfeanbieter> leicht zu machen durchzublicken?
Nun, ich habe den Aufwand betrieben alle Bits 2mal auf ihre Richtigkeit
zu Pürfen. Wenn du, wie du es selbst schreibst, zu faul bist dir diesen
Aufwand zu machen sehe ich es nicht als mein Problem an.
Matthias schrieb:> Wenn du, wie du es selbst schreibst, zu faul bist dir diesen> Aufwand zu machen sehe ich es nicht als mein Problem an.
Wen dir deswegen keiner hilft, wird es aber wiederum dein Problem.
Das ist hier ja schon eine Form von Teamarbeit. In Teams muss man sich
auf einen gemeinsamen Stil einigen, um erfolgreich zusammen arbeiten zu
können. Wenn hier jetzt einige Leute wegen deinem Stil blockieren, kann
es Dir egal sein. Im Beruf mit Kollegen allerdings nicht.
Stefan ⛄ F. schrieb:> Wen dir deswegen keiner hilft, wird es aber wiederum dein Problem.>> Das ist hier ja schon eine Form von Teamarbeit. In Teams muss man sich> auf einen gemeinsamen Stil einigen, um erfolgreich zusammen arbeiten zu> können. Wenn hier jetzt einige leute wegen deinem Stil blockieren, kann> es Dir egal sein. Im Beruf mit Kollegen allerdings nicht.
Stimmt aber da würde keiner diesen Tonfall benutzen...
https://www.mikrocontroller.net/articles/Netiquette
Und ja, da würde ich es wohl auch besser Dokumetieren...
Matthias schrieb:> aber da (im Beruf) würde keiner diesen Tonfall benutzen...
Jedenfalls wäre ich dann schnell dort weg. Meine Frau hat zwei Firmen
erlebt, wo sich nur die Frauen permanent angezickt hatten und manchmal
sogar ihre Arbeiten gegenseitig durcheinander brachten, um die andere zu
behindern.
Wer weiß, vielleicht sind hier lauter Frauen unterwegs, die sich
Männernamen geben. Oder echte Weicheier, die sich wie Mimosen benehmen.
Ich glaube ja, dass diese allgemeine Aggression hier lediglich ein
Ausdruck von Schwäche ist. Ich will mich selbst dabei nicht einmal
ausschließen. Ich werde auch laut, wenn ich mich bedrängt fühle.
while(TxWrite!=TxRead);// Warte bis Platz im Puffer
Dein Code kann wegen dieser Abfrage übrigens immer nur genau 1 Zeichen
senden. Denn wenn ein Zeichen in den Puffer geschrieben wurde, dann wird
mit dem Schreiben des nächsten Zeichens so lange gewartet, bis das
vorige gesendet wurde. Der Puffer von 32 Bytes ist so samt Verwaltung
unnütz.
1
len=RxLen;//return actual length of readable bytes
2
RxLen=0;//Length of readable Bytes = 0
3
uint8_tRxRead_buff=RxRead;//Get last Read-Addr, wich beginns with 1. Byte, that has not been Read last
Es ist nicht verboten, Kommentare auf Deutsch hinzuschreiben.
Besonders wenn man der Fremdsprache nicht so richtig mächtig ist. Denn
"actual" heißt nicht direkt "aktuell". "current" träfe es hier besser.
Und wenn die Kommentare dann noch eher für Verwirrung sorgen, als den
Quelltext zu erläutern, dann ist die Latte völlig gerissen.
Ich musste da ehrlich gesagt den Quelltext lesen um die Kommentare zu
verstehen... :-/
Matthias schrieb:> sehe ich es nicht als mein Problem an.
Ja, kann man so sehen.