s Nachdem ich mit DDRB=0x00 alle Pins des Port A auf Input gestellt habe kann ich ja mit byte read = PINB den digitalen Wert einlesen. Doch ab wann ist dieser HIGH ? Es gibt ja die TTL und CMOS Grenzen, doch die kenne ich nur für 5V. Den MC kann ich ja auch mit 3.3V betreiben, gibt es da Prozente ab wann der Wert HIGH bzw LOW wird? Übrigens bezieht sich das auf dne ATmega328P. Würde gerne mehr darüber erfahren, warum gewissen Pins zu einem Port zusammengefasst werden. Auszug aus dem Datenblatt, Pinout: https://content.solarbotics.com/products/photos/ce7a45084987622821fe5b8ba755eeae/lrg/28960-pinout.jpg Hier sieht man PDx, PCx, PBx wobei x jeweils eine Zahl ist. PC scheint für analoge Eingang zu sein, und sind die anderen auch nach einem Schema gruppiert? s
Die High/Low-Pegel realtiv zu Vcc stehen im Datenblatt, Section 28.2 DC Characteristics. Die Zusammenfassung der Pins zu Ports hat einerseits mit dem Aufbau des Controllers zu tun und natürlich ist es relativ sinnvoll, bei einer 8-Bit-MCU jeweils 8 Pins (=^ 8 Bits) zu einem Register zu konsolidieren. Bei manchen Ports sind es vielleicht nur 6 oder 7, aber es wäre schon verschwenderisch, jeden Pin komplett einzeln zu adressieren. Außerdem kannst du so bei entsprechender Wahl der Pins für deine externe Beschaltung zusammengehörige Signale atomar (wenn auch nicht glitch-frei) schalten. PORTC ist nicht nur für den ADC, du kannst ihn auch als digitalen (7-Bit) Port verwenden. Dieser wird allerdings aus AVcc versorgt, was sinnvoll zu bedenken ist, wenn du an PORTC digitale Ausgänge mit analogen Eingängen kombinieren willst.
Die High/Low-Pegel realtiv zu Vcc stehen im Datenblatt, Section 30.8.9 Pin Threshold and Hysteresis
Da haste nu auch wieder recht! Auch wenn das in dem DB, das ich auf die Schnelle am Handy gefunden hatte 29.4.9 ist. Der alles entscheidende Hinweis sollte sowieso der grundsätzliche Verweis aufs Datenblatt sein.
Hallo, habe dazu im Complete-Datasheet zwei Einträge gefunden: Unter 29.2 DC Characteristics wird erklärt ab wann LOW bzw HIGH Pegel erkannt wird, dies ist aber keine lineare Funktion, da die Bereich Vcc = 1.8V - 2.4V / 2.4V - 5.5V unterschieden werden. Unter 31.1.9 Pin Threshold and Hysteresis wird eine lineare Funktion angegeben (graphisch), dafür mir geringfügiger Temperaturabhängigkeit. Dass das im DB steht dachte ich mir auch, aber ich wusste in dem 660-seitigen PDF trotz Inhaltsverzeichnis nicht, wo das genau steht. Was ich auch wissen möchte und nicht weiß wo es da genau steht, ist wie viel Strom ein Pin leisten kann?? (Für größere Lasten muss ich ja einen Transistor nehmen, das weiß ich schon.) Danke schon für diese Infos
rost schrieb: > Unter 29.2 DC Characteristics wird erklärt ab wann LOW bzw HIGH Pegel > erkannt wird, dies ist aber keine lineare Funktion, da die Bereich Vcc = > 1.8V - 2.4V / 2.4V - 5.5V unterschieden werden. Hast du es denn mit schwankender Versorgungsspannung zu tun? Du schriebst ja 3.3V, was deutlich im Bereich 2.4-5.5 liegt :) > Unter 31.1.9 Pin Threshold and Hysteresis wird eine lineare Funktion > angegeben (graphisch), dafür mir geringfügiger Temperaturabhängigkeit. Was hast du denn für Signale? Wenn du arg in die Grenzbereiche kommst, würde ich empfehlen, die vorher schon etwas aufzubessern. > Was ich auch wissen möchte und nicht weiß wo es da genau steht, ist wie > viel Strom ein Pin leisten kann?? Naja, unter Absolute Maximum Ratings steht 40 mA pro Pin und 200 mA für Vcc/GND. Letzteres deckelt entsprechend den Wert, wieviele Ausgänge gleichzeitig höhrere Ströme liefern/schlucken können. Und besser du bleibst noch ein gutes Stückchen von diesen Maxima weg.
Also ich habe eine stabilisierte Spannung, das gibt wenigstens der Hersteller des Netzteils an. Bisher benutze ich den MC auch nur mit 5V was ich am Netzteil einstellen kann. Ich plane allerdings den MC mit 3.3V zu betreiben. Dazu bräuchte ich wohl einen belasteten Spannungsteiler. Habe bisher nur mit "normalen" Spannungsteilern was gemacht, um z. B. höhere Spannungen für Messungen runterzuwandeln. Das ging auch immer problemlos, da hatte ich dann wohl einen unbelasteten Spannungsteiler. Doch kann man hier überhaupt sowas benutzen? Schließlich hat der MC ja einen variablen Stromverbrauch... Gibt es für diesen Zweck 5V -> 3.3V_belastet ein Bautei`? Habe kein Netzteil gefunden, bei dem sich das direkt einstellen lässt, ist bisher auch nicht notwendig sondern eher der Interesse wegen... Übrigens ist es eigentlich "31.8.9 Pin Threshold and Hysteresis", hatte vergessen, dass dieses Datenblatt für eine ganze Reihe von MCs ist. Dieser Abschnitt bezieht sich auf den ATmega328P.
rost schrieb: > Übrigens ist es eigentlich "31.8.9 Pin Threshold and Hysteresis", Die Kapitelnummern erhöhen sich bei neueren Datenblättern. Aber es sollte unter xx.8.8 stehen, wie die Kennlinie der Ausgänge aussieht: Pin Driver Strength
Spannungsteiler ist dafür unbrauchbar, den Grund hast du ja selbst gesehen. Dafür gibt es Spannungsregler. z.B. ganz simple Variante LF33 bis max. 1A.
Im allerallerneuesten Datenblatt (02/2013) mit 36MB findet die Beschreibung in Kapitel 35 statt.
Ok, habe jetzt gesehen, was es auch gibt ebay: 280819423916, "Perfect High Quality MB102 Breadboard Power Supply Module 3.3V 5V Arduino Board" Ist für Steckbretter mit 400 Kt oder 830 Kt (MB102) gedacht , also soclhe die auf beiden Seiten je V+/GND haben. Schlappe 1,51 EUR Eine Alternative ist übrigens ein USB 5V Netzteil + USB-Kabel. Da hat man 5V stabilisiert. Gibts auch ganz kostengünstig, weil dann die verstellbare Spannungseinstellung wegfällt. Wenn man dann das A/A-USB-Kabel in der Mitte trennt hat man sogar zwei davon. Dann muss man nur noch V+ (meist rot) und GND (meist schwarz) anschließen. -- Wenn ich einen Pin auf HIGH setze, wird er dann exakt auf Vcc gezogen (also quasi damit "verbunden") oder ist da ein Wandler drin, der eine gewisse Spannung ausgibt? Malte S. schrieb: > Außerdem > kannst du so bei entsprechender Wahl der Pins für deine externe > Beschaltung zusammengehörige Signale atomar (wenn auch nicht > glitch-frei) schalten. Meinst du so ähnlich wie mit diesen Shiftregistern wo man ein byte reinsendet bzw eins rausliest? Da kann ich ja zuerst eine Latch setzen dass mir die erst aktualisiert werden wenn ich das byte gesendet habe und in 8 bits an die Ausgänge aufgeteilt ist. Dann kann ich den latch auf high setzen. Beispiel: 74HC595 Doch wozu kommt es auf diese Nanosekunden wirklich an? Habe bisher nur in C++ geschrieben und da mir eine Funktion gebastelt die prüft ob der Status für eine gewisse Zeit (1...50ms) bestehend bleibt für EMV und entprelleh Kennt jemand ein praktishces Beispiel wo dies Glitch eine Fehlerquelle ist?
Das ist immer dann ein Problem, wenn ein parallel ausgegebenes Signal nicht zusätzlich durch einen Takt synchronisiert wird. Wenn am Ausgang z.B. eine H-Brücke hängt, die einen Motor ansteuert, möchtest du nicht, dass auch nur für kurze Zeit ein Kurzschluss geschaltet wird. Da brauchst du explizit eine Totzeit, musst also nacheinander erst den einen Treiber sperren, dann den anderen öffnen. Okay, hier spielt die Zeit, die der Treiber zum Sperren benötigt, eine größere Rolle als geringe Asynchronität direkt am µC-Ausgang. Solange du ein zusätzliches Signal hast, das die Gültigkeit der anderen Pins anzeigt, ist alles gut, vergleichbar dem genannten Latch beim 595er. Dann hast du den Vorteil, dass du die Daten-Pins gleichzeitig (im Sinne des Programmcodes) schalten kannst. Im Unterschied zum seriell angebundenen Register, das zwar weniger Pins zur Anbindung, dafür aber mehr Taktzyklen zum Ansteuern braucht. Je nachdem, was du machst, sind die Glitches durchaus wesentlich. Verstärkt durch unterschiedliche Signallaufzeiten zur Peripherie können die einiges machen. Sieh dir mal einen Mainboard oder einen Speicherriegel an, da laufen einige Leiterbahnen in Meandern, um diese Laufzeiten auszugleichen. Bei der Arbeit mit AVRs wird dir das eher keine Probleme machen, ich wollte es nur erwähnt haben, weil sonst jemand anderes darauf aufmerksam macht:
1 | PORTB = 0x55; |
setzt zwar alle Pins des PORTB mit einer Instruktion (bin jetzt zu faul die exakte Anzahl der Taktzyklen nachzuschlagen), aber nicht absolut gleichzeitig. rost schrieb: > ebay: 280819423916, "Perfect High Quality MB102 Breadboard Power Supply > Module 3.3V 5V Arduino Board" Sowas ist fürs Steckbrett praktisch. Für die fertige Platine machen sich die einzelnen Bauteile dann besser.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.