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!
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.
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?
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 ;-)
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!
> 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.
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...
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.
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!