Hallo, ich habe einen ATmega168 und will, weil ich es kann, alle Pins des Port D blinken lassen. Habe den µC dementsprechend eingestellt, alles gut. LED's hab ich aber nur an PD6 und PD7 angeschlossen, aus bequemlichkeit. Wenn ich das Programm laufen lasse leuchtet PD7 um einiges schwächer als PD6????!!! Habe als ersten Schritt die PD7-LED an PD5 angeschlossen und PD6 gelassen wie er/sie/es:-) ist. Resultat: LED's leuten gleich hell! Hat der µC einen Defekt oder gibt es dafür eine Erklärung? Über etwaige Erfahrungsberichte wäre ich dankbar! Grüße, Luaks
>_ pr0 schrieb: > Würd auch mal gern Pins zum leuchten bringen.. Mit entsprechend grossem Strom ist das kein Problem. Allerdings funktioniert das nur kurze Zeit.
Habe die Baugleichen LED's verwendet und jeweils 1K vorgeschaltet. Strom am PD5/6 beträgt 2,5mA. Am PD7 messe ich mitlerweile gar nichts mehr. Scheint so als ob sich PD7 langsam aber stetig verabschiedet hat! Die frage ist nur warum?
Lukas D. schrieb: > und will, weil ich es kann, alle Pins des Port > D blinken lassen. Habe den µC dementsprechend eingestellt, Dann zeig mal, was du so gekonnt hast. Und wie du den MC "eingestellt" hast.
// Pin configuration DDRD = 0b1111111; PORTD = 0b1111111; Mit DDRD gebe ich die Richtung vor --> Output! Mit PORTD setze ich alle D-Pins auf high. Das steht dazu im Datenblatt: Each port pin consists of three register bits: DDxn, PORTxn, and PINxn. As shown in “Register description” on page 87, the DDxn bits are accessed at the DDRx I/O address, the PORTxn bits at the PORTx I/O address, and the PINxn bits at the PINx I/O address. The DDxn bit in the DDRx Register selects the direction of this pin. If DDxn is written logic one, Pxn is configured as an output pin. If DDxn is written logic zero, Pxn is configured as an input pin. If PORTxn is written logic one when the pin is configured as an input pin, the pull-up resistor is activated. To switch the pull-up resistor off, PORTxn has to be written logic zero or the pin has to be configured as an output pin. The port pins are tri-stated when reset condition becomes active, even if no clocks are running. If PORTxn is written logic one when the pin is configured as an output pin, the port pin is driven high (one). If PORTxn is written logic zero when the pin is configured as an output pin, the port pin is driven low (zero).
Ich habs geahnt... Zähle nochmal die Einsen und erkenne gleichzeitig den Nachteil dieser Schreibweise :-)
Hi Sich selber verzeihen ist zumindest ein Anfang :) Als Erklärung für die nachfolgenden Leser: Die Bitangabe zu DDRD und PortD wurden nur 7-stellig eingetragen. Somit ist der höchste Pin am Port D immer noch ein IN (da Dessen DDRD-Bit immer noch auf 0 steht). Wenn nun im Programm PortD zwischen 0 und 255 wechselt (alle Bits 0 und alle Bits 1), werden bei den Bits 0-6 die Ausgnänge auf High/Low geschaltet, bei Bit7 aber 'nur' der PullUp ein/ausgeschaltet. Das erhöht zwar auch die Spannung, aber der mögliche Strom ist um Einiges geringer (meine, 50k wäre der PullUp). Somit haben die LEDs an PD0-PD6 1kΩ und PD7 51kΩ Vorwiderstand - die LED an PD7 ist dabei (deutlich) dunkler. MfG PS: Ich sehe gerade bei der Binären Eingabe den Vorteil, daß man die 'Bitposition' recht genau ersehen kann. Klar ist Das bei 0 und 255 eher unwichtig, bei anderen Mustern aber durchaus sinnvoll.
Patrick J. schrieb: > bei anderen Mustern aber durchaus sinnvoll aber auch nur für Anfänger, einfach weil mehr als 5 Stellen keiner mehr erfasst. In Hex sollte man irgendwann die Einzel-Bits (1,2,4,8) und Füllbits (1,3,7,f) kennen, den (seltenen) Rest mach man mit seiner favorisierten Bitrepräsentation, z.B. (ohne persönliche Wertung): a) BIT0 | BIT7 b) (1<<0) | (1<<7) c) BIT(1) | BIT(7) d) BITS_2(0,7) e) XY.bit0 = 1; XY.bit7 =1; f) X______X f ähnelt der b-Schreibweise zur scheinbar und wird häufig für Grafikelemente (z.B. Character-Fonts) verwendet. Der Vorteil gegenüber b10000001 ist die fixe Große (den Fehler des UP hätten Compiler/Linker angezeigt) und die besserer Visualisierung im Quelltext.
Hi Hatte hier einen Leidgenossen getroffen, Der, ähnlich wie ich auch, bei 'c' und 'd' so Seine Probleme hatte. Null bis 'B' gehen leicht von der Hand und von Oben 'F' bis 'E' ist auch nicht schwer. Bei C und D musste ich bisher immer 'zählen'. Jedes Nibble repräsentiert ja eine Hex-Ziffer. 0000 0 ... 1001 9 1010 A 1011 B 1100 C (Cwölf ... Zwölf) 1101 D (Dreizehn) 1110 E 1111 F Dadurch lässt sich recht einfach von Bin <-> Hex 'umrechnen' 0b11011001 - 1101(Dreizehn) 1001(neun) -> D 9 -> 0xD9 0xC8 -> C(Cwölf) 8(acht) -> 1100(zwölf) 1000 -> 0b11001000 MfG
Letztlich ist es nur eine Frage der Übung und Anwendung. Wenn mir einer eine Hexzahl sagt, sehe ich ein Bitmuster... ?
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.