Ich bin Anfänger bzw. werde Anfänger:-) Hab hier nen Atmega8 rumliegen und will anfangen mich in die Welt der µC einzuarbeiten. Also gleich mal Hardware(LEDs,Widerstände usw...)bestellt auf welche ich im Moment warte um Tutorials usw. zu bearbeiten. Da ich natürlich nicht abwarten kann hab ich mal ein kleines Prog im ASM geschrieben und verschiedene Pins bzw.Ports als Ein- und Augänge festgelegt.Bestimme Pins gesetzt und gelöscht usw. Sieht im AVR Studio schon ganz gut aus lol Auf einem alten Steckbrett hab ich dann den µC in Betrieb genommen(nachdem ich das Programm natürlich in den µC gebrannt hatte) und Versogungsspannung angelegt. Nun müßte ich doch an bestimmten Pins(Ausgängen) einen Spannungspegel annähernd an Vcc messen können?! Hab aber an allen Pins nahezu 0V außer am Reset Pin (knapp Vcc hier). Kann mir jemand sagen was ich falsch mache,nicht beachte bzw. wie es richtig geht? Vielen Dank schonmal dafür!
du hättest das Programm posten sollen und evt. beschreiben wie du den AVR gebrannt hast und was für Einstellungen du gemacht hast.
Ich binde die entsprechende Atmega8 Datei mit include ein. Danach nur mal kurz: main: ldi r17,0b11111111 out DDRD,r17 out PortD,r17 end: rjmp end Beim Brennen hab ich groß keine Einstellungen gemacht außer halt den µC ausgewählt.
Kannst Du das Pgm aus dem µC auch wieder auslesen, und durch vergleichen mit dem Original feststellen ob der Brennvorgang geklappt hat?
Brennvorgang hat funktioniert! Also das Prog ist nach dem auslesen aus dem µC identisch mit meinem erstellten Prog.
>>Hab aber an allen Pins nahezu 0V außer am Reset Pin (knapp Vcc hier)
am VCC Pin sollte aber auch VCC anliegen
poste mal lieber die Schaltung
Ist sichergestellt, das der interne RC-Ozillator selektiert ist? Reset sollte man auf jeden Fall ein festes Potential geben.
Naja Schaltung hab ich ja groß keine. µC an Vcc und GND und ich messe knapp Vcc an Reset
Ist der interne RC-Oszi standartmäßig nicht eingeschaltet? Der µC ist ja noch neu.
Auch wenn es umständlich erscheint, gewöhn Dir ein sauberes Arbeiten an. Als erstes zeichnet man einen Schaltplan. Es verhindert viele Fehler wenn man das ganze erstmal auf dem Papier macht und dort überprüft und evt. berechnet. Danach wird an Hand des Schaltplans verkabelt. Da kann man auch kein Kabel vergessen.
RESET ist ein Eingang, der ein festes Potential braucht. Den in der Luft hängen zu lassen, ist fatal! StandarDmässig ist der interne OC selektiert, richtig. Du sagtest, du bist neu. Wenn man neu ist, weiss man nicht immer, was man tut, also kontrolliers besser nochmal; vieleicht hast du die fuses ja schon beschrieben. Möglicherweise hast du das Ding ja auch schon bereits geplättet, denn der Code ist recht eindeutig.
Naja werd ich mal kontrollieren müssen irgednwie. Aber es ist richtig dass mit dem Code oben die Pins des Port D gegen Masse gemessen knapp an Vcc ran kommen sollten?! Wenn der µC richtig beschalten ist ;-) Wie kommt es dann dass ich an Reset die Vcc messe?
Dein Code setzt definitv alle Pins des PortD auf Hi (also nach VCC). Gemessen gegen GND solltest du hier 5V messen. Was du ein einem Eingang misst, der unbeschaltet ist, ist absolut irrelevant und undefiniert, da es von der internen Beschaltung abhängt. Das kann von chip zu chip unterschiedlich sein.
Du hast ja schon geschrieben dass ich Reset nicht in der Luft hängen lassen darf. Hab ich ja aber im Moment. Kann es daran liegen dass ich sonst nirgends die Vcc messe? Normal doch nicht oder?
Doch, natürlich kann das daran liegen. Möglichweise ist Reset ständig oder teilweise aktiv, sodaß dein Code überhaupt nicht zur Ausführung kommt.
Ok dann werd ich mal schauen was ich an C und R herbekomm zum beschalten. Was ist denn da empfohlen? Find da nix drüber im Datenblatt und auf Erfahrungswerte kann ich mich leider (noch) nicht stützen ;-)
Üblicherweise ziegt man einen negierten Reset-Eingang über 10K oder 100K nach VCC.
Hab es gerade hier in der Checkliste gefunden die ich gerade durchgehe. Aber trotzdem vielen Dank!
Den Reset-Pin solltest du mit 3k..10k nach Vcc ziehen. Ein Kondensator sollte nicht erforderlich sein, das stammt noch aus der Zeit, als die AVRs noch kein BOD hatten. ...
In Testschaltungen habe ich bislang noch nie den Reset-Pin nach VCC ziehen müssen, AFAIK ist ein Pull-Up integriert. Sicherer ist es allemal , aber absolut notwendig für einen Test ist es nicht.
Habe es nun mit beschaltetem Reset Pin versucht aber es funzt immer noch nicht. Beschaltung ist genau wie es in der Checkliste beschrieben ist. Einzig am Pin Reset und Vcc kann ich die Spannung Vcc messen. Am Reset Pin minimal unter Vcc.
- Stimmt deine Stromversorgung (saubere Gleichspannung)? - Sind AGND und AVCC auch angeschlossen? - Sind die Keramik-Abblock-Kondensatoren an den Stromversorgungspins vorhanden? ...
Hmm. Du sagst immer nur, dass du an Vcc (Pin7) die Versorgungsspannung messen kannst. Was ist mit AVcc (Pin20)? Dort muss ebenfalls die Versorungsspannung ran.
Benutze ein ganz normales DC Versorgungsspannungsteil. Ich verwende jetzt einen ATMega 8515 weil ich dem anderen nicht mehr traue. Dieser hier ist definitiv neu. Dadurch entfallen AGND undAVCC. Abblock Kondensatoren benutze ich keine.Brauche ich diese bei dieser konstanten Versorgungsspannung?
> Abblock Kondensatoren benutze ich keine.Brauche ich diese bei dieser > konstanten Versorgungsspannung? Die brauchst du immer. > Benutze ein ganz normales DC Versorgungsspannungsteil. Ein "normales" ist total ungeeignet, wenn es nicht ein besseres, stabilisiertes ist. Ich nehme zum Testen gern mal 4 NiCd- oder NiMH-Akkus der Größe AA und setze als "Sicherung" eine Glühlampe 6V / 100mA ein. Trotzdem verwende ich grundsätzlich Abblock-Kondensatoren 100nF-Keramik oder 470nF-Vielschicht-Keramik-Chipkondensatoren. ...
Naja wenn ich die immer brauche wird es wohl daran liegen ;-) Werd es mal testen und über das Ergebniss berichten. Hab hier noch nen 47µ C und nen 100p C. Kann ich einen von denen als Abblockkondensator verwenden? Vielen Dank schonmal soweit!
Der 47 scheint ja nicht geeignet weil zu langsam. Was ist wenn ich ein kleiners C als die 100nF einsetze?
> Hab hier noch nen 47µ C und nen 100p C. > Kann ich einen von denen als Abblockkondensator verwenden? Nein... Du brauchst Keramik-Vielschicht-Kondensatoren in der Größenordnung von etwa 100nF. Diese müssen so dicht wie möglich an die Stromversorgungspins des AVRs. Ein großer Elko irgendwo in der Schaltung kann die kleinen Abblock-Kondensatoren nicht ersetzen. ...
Erstmal: Der Reset hat einen internen Pull-Up, der meistens funktioniert. Zum Testen sollte es auch ohne Abblockkondensatoren klappen. Wenn man ein "gewöhnliches" (also unreguliertes) Netzteil auf 5V einstellt, kann man mit 7V oder mehr oder weniger am Ausgang rechnen - das ist natürlich ungesund wenn das absolute Maximum bei 6V liegt. afaik müssen AGND und AVCC auch nicht unbedingt verbunden sein - der ATmega8 im DIP hat ja nichtmal einen AGND - dafür aber 2 GND, die sehr wohl verbunden sein müssen. Außerdem musst du natürlich auch die richtige include-Datei im Assembler benutzen: .include "m8def.h"
> Außerdem musst du natürlich auch die richtige include-Datei im > Assembler benutzen: > .include "m8def.h" oder .include "m8def.inc" das könnte eher klappen... ...
Wie gesagt benutze ich im Moment einen ATMega8515. Also INCLUDE "8515def.inc" oder nicht? Hab jetzt nen 100nF alsBlcokkondensator drin. Immer noch nix! Hier nochmal mein kurzes Programm: .NOLIST .INCLUDE "8515def.inc" .LIST Reset:ldi r31, LOW(RAMEND) out SPL, r31 ldi r31, HIGH(RAMEND) out SPH, r31 ldi r17,0b11111111 out DDRD,r17 out PortD,r17 end: rjmp end
Was meinst du mit allen GND Pins beim ATMega8515? Gibt doch nur einen!? Weiterhin habe ich Reset jetzt mit R und C beschalten sowie den Abblockondensator eingesetzt. Ich messe aber immer noch Vcc am Reset Pin und an allen anderen Pins ca 90mV. Der µC ist der ATMega8515L, also betreibe ich den mit 3,3V Was meinst du mit Versorungsspannung überprüft? Also an Vcc messe ich die Spannung von 3,3 V.
Am Code liegts nicht, der ist eindeutig!Mal mal den Schaltplan auf, machn Photo von und poste es hier rein. Am besten auch von der Testverdrahtung....
Hab grad keine Kamera aber ich beschreibs nochmal genau. Also am Reset Pin: -einmal 10K Widerstand,anderes Bein auf Vcc -einmal C,anderes Bein auf GND 100nF als Abblockondensator auf Vcc und GND und jeweils an die entsprechenden Pins des µC
Ah, dacht wir wärn wieder beim mega8 - der hat nämlich 2 im DIP GND Pins. Was misst du denn zwischen Vcc und den Pins? Und wie sind die Fusebits? Was benutzt du denn zum Programmieren?
Fusebits hatten wir alles schon. In der Theorie ist alles richtig. Hier wird irgendwas prinzipell falsch gemacht. Deshalb denke ich ist es sinnlos hier noch weiter zu diskutieren, ohne irgendwas zu sehen.
Fuses hab ich nix geändert,ist also alles noch so wie er standartmäßig ausgeliefert wird. Hab ich auch ausgelesen und mit Datenblatt verglichen,paßt alles. Werd mal ne Zeichnung versuchen und posten...
So hier mal meine kleine Beschaltung schnell in Paint erstellt :-) Was mache ich falsch?
Also die Schaltung sieht so richtig aus. Du kannst mal spannung zwischen Vcc und den ganzen Pins messen, evtl. auch Strom aus GND oder Vcc wenn du ganz am verzweifeln bist.
Der Schaltung nach muss am Vcc-Pin 5V zu messen sein. Wenns das nicht tut, läuft hier irgendwas essenzielles falsch, da der Chip diesen Pin nicht "nach unten" ziehen kann. Bist du dir sicher, das du dich mit der Pin-Nummerierung nicht vertan hast?
Am Reset messe ich ja Vcc. Mein Problem ist ja das ich nach dem geposteten Programm an allen I/O Pins nahezu 0V messe...also ca 50 mV. Normal sollte an den Ausgängen welche auf logisch "1" sind doch knapp Vcc zu messen sein !?
Vieleicht mal zur Info: Wenn man von oben (pins zeigen von betrachter weg) auf den IC schaut und die markierung auf der linken Seite hält, ist Pin 1 der links untere Pin. Die Pinnummeriernung läuft dann nach links weg, gegen den Uhrzeigersinn um den Chip herrum.
Richtig, am port D muss knapp 5V zu messen sein. Es gibt eigentlich nur 3 mögliche Fehlerquellen: - Chip defekt - falsch geflasht - falsch beschaltet. Momentan tippe ich darauf, das du dich mit dem Pinout vertust.
AH das "Das ist richtig" war auf den post oberhalb bezogen. War zu langsam. Pinout falsch kann eigentlich nicht sein. Zumal ich an einem Pin ja Vcc messe. Wenn ich nach meinem Wissensstand im Datenblatt nachschaue entspricht dieser Pin dem Reset Pin. Der Pin 1 ist mit einem kleinen Symbol(Dreieck oder Pfeil oder Spitze oder was das sein soll) gekennzeichnet,richtig? In meiner Skizze oben wäre der Pin 1 dann rechts oben
PIN 1 selbst hat auf den Chips keine eindeutige Kennzeichnung. Es ist, wie ich es sagte: Die runde Aussparung am Gehäuserand selbst nach links ausrichten. Pins zeigen von dir weg, so das du auf die Beschriftung schaust. Dann ist PIN1 links unten. Pin2 rechts daneben. Pin40 ist dem PIN1 gegenüber...usw.. Das ganze Spiegelverkehrt sich, wenn du von unten, lötseitig auf die Sache schaust.
Die Zeichnung der Pinbelegung im Datenblatt entspricht der Draufsicht auf den Chip... ...
Lass mal das HEX-File sehen. Vielleicht läuft bei der Assemblierung/Generierung was schief.
Und hier der Quelltext... Habe ich vor langer Zeit mal geschrieben, weil jemand mit seinem Mega8 und Testboard anfangs nicht zurecht kam. ...
Kann ich leider heute nicht mehr versuchen. Werd aber sobald ich Ergebnisse habe berichten :-)
Hab nochmal alles komplett neu gemacht. Neu geproggt,assembliert,µC beschrieben,Schaltung aufgebaut usw. Und siehe da es läuft :-) Ehrlich gesagt weiß ich nicht was das Problem war da ich eigentlich alles gleich gemacht habe. Naja vielleicht war ihm das viele hin und her einfach zu viel. Gut jedenfalls kann ich jetzt an meinen gesetzten Ausgängen Vcc messen und nun kann es weiter gehen ;-) Danke für eure Antworten und Hilfen!
Typischer Fall von: Kaum macht mans richtig, schon funktionierts. Oh welch Wunder ;)
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.