hallo experten, bin neuling im bereich der atmel uPC und komm schon bei einem recht simplen (?) problem nicht weiter. wenn ich die pegel an den ausgängen meines atmega 8 messe, ist alles wunderbar, saubere 0 oder 5 volt. aber wehe, wenn ich direkt einen ttl eingang speisen möchte... mal ganz abgesehen davon, verstehe ich eh nicht, warum ich am eingang eines ttl-ics (bei mir ein stinknormales 74ls138) eine spannung von ca. 1.2 v ist (habe es ´nochmal mit einem neuen ic getestet, ohne irgendwas angeschlossen zu haben. nur 5v und masse und zack, alle eingänge haben 1 v. so, und wenn ich meinen atmel ausgang mit einem solchen ttl-eingang speise, zieht der den eingang nicht auf 0 v, sondern er bewegt sich nur zwischen 1.2 und 5v! ich krieg so also nie auch nur irgendwas in gang gesetzt. ich verzweifle!! pull-up und pull-down widerstände etc. bringen auch nix, da siehts noch schlimmer aus... also was um himmels willen mache ich falsch?
Hallo Yves, ( gut das ich das nur schreiben muss ) die Mega... treiben (bei Vcc 5Volt) 20mA. Sowohl gegen Vcc wie auch gegen Gnd. Beachte bitte, das Du je Port 3 Register hast: DDRn, PORTn und PINn Die Möglichkeiten kannst Du im Datasheet ansehen. Wenn noch Fragen sind, einfach mailen. Bernhard
hallo bernhard et. al., offtopic: yves ist französisch, spricht man wie "Ihf"... ist also harmlos, aber frag mich bitte nicht nach meinem nachnamen... ;-) ontopic: 20 mA... habe ich gelesen, muß ja auch alleine schon wegen der möglichkeit, LEDs direkt zu treiben.. daher ja auch mein unverständnis, schließlich zieht ein ttl am eingang ja auch sogut wie gar keinen strom... aber der hinweis mit dem DDRn... ich glaube, das könnte der schlüssel sein. ich habe dieses register bisher nicht genutzt, weil in den minibeispielproggies nirgends so ein register benutzt wurde... allerdings waren die meist nicht für die avr-mega-familie... also werde ich das gleich mal ausprobieren, wenn ich wieder am basteltisch sitze. und wenns dann funzt ist das wieder mal nur eine bestätigung für die korrektheit des akronyms RTFM! drückt mir die daumen! thanx so far, yves
Hallo Yves, Du sagst es. Wenn das Datenrichtungsregister nicht gesetzt ist, also High, dann ist es ein Eingang. Somit setzt man mit dem Portbit nur den internen Pullup. Der zieht zwar den Pin auf High, ist aber natürlich nicht in der Lage einen relevanten Strom zu generieren. Der Pullup liegt bei 20-100K. Ansonsten wünsche ich Dir viel Spass mit den Megas. Sie sind seit langer Zeit ( damals 8031 und Co ) das Beste was der Microcontrollerwelt passieren konnte. Wenn noch Fragen auftreten sollten, ich haben den Käfern schon seit einiger Zeit privat und dienstlich meinen Willen aufgezwungen; sowohl in C ( erst GCC-C jetzt CodeVisionAVR-C ) wie auch in Assembler. Bis dann Bernhard
Hallo! Ich verzweifle gerade! Meine 4 Stück ATmega163 sind nicht dazu zu bewegen, am PORTA 5V auszugeben. Die anderen PORTS arbeiten brav (Programm muß also richtig sein), nur auf A tut sich nix. Ich verwende CodevisionAvr und STK500 mit dem ich ISP programmiere. Die 4 Stück sind Nagelneu und es steht die Nummer 240 unter der Typenbezeichnung. Kann es sein das damit was nicht stimmt. danke Max
Daaaaaaaaanke mein Meister! Hab bei all den Versuchen immer den ADC mit dabei, somit war AVCC und AGnd immer angeschlossen, und PORTA hat eben nur zufällig funktioniert. Diesmal hab ich eine Schaltung ohne ADC aufgebaut und dachte das braucht eh nur der ADC. Funkt alles wieder!!!!:-))) Steht eigentlich auch im Datenblatt, war aber auf der falschen Fährte. Max
hallo zusammen, danke an alle helfenden geister... mein atmel treibt nun alle eingänge wie gewünscht... es lag am nicht gesetzten ddrx register... wohl ein typischer newbie-fehler, genau wie meine nicht gesetzte rc-fuse den falschen takt angab... ich sags ja immer wieder, RTFM. danke nochmal. falls es jemanden interessiert: ich baue gerade eine led-laufschriftanzeige von der firma textlite um. dabei ersetze ich den zuvor eingebauten 8049 durch meinen atmega8 und zeige dann meßwerte auf dem display an. habe mir sozusagen ein piggyboard mit dem atmel gebaut und nun geht das hacken in assembler los, da das board nun einwandfrei funktioniert... wen´s interessiert, versorge ich hinterher mit dem programm und den näheren einzelheiten. einfach ne mail. grüße yves
@Yves: Übrigens: Du hast oben geschrieben, daß Du Dich gewundert hast, daß Du am Eingang eines LS-ICs eine Spannung mißt. Das ist absolut okay: die Eingänge der ICs sind hochohmig und das Potential dort, wenn sie in der Luft hängen, ist nicht aussagekräftig. Übrigens ist die Trennung von DDR und PORT eine tolle Sache. Damit kann man auch Open-Collector-Ausgänge machen: Starke 0: PORT = 0, DDR = 1 Schwache 1: PORT = 1, DDR = 0
@sebastian LSTTL sind nicht hochomig, sondern sind der offerne Emitter eines Transistors, dessen Basis über einen Widerstand mit Vcc verbunden ist. Schau dir mal die Innerschaltung eines solchen ICs an. Bei CMOS/NMOS und anderen Logikfamilien sehen die Verhältnisse etwas anders aus. Aber auch hier helfen entsprechende Datenblätter weiter. Alle AVR Prozessoren verfügen immer über Push/Pull und nicht über Open-Collector bzw. Open-Drain Ausgänge. Mit PORT = 0 und DDR = 1 ist der betreffende Port-Pin Ausgang und ist nach GND gschaltet. Mit PORT = 1 und DDR = 0 ist der Port-Eingang und der interne PullUp Widerstand (10-100k) zwischen Eingang und Vcc ist aktiviert.
@mikki: Sebastian schrieb ja auch, daß man damit Open-Collector "machen" kann - also simulieren.
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.