Ich bearbeite gerade ein Projekt mit einem Arduino UNO, bei dem ich das Rauschen an einem analogen Eingang auswerten möchte.
In meinem Programm nehme ich aktuell nur das LSB vom ADC und schicke es über USART an den Seriellen Monitor.
Obwohl programmtechnisch eine Single Conversion des ADCs umgesetzt sein sollte (der neue Start einer Conversion in der ISR "USART0_TX_vect" ist auskommentiert), verhält sich das ganze so, als wäre der ADC im Free Running Mode und ich werde mit Nullen/Einsen bombadiert.
Ich habe das Programm auf einem ATmega2560 (STK600) getestet und dort wird wie gewollt nur eine Conversion durchgeführt.
Ich werde dich in Zukunft einfach ignorieren. Es nervt nur noch
Du weißt ganz genau dass das nur durch das = so geht. Wenn man da |= werden die Bits nicht auf 0 gesetzt. Aber statt dessen kommen nur die üblichen dummen Sprüche.
Vielleicht steht es auch nur dort um es deutlich zu machen und er weiß dass es eigentlich nichts bewirkt. Wenn man es richtig macht kann das ok sein. Aber ich habe schon mehrmals Anfänger gesehen die das falsch gemacht haben und eigentlich was anderes wollten
Ja, du gehst mich seit einiger Zeit öffentlich an.
Hier habe ich ganz klar meine Meinung ausgedrückt.
Nach bestem Wissen und Gewissen.
Wenn du das für dumme Sprüche hältst... da werde ich dich nicht dran hindern können.
Wenn man da |= werden die Bits nicht auf 0 gesetzt.
Wenn den Code untersuchst, dann sollte auffallen, dass dieser Zustand an keiner Stelle dort vorkommt.
Und das ist kein Zufall, sondern kontrollierte Absicht.
Dafür möchte ich wetten!
Nachtrag:
Vielleicht steht es auch nur dort um es deutlich zu machen und er weiß dass es eigentlich nichts bewirkt. Wenn man es richtig macht kann das ok sein. Aber ich habe schon mehrmals Anfänger gesehen die das falsch gemacht haben und eigentlich was anderes wollten
Aha, jetzt ja!
Der Groschen ist gefallen.
Nur weil irgendwer das mal falsch gemacht hat, ist das Prinzip noch lange nicht böse.
Vielen Dank!! Das war's :).
Das ist aber verwirrend, dass es ein UCSR0B gibt, aber dann die Interrupt-Routine dann ohne 0 ist. Aiaiai. Hab extra im Datenblatt beim 328P geschaut, ob ich nicht bspw. UCSRB ohne die 0 verwenden muss. Da dem nicht so war, habe ich über die ISR gar nicht mehr nachgedacht.
Serenifly:
Vielleicht steht es auch nur dort um es deutlich zu machen und er weiß dass es eigentlich nichts bewirkt. Wenn man es richtig macht kann das ok sein. Aber ich habe schon mehrmals Anfänger gesehen die das falsch gemacht haben und eigentlich was anderes wollten
Danke für die Hinweise. Ich weiß schon, dass es keine Auswirkung hat. Ich habe das bloss so gehandhabt, damit man, falls Werte schnell auf 1 geändert werden sollen, man den Code nicht mehr erweitern muss, bzw. dass man im Vergleich mit den Tabellen des Datenblatts direkt sieht, welche Bits welchen Wert haben und man dann direkt auf die Modi etc. schließen kann.
Tja und die korrekten Schreibweisen der Interrupt Vectoren findet man leider nur eindeutig im Headerfile.
C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr
Alle Register- und Bitnamen stehen korrekt im Manual. Bei den Interrupt Vectoren wurde das leider nicht für notwendig gehalten. Warum auch immer. Wenn man das Schema kennt gehts auch, ist dennoch blöd, zugegeben.um auch immer. Wenn man das Schema kennt gehts auch, ist dennoch blöd, zugegeben.
Ganz ehrlich, ich war einfach nur paranoid, weil ich dachte das ADATE Bit ginge nicht auf 0. Deshalb der extra Schritt. Davor hatte ich das nicht drin.
achso. Ne da musste keine bedenken haben. Wenn du klassisch ohne setup und loop programmierst, kannste davon ausgehen das alle Register nach Reset genullt sind.