Forum: Mikrocontroller und Digitale Elektronik mC arbeitet nicht


von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
Programm arbeitet nicht, habs geschrieben ( siehe Anhang)
In Main, wird ein Ausgang auf HIGH gesetzt womit sicher ist das eine
angeschlossene LED leuchtet. LED ist direkt an den PORT angeschlossen.
Sie leuchtet aber nicht. Das heisst, dass das Programm nicht korrekt
oder überhaupt nicht arbeitet. Liegt das an der Bootloader Option?
Fuses: 11100001
CLK = 1MHZ
HIGH Fuses: 11011001
Reset @ 0x0000
Boot size = 32 pages /1024 words
S8518C ein
Lockbits: 111111
no lock
no restriction for SPM(was heisst das?) or LPM (und das?)
Laut Datenblatt habe ich den Reset mittels Pull-Up 47k als Taster gegen
Masse geschalten.
Ich habe es mittels eines selbstgebauten Programmer in den ATmega8515
geladen. Und habe dazu die Software SP12 verwendet.
SP12 -M1 -wpfC ***.hex

Ich habe noch Taster angeschlossen, welche direkt zwischen PORT-Pin und
Masse geschalten sind. Ist das korrekt sie so anzuschliesen?

Vielen Dank für Hilfe
daniel

von johnny.m (Gast)


Lesenswert?

1. Wie herum ist die LED angeschlossen? Wenn sie High-Side am Portpin
dranhängt, muss der Portpin '0' programmiert werden, damit die LED
leuchtet!

2. Taster werden i.a. vom Portpin gegen Masse angeschlossen.
Voraussetzung für das Funktionieren ist allerdings, dass die Pull-Ups
aktiviert sind.

von daniel (Gast)


Lesenswert?

Hi
ja die Pull-Ups sind aktiviert.
Die LED ist mit der Kathode(war die +?) gegen Port-Pin geschalten und
mit der Anode gegen Masse.

daniel

von Michael Wilhelm (Gast)


Lesenswert?

LED drehen.

MW

von daniel (Gast)


Lesenswert?

Hi,
ich habe sie schon gedreht
aber es passiert immer noch nichts :(
Ich habe sie getestet

daniel

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich habe einmal den Code von der Hex file aus dem Assembler und der
Hex- File, die vom uC heruntergeladen wurde, verglichen. Bei der
Hex-File ein bestimmter Teil ähnelt sich und beginnt ab der Adresse
0x00000 und fortlaufend bis irgendwann nur noch FF in den
Programmspeicher steht.
Die Hex-file vom uC hab ich mal als Anhang mit dabei.
Ich weiss nicht wo der Fehler liegt, vielleicht ist meine
Intialisierung falsch.
Vielen Dank für die Hilfe

daniel

von johnny.m (Gast)


Lesenswert?

> Die LED ist mit der Kathode(war die +?) gegen Port-Pin geschalten
> und mit der Anode gegen Masse.

Ich hoffe, Du hast nen Vorwiderstand drin...

von TravelRec. (Gast)


Lesenswert?

Ich habe mich vorhin schon über Deinen Aufbau des ASM-Files gewundert,
wollte aber nicht klugscheißen. Vielleicht nimmst Du alle .def-Zeilen
mal ganz nach oben und legst dann erst die Vektortabelle an und direkt
danach dann das Hauptprogramm. Laß doch auch mal den
AVR-Studio-Assembler drüberschauen, gibt´s kostenlos im Netz bei
www.atmel.com. Da siehst Du dann gleich, ob´s strukturelle oder
syntaktische Fehler im Quelltext gibt.

von Karl heinz B. (kbucheg)


Lesenswert?

Und vor allen Dingen:
Nimm ein einfacheres Testprogram.
Ein Programm das sonst nichts anderes tut als den
Port zu initialisieren und dort was auszugeben (*)
Nicht mehr.
Damit kannst du dann mal abprüfen ob deine Tool-Chain
(Assembler, Brennprogram) überhaupt richtig funktioniert.

(*) du könntest mal 0xAA ausgeben. Das ist ein Muster
bei dem jedes 2. Bit auf 1 steht. Wenn du deine Leds
richtig rum angeschlossen hast, entweder nach Masse
oder Vcc muss auf jeden Fall jede 2-te Led leuchten.

von daniel (Gast)


Lesenswert?

Hi
Ja, ich denke das werde ich auch erst einmal so machen. Und es mit
einem einfachen Programm testen.
Wahrscheinlich sind strukturelle Fehler drin. Leiderns kann ich nicht
so richtig debuggen, da ich nur einen Programmer habe und AVR - Studio
diesen nicht unterstützt.

Vielen dank für die Infos

daniel

von daniel (Gast)


Lesenswert?

Hi,
ich habe nun einmal so ein testprogram geschrieben. für ein paar
einzelne LED's. Hab nun mal eine Schaltung gezeichnet und sie mit
hinzugefügt. Ausserdem die Hex-File aus dem Flash des uC und die vom
Compiler des AVR-Studios.
Leiderns funktioniert es immer noch nicht :(.
Ich weiss nicht wo ran es liegt. Es sieht gut aus mit dem Programmer.
Ich denke er schreibt ordnugsgemäss ohne Fehler das Programm in den
Flash.
Kann es daran liegen dass ich keine LOCK-Bits setze? Oder dass ich
überhaupt nichts an den Fuses-Bits und Lockbits verändere?

Ich bin dankbar für jeden Hinweis
daniel

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hier die Datein im Anhang als Zip-Archiv
daniel

von johnny.m (Gast)


Lesenswert?

Moment mal! Du hast einen fabrikneuen µC und gar keine Einstellungen an
den Fusebits vorgenommen? Ich hoffe, Du weißt, dass die AVRs im
Auslieferungszustand z.B. mit internem Oszillator bei 1 MHz Takt
laufen, um nur ein Beispiel zu nennen...

Abgesehen davon sehe ich tatsächlich, dass Du keine Vorwiderstände vor
den LEDs hast! Wenn die keine integrierten Vorwiderstände haben, hast
Du Dir wahrscheinlich bereits beim ersten Einschalten die Porttreiber
zerschossen!

von daniel (Gast)


Lesenswert?

Hi,
ja ich weiss, dass es nur 1 MHz ist.
Aber die Port-treiber haben sowieso eine Strombegrenzung von 40 mA?
daniel

von johnny.m (Gast)


Lesenswert?

Am Reset solltest Du übrigens noch einen Kondensator gegen GND
einbauen...

von johnny.m (Gast)


Lesenswert?

Die Porttreiber haben keine Strombegrenzung!!!!! Die 40mA sind der
maximale Strom, den sie können, ohne Schaden zu nehmen. Begrenzen musst
Du ihn selber. Und da Du es anscheinend nicht getan hast, dürfte das das
tragische Ende des viel zu kurzen Lebens des Porttreibers gewesen sein.
Wenn Dir da mal nicht die WMF (World Microcontroller Foundation) aufs
Dach steigt...

von daniel (Gast)


Lesenswert?

HI,
vielen Dank, ach Sch**** da lag mein PWM-Signal :(.
na dann werd ich mal den Strom begrenzen.

daniel

von Oliver (Gast)


Lesenswert?

Die Strombegrenzung in den Ports löst aber nur einmal aus und läßt sich
nicht zurückstellen.

von Tim (Gast)


Lesenswert?

Nur eine Frage -ich kann avr assembler nicht- unterscheidet der zwischen
Groß- und Kleinschreibung?
Der Reset Vektor sagt rjmp init, die Sprungmarke heißt INIT.

von Karl heinz B. (kbucheg)


Lesenswert?

Dein Programm erscheint mir immer noch zu kompliziert
um die grundlegende Funktion des µC zu kontrollieren.

Probier doch mal, ganz simpel:

.include "m8515def.inc"  ; ATmega8515

  ldi  wr,0x07
  out  DDRB,wr
  ldi  wr,0x05
  out  PORTB,wr

main:  rjmp  main

Die LED würde ich mal abklemmen und einfach mal mit dem
Voltmeter die Ausgänge kontrollieren.

* die Programmierung kontrollieren
  (aus dem µC auslesen und vergleichen)

* nach dem Flashen den Programmer von der Stiftleiste
  abzeiehen, nicht dass dir der den Reset auf Low zieht.

* danach sollte der µC auf jeden Fall laufen
  (du hast doch noch nicht an des Fuses gespielt, oder?)
  und am PortB solltest du mit dem Voltmeter messen
  können
  PB0  5 Volt
  PB1  0 Volt
  PB2  5 Volt

Das du dir den Porttreiber schon zerschossen hast, ist
durchaus möglich. Allerdings haben bei mir ein paar Tinys
diese Tortur auch überlebt.

von daniel (Gast)


Lesenswert?

@Karl Heinz Buchegger
Danke für die Hilfe. Es gibt mir noch ein bisschen Hoffnung, dass die
Treiber meine Dummheit überlebt haben.

daniel

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hi
@ Karl Heinz Buchegger
Hab es so getestet wie beschrieben, jedoch konnte ich keine Spannung
messen. So dacht ich mir naja vielleicht ist der Port-Treiber defekt
und habe dann eine anderen Port genommen. Aber an diesem war auch
nichts zu messen. Der uC bekommt eine Spannung von 5,11 V.
Ich werde es mit noch dem Port A testen. Wenn er dann immer noch nicht
geht muss ich wohl annehmen dass er kaputt ist :(
Oder hat jemand eine Idee woran es liegen kann. Ich nehme an das der
Programmer ordnungsgemäß schreibt. Ich kann auch aus dem uC die Hex
file lesen und vergleichen. Der AT ist eine Little Endian Maschine? im
Speicher von uC ist alles genau andersrum wie im AVR-Hex-File.
Im Anhang habe ich die beiden datein.
Kurztest    das geschriebene Hex-File
uC-Kurztest vom Flash des Mikrokontrollers nach dem Schreiben
Kann mir jemand sagen ob die Files in Ordnung sind?
die ASM File ist so:
.def  wr  = r16
.include "m8515def.inc"  ; ATmega8515

    ldi    wr,0x0F
  out    DDRC,wr
  ldi    wr,0x0F
  out    PORTC,wr

main:  rjmp  main

Viele Dank
daniel

daniel

von Läubi (Gast)


Lesenswert?

Ich behaupte einfach mal der uC befindet sich im dauerreset, das Problem
hatte ich auch mal, beschreiben udn lesen kannste ihn dan imemr nur
läuft das programm nie an...

von johnny.m (Gast)


Lesenswert?

Hast Du das Programmiergerät zum Testen des Programms abgeklemmt? Wenn
nicht, dann versuch das mal...

@Tim:
Der AVR-Assembler ist nicht case-sensitiv. Im Unterschied zu C ist es
da egal, ob Du INIT, init, InIt, INit oder inIT schreibst...

von johnny.m (Gast)


Lesenswert?

...Ach ja, und wenn es trotz abgeklemmtem Programmer nicht läuft, schau
mal, ob Du anderswo auf der Reset-Leitung nen Masseschluss hast.

von Oliver (Gast)


Lesenswert?

Beschreib nochmal, wie der Reset-Pin überhaupt beschaltet ist, die
Beschreibung oben verwirrt mich.

von johnny.m (Gast)


Lesenswert?

@Oliver:
Er hat doch oben ein Bild geschickt...

von Oliver (Gast)


Lesenswert?

Wenn das die Dateien im ZIP-Archiv sind, die kann ich mir hier leider
nicht ansehen. Sowas sollte man als gif oder png schicken. Aber egal.

Also dann hat er wohl Reset per Pull-up an VCC und der Schalter ist nur
für External Reset nach GND? O.K.
Wie siehts mit Brown-out und Watchdog-Reset aus? Evtl. mal
deaktivieren? Bin im Moment im Unklaren, wie die ausgeliefert werden.

von johnny.m (Gast)


Lesenswert?

@Oliver:
Die Reset-Beschaltung sieht in seinem Bild im Prinzip OK aus (47k gegen
VCC und Taster gegen GND), bis auf den fehlenden Kondensator gegen GND,
worauf ich ogen schon mal hingewiesen habe.

Er spricht aber von einem selbstgebauten Programmer. Möglicherweise ist
der nicht i.O. und zieht den RESET permanent auf GND, wenn er ihn
angeklemmt lässt. Das wäre zumindest eine Erklärung, warum er zwar
programmieren kann, jedoch sein µC anscheinend nicht läuft.

von Karl heinz B. (kbucheg)


Angehängte Dateien:

Lesenswert?

Hier ist nochmal seine Schaltung.

Bis auf die Sache mit den Leds schauts eigentlich
gar nicht so schlecht aus.

Am 7805 muesste man noch arbeiten.
An Vccin: wo kommt da die Spannung her? Steckernetzteil?
Ev. da mal einen 1000 µF Elko nach Masse schalten
(zur Siebung). Auch 2 100nF Kondesatoren ( von 1 nach 3,
von 2 nach 3) sind kein Fehler. Allerdings hat bei mir
noch kein 7805 ohne diese Kondi's versagt oder ist geschwungen.
(was aber nichts heissen mag)

Den 47n Kondi: soll das der Siebkondi sein, der möglichst nahe
am µC angebracht wird? Bischen klein, 100 nF wären besser.

Aus dem bisher gepostetn lese ich raus, dass er noch nicht
an den Fuses war. d.h. der Quarz ist zwar nett, arbeitet
aber noch nicht. Macht nichts: der interne Oszillator schwingt
schon (sonst könnte er auch nicht flashen / lesen).

von Läubi (Gast)


Lesenswert?

Vieleicht ist der Taster aber einer welche Standardmäßig geschlossen
ist... und somit den µC im Reset gefangen hält.

Am besten mal direkt am Resetpin die Spannung messen.

von Oliver (Gast)


Lesenswert?

Ich würde auch mal einen kleinen Kondensator von Reset nach GND
schalten, um tTOUT zu verlängern. Ansonsten hätte ich auch den starken
Verdacht, daß irgendetwas (z.B. Programmer) die Reset-Leitung auf GND
hält. Miss doch mal den Zustand des Reset-Pins, wenn der Programmer
nicht aktiv ist.

von daniel (Gast)


Lesenswert?

Hi,
Vielen,vielen dank für die Hilfe. Lösen konnte ich es jedoch immer noch
nicht, werde morgen wieder weiter suchen.
Ich verwende als Spannungsquelle eine Gleichstromtrafo 12DC 0.6A wie
man in von der Modeleisenbahn kennt.
Ich ziehe stets den Programmer ab und drücke dann den Reset-Pin.
ich messe am uC und auf dme Reset liegt eine Spannung 4.82V.
Ich werde das mit den Watchdog und dem BurnOut überprüfen. Aber BurnOut
kommt nicht in frage da ich konstant 5.12V am Controller habe. Was
vielleicht sogar ein bisschen viel ist. Zwischen Reset Pin und GND habe
ich noch keinen Kondensator gelötet, aber das werde ich noch machen.
ansonsten ist ja eben noch der Quarz angeschlossen VCC Reset,
MISO,MOSI,SCK ansonsten mehr nicht.
Er ist bestimmt im Dauer-Reset, nur ich weiss nicht warum.
Wenn er im Dauer-Reset ist, habe ich vielleicht Glück und der
PORT-Treiber ist doch nicht kaputt.

daniel

von Läubi (Gast)


Lesenswert?

Schalte mal Brown out aus... hatte da auch shcon ärger mit.
hoffentlich hast du inzwischen vorwiederstände an den LEDs ;)
Und miss mal alle Pins nach was da so anliegt.
Ich hatte mal ne Kalte lötstelle, und durch aufstecken des programmers
ließ er sich programmieren sobald aber etwas mehr power nötig war ging
er in reset

von daniel (Gast)


Lesenswert?

Hi,
mal zu den Tastern, beim Drücken schliessen sie wie gezeichnet.Ich habe
es gemessen.
Ja :) die LED erfreuen sich bereits mit Vorwiderständen.
Zu kalten Lötstellen, ich messe direkt an den Pins die Spannung.
daniel

von daniel (Gast)


Lesenswert?

Hi,
es liess mir keine Ruhe. Und ich habe nochmal am Reset-zweig gemessen
und festgestellt das der Taster einen wiederstand von 66.6 kOhm
aufweisst. mit den 47k ergibt sich eine Spannung von errechnet 2.8V.
Damit liegt der Pegel im undefinierten Bereich und der uC arbeitet
nicht.
Morgen werd ich den Schalter wechseln und dann noch einmal testen.

daniel

von Christian (Gast)


Lesenswert?

@daniel: Taster im ausgebauten Zustand gemessen? Sonst misst Du Mist.

von Läubi (Gast)


Lesenswert?

Taster kannst du generell auch weglassen vorerst!

von daniel (Gast)


Lesenswert?

Hi,
der uC funtioniert immer noch nicht. Habe nun schon den BrownOut
ausgeschalten und auch noch ein paar mehr Kondensatoren
eingelötet.Trotz eines kleinen Testprogrammes und 5V am Reset, VCC und
interner Osszilator. messe ich trotzdem nur an allen anderen
Ausgangspins 0,13V.
Testprogramm:
.def  wr  = r16
.include "m8515def.inc"  ; ATmega8515
.cseg
    ldi    wr,0x0F
  out    DDRC,wr
  ldi    wr,0x0F
  out    PORTB,wr
  ldi    wr,0x0F
  out    DDRB,wr
  ldi    wr,0x0F
  out    PORTC,wr
  main:  rjmp  main

Ich weiss überhaupt nicht wo der Fehler liegt :(. Vielleicht ist ja
auch der uC defekt. Aber er ist frisch noch nie programmiert und der
Speicher noch blank. Er kam nicht einmal mit meiner Lötarbeit in
verbindung, erst als alles fertig war, wurde er auf dem Sockel
plaziert.
Wenn noch jemand eine Idee hat woran es liegen könnte. Ich erfreue mich
jeder Hoffnung :(

daniel

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal ein Bild von der Hardware

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Und die andere Seite

von daniel (Gast)


Lesenswert?

@Oliver
wie meinst du das mit der Strombegrenzung? Du hattest oben geschrieben
die Strombegrenzung löst nur einmal aus. Im Datenblatt habe ich gelesen
das die I/O durch Dioden gegen VCC und GND gesichert sind.
Wenn mir der Port-treiber kaputt gegangen ist, dann dürfte das doch
nicht bei allen Pins der Fall sein?

Wird wohl der Controller defekt sein :( werd ich es mal mit dem Atmega
8 versuchen.
daniel

von ArminD (Gast)


Lesenswert?

Mit einmal Aulösen meint er wohl dass die Ports danach
hin sind.
Der Schutz mit den Dioden bezieht sich auf die Beschaltung
als Eingang.



Gruss,
Armin

von daniel (Gast)


Lesenswert?

@ArminD

heisst das, dass alle Ports defekt sind, oder nur die die falsch
beschaltet wurden?

daniel

von Karl H. (kbuchegg)


Lesenswert?

Bei dem Drahtverhau ist es schwierig die grundlegenden Leitungen
zu verfolgen.
Dein 'Gleichstromtrafo': Wie gut ist seine Gleichspannung?
Ich würde mal Sicherheitshalber einen Elko an den Spannungs-
eingang löten: irgendwas ab 100µF aufwärts. 1000µF wären
ideal.

Ansonsten: + und - scheinen dort zu sein, wo sie hingehören.
Nur den Weg vom Reset (Pin 9) zu + kann ich nicht vollständig
verfolgen. Das Kabel verliert sich im Dickicht oben beim Widerstand.
Ich sehe auch am Pin 3 vom 7805 keine 2.te Lötperle bzw. ein 2.tes
Kabel das von dort wegginge.

(Beim nächsten mal nimm lieber eine Streifenrasterplatine. Die
Atmels haben meist eine 'schöne' Pinbelegung, die sich relativ
gut dafür eignet)

von skragan (Gast)


Lesenswert?

boah... dafür das du protel (?) benutzt, musst du aber noch ein paar
ganz kleine grundlagen in aufbau- und verbindungstechnik lernen. ;)

das meiste wurde ja schon angesprochen - hier nochmal ein paar tips von
meiner seite:

- nimm nen kleinen 8pinner oder nen tiny26 zum testen
- bau die schaltung sauberer auf, entweder streifenraster oder
punktraster und silberdraht
- schau dir im datenblatt des µC die minimalbeschaltung (reset etc.)
an
- 100nF direkt an der spannungsversorgung von IC´s
- 100nF am ein- und ausgang von stabis (JA, ich hatte schon schwingende
stabis)
- lass den externen quarz weg, nimm die internen zu anfang
- mach dich mit den grundlegenden fuses vertraut (takt, brown out,
etc)
- löte zu anfang nur EINE led an einen port, mit vorwiderstand (wenn du
EINE an und aus schalten kannst (per software), dann baust du einen
taster an.
- auch taster lege ich immer über einen "angstwiderstand" gegen masse
(falls du mal was falsch programmierst, raucht nicht gleich der port
weg)
- ich baue immmer eine led an die 5v, um zu sehen ob spannung da ist
:)
- sorge für eine vernünftige spannungsversorgung

gruß skragan

von skragan (Gast)


Lesenswert?

ach ja, und die internen pull-ups für den tastereingang musst du auch
programmieren oder hardwaretechnisch anflicken ;)

gruß skragan

von daniel (Gast)


Lesenswert?

Hi
Vielen dank für die Infos,
dann werd ich nochmal die schaltung entflechten. Den externen Quarz
habe ich bereits ab. Ich werde nur noch die ISP dranlassen.
Bei Reset habe ich noch ein Kondensator von Pin gegen Masse von 47nF
gelötet, das verlängert wie oben gesagt die Ttout-zeit und ausserdem
liegt der Pegel somit fast bei VCC. Pull- UP widerstand von 220 Ohm.
ansonsten ist noch eine LED an PD1 mit Vorwiderstand 220 Ohm.
Zwischen GND und VCC direkt am uC ein Kondensator von 100nF
beim L7805 am EIN und AUS jeweils gegen GND, 100nF Kondensatoren gegen
GND
BODEN habe ich auf 0 gestellt

Ich werd es nochmal so versuchen

Daniel

von johnny.m (Gast)


Lesenswert?

> ...Pull- UP widerstand von 220 Ohm...

Bisschen wenig, meinste nicht? Dann kannste Dir die 47 nF auch sparen
(Zeitkonstante 47 nF * 220 Ohm = ca. 10µs, das ist so gut wie nix)

von daniel (Gast)


Lesenswert?

Hi
Sorry, dass sind keine 220 Ohm das sind 47kOhm, nur bei den LED sind es
220 Ohm.
2,2ms = 47k*47nF

daniel

von daniel (Gast)


Lesenswert?

Hi,
ich habe alles nochmal aufgebaut und mit der minimalen Belegung
angeschlossen. Hatte aber keinen Erfolg.

daniel

von daniel (Gast)


Lesenswert?

Hi,
habe nun den Controller Atmega8 in die Platine eingelötet. Auch dieser
lies sich mit dem kleinen Testprogramm beschreiben. Aber an den
Ausgangspins war nicht der zu erwartende HIGH-Pegel zu messen. Ich
werde wohl nun mich mal um ein Oszilloskop kümmern.
Mich wundert das er sich beschreiben lässt aber dass Programm nie
arbeitet.
Wenn der Programmer nicht angeschlossen ist zieht der Controller einen
Strom von rund 2mA und plus die LED (Anzeige der Betriebsspannung) sind
dann 20mA
Wenn der Programmer angeschlossen ist zieht der Controller rund 100mA
und die LED wiederum rund 20 mA. Mich wundert, dass er sich wunderbar
programmieren lässt aber die Programme nicht arbeiten.
Testprogramm:
.def  wr  = r16
.include "m8def.inc"  ; ATmega8
.cseg
  ldi    wr,0xFF
  out    DDRD,wr
  ldi    wr,0xFF
  out    PORTD,wr
main:
  rjmp   main


daniel

von Karl heinz B. (kbucheg)


Lesenswert?

> habe nun den Controller Atmega8 in die Platine eingelötet. Auch
> dieser lies sich mit dem kleinen Testprogramm beschreiben. Aber
> an den Ausgangspins war nicht der zu erwartende HIGH-Pegel zu
> messen

Hmm. Irgendwas machst du grundlegend verkehrt. Ich hab aber
beim besten Willen keine Idee mehr, was das sein könnte.

Nackter, niegelnagelneuer Controller +
stabile Versorgungsspannung +
10 kOhm vom Reset Pin nach Vcc +
100 nF am Prozessor zwischen Vcc und GND
-> das Ding sollte wunderbar arbeiten.

Wenn also die µC noch nicht hinüber sind, bleibt
nur die Versorgungsspannung als mögliche Fehlerquelle.
mal so ein Gedanke: Du hast nicht zufällig 3* 1.5V Batterien
rumliegen die du mal probehalber benutzen kannst.

von daniel (Gast)


Lesenswert?

Hi,

wenn die Programme nicht arbeiten, wird keiner von beiden kaputt sein.
Sie sind ganz frisch aus der Verpackung. der Flash wurde bei einem zum
ersten Mal beschrieben. Aussderdem lassen sie immer wieder mit sich
arbeiten wenn man die Fuses schreiben will und wenn man die Programme
aus dem Flash liest oder in den Flash schreibt.
ich werde es mal mit 3 * 1,5 V Baterien versuchen. Ausserdem werde ich
mir mal meine Spannungsversorgung mit dem Speicheroszilloskop
anschauen, kann mir aber nicht vorstellen, dass es Spannungseinbrüche
gibt.

 Die Software ist doch in Ordnung oder? Mir fällt nichts auf was flasch
programmiert sein sollte. Vor allem weil sie so kurz ist :).

Vielen Dank
daniel

von Karl H. (kbuchegg)


Lesenswert?

> Vor allem weil sie so kurz ist :).

Genau deshalb habe ich ja so extrem kurze Programme
vorgeschlagen. Die sind so trivial, da kann nichts
verkehrt sein.

Viel Glück.

von Profi (Gast)


Lesenswert?

Du tust mir echt leid, warum läuft das denn nicht bei Dir?
Wir müssen systematisch vorgehen.
Kann mal jemand ein getestes Programm samt hex-file posten, das
Daniel programmieren kann.

@Daniel:
Welche µC-Chips hast Du zur Verfügung?

Worüber ich mir Gedanken mache, ist Dein Hinweis, dass die
ByteReihenfolge beim Auslesen anders war (Autor: daniel Datum:
04.08.2006 13:40).

Vielleicht versuchst Du es mit einem anderen Brennprogramm. Bei mir hat
AVRdude in der DOSbox an der Parallel-Schnittstelle (hast Du eine
solche?) auf Anhieb funktioniert.

Wovor ich immer wieder warne: Vorsicht bei Verbinden von Schaltungen
mit unterschiedlichem Potential! Denke an die Koppelkapazität von
(Stecker-)Netzteilen und an statische Aufladung!

Gerade beim Programmierstecker, wenn der PC geerdet ist und die
Schaltung über das Netzteil "in der Luft / am Netz hängt".
Wenn beim Stecken zuerst eine Signalleitung verbindet, geschieht der
Potentialausgleich über diese (sehr ungesund).

Oder andersherum der Laptop nicht geerdet ist (zweipolige Netzleitung).
Gerade hier ist es besonders gefährlich, da wirklich
(Entstör-)Kondensatoren vom Netz auf die Ausgangsbuchse führen können!
Am besten, alle Gnd (vor dem Zusammenstecken) verbinden.

Gerade der RST-Pin ist sehr gefährdet, da er keine Schutzdioden enthält
(habe ich mal gehört).

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
Ich hab zwei uC zur Verfügung, einen ATmega8515 und einen ATmega8.
Ich programmiere es mit SP12 , über einen selbsgebauten Programmer und
der Parallelschnittstelle.
Ich stecke immmer zuerst GND an und dann die Restleitungen. Nur selten
passiert mir dass, wenn ich es vergessen hab.
Ich werde dann nochmal die beiden Files posten von Hex und von uC.
noch ein Bild von meinem Programmer

daniel

von Profi (Gast)


Lesenswert?

Hast Du das mit der Versorgung geprüft?

Evtl. wirklich mal eine 4,5V-Batterie oder ähnliches verwenden.
Manche Steckernetzteile haben nämlich überhaupt keinen Kondensator
drin, dann macht Dein µC 100 mal in der Sekunde einen Reset.

Gerade habe ich nochmal alles durchgelesen, hast Du ein Oszi zur
Verfügung? Dann musst Du es doch schaffen, das Ding zum Laufen zu
bringen.

Hast Du jemanden, der sich ein wenig mit Technik auskennt, den Du
fragen kannst? Vier Augen sehen mehr als zwei, und zwei Hirne ergänzen
sich oft ganz gut!

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich habe nun einmal mit den Osszi die Eingangspannung überprüft. Sie
ist eine Katastrophe. Siehe Osszibild oben. eine Differenz von 24V.
So ist auch die Spannung am Controller nicht linear und genauso am
Reset-Pin.
Ich denke ich muss noch ein Kondensator gegen Masse schalten und eine
Z-diode. Wie stark kann ich die Z-Diode belasten?
daniel

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Die Spannung am Controller.

von daniel (Gast)


Angehängte Dateien:

Lesenswert?

Die Spannung am Reset-Pin.

Kann durch diese fehlerhafte Spannung der Controller kaputt gehen?
Mich wundert es auch das er sich dennoch programmieren lies. Der Reset
wird ja automatisch auf LOW gehalten. Somit ist er kein Problem. Aber
dass er sich trotz der Schwankungen in der Versorgungspannung
programmieren lies. Vielleicht lieferte ja mein ParallelPort noch die
nötige Restspannung.
Ist der Controller vor Überspannung geschützt. Wie zum Beispiel eine
Spannung von 6 V?

daniel

von Karl heinz B. (kbucheg)


Lesenswert?

Das sieht eher aus, als ob dein Netzteil keine
Gleichspannung sondern eine Wechselspannung liefert.
Quasi ein Trafo und sonst nichts. Von wegen:

> Ich verwende als Spannungsquelle eine Gleichstromtrafo
> 12DC 0.6A wie man in von der Modeleisenbahn kennt.


Gleichrichter + 1000 µF vor den 7805 schalten
und deine Probleme sind gegessen. (Fürs erste, auf Dauer
wird dein 7805 mit dem angebotenen ~14Volt nicht glücklich
werden, sprich er wird heiss).


Und wieder mal bewahrheitet sich die alte Weisheit:
meist sind es die einfachen Dinge.

von daniel (Gast)


Lesenswert?

Hi,

es ist wirklich ein Eisenbahntrafo, aber er ist schon sehr alt. Ich
wusste nicht dass seine Gleichspannung so aussieht. Naja ist nicht
immer das drin was drauf steht.
Damit es länger hält sollte man dem 7805 wohl gleich rund 6V geben
damit er seine Arbeit leicht machen kann.

Vielen Dank für die Hilfe
daniel

von daniel (Gast)


Lesenswert?

Hi,
ich werde mir ein kleines Netzteil bauen. Mit
Sicherung,Trafo,Gleichrichter,Glättungskondensator,Z-Diodenstabilisierun 
g.
Nun hab ich jedoch noch eine Frage. Ich habe nur 1000uF /16V mein Trafo
bringt eine Wechselspannung von 12 V, das steht drauf und ich meine die
12 V sind Effektivwert. Das würde aber bedeuten das die Spitzenspannung
rund 17 V betragen. Wie steht es da um den Kondensator kann man ihn
dennoch einsetzen obwohl es schon über die 16V ist?
Senken die Gleichrichterschaltung das Potential am nachgeschalteten
Kondensator?

Vielen Dank
Daniel

von Profi (Gast)


Lesenswert?

16V ist zu wenig, wenn Du ihn trotzdem verwendest, wird es vermutlich
auch gehen, aber die Frage ist: wielange.

Wie Du an deinem ersten Oszillogramm ablesen kannst, ist die Spannung
24V, da die Spannungsangabe des Trafos bei Nennlast ist. Bei Leerlauf
oder geringer Last ist die Spannung idR 5-20% höher als die Angabe.
Also ist ein 25V-Elko das mindeste. Durch Störspitzen kann die Spannung
am C deutlich darüber ansteigen.


6V am Eingang es 7805 sind zu wenig. 8-10V sind optimal. Sonst brauchst
Du einen LowDrop-Spannungsregler, der ist mit weniger als 6V schon
zufrieden.

"Senken die Gleichrichterschaltung das Potential am nachgeschalteten
Kondensator?"
Ja, die Spannung sinkt um 1,2 - 2,0 V durch 2* DiodenDrop.
Wenn Du Dir noch was Gutes tun willst: schalte parallel zur
Primärwicklung einen RC-Snubber (100 Ohm in Serie mit 100nF 300VAC)
oder einen 250VAC VDR (Überspannungsableiter, Surge Suppressor).
Sonst entsteht beim Ausschalten ein störender HF-Puls.

Ansonsten gibt es auch günstige Steckernetzteile, ausgeführt als AC,
unfiltered DC (ohne C), filtered DC (mit C), stabilisiert mit
Längsregler und Schaltnetzteil (Viel Handy-Ladegeräte).

von thkais (Gast)


Lesenswert?

Im Elektronik-Fachhandel gibts doch günstige Wandwarzen, teilweise mit
Schieberegler für verschiedene Spannungen. Sollten für weniger als 10
Euro zu haben sein.

von daniel (Gast)


Lesenswert?

Hi,
Vielen Dank. Na dann werde ich mal die uC ordentlich zum laufen
bringen. Wird ja auch Zeit!
Daniel

von daniel (Gast)


Lesenswert?

Hi,
das Lämpchen leuchtet :)

ok zurück zum Fach :), habe nun endlich einen 1000uF/25V bekommen und
hab ihn nach meiner Verpolschutzdiode eingelötet. Dann mit dem Osszi
nochmal die Spannungen(Eingang/Kondensator/Reset) geprüft. Welche sehr
sauber gelättet aussehen.
Es lag nur an der Eingangsspannung.
Ich danke sehr für eure Hilfreichen Tipps und Hinweise.
Nun werde ich mich erst mal der richtigen Aufgabe widmen wofür es
eigentlich gedacht war.

Vielen Dank
daniel

von daniel (Gast)


Lesenswert?

Hi,
noch zur vollständigkeit die drei Oszi-Bilder. (pro Bild,ca.1,3MB)
http://www.dlehne.htwm.de/Proj-uC/Eingang.jpg
http://www.dlehne.htwm.de/Proj-uC/VCC.jpg
http://www.dlehne.htwm.de/Proj-uC/Reset.jpg
Nun wird mir auch klar warum er sich programmieren und auslesen lies
und alles mit dem Programm in Ordnung schien.

Man sollte stets auf ein Dauer-Reset achten und auf eine lineare
Gleichspannung. Ein Oszilloskop ist dafür unverzichtbar. Oder man hat
einen 1000uC/30V Kondensator bereit ihn vor den 7805 zu schalten.
Die Kapazität ist so stark das er 1 Sek nach Netztrennung immer noch
den uC mit der nötigen Spannung versorgt.


Ich werde mir überlegen ob ich die Schaltung weiter so betreibe, es
liegen immerhin über 20V am LM7805.

Daniel

von Karl heinz B. (kbucheg)


Lesenswert?

Überschlagsmässig:

Dein 7805 muss daher (20-5) = 15 Volt vernichten.
Bei, sagen wir mal, 100 mA die deine Schaltung braucht
sind das:  15 * 0,1 = 1,5 Watt die er irgendwie loswerden
muss.
Irgendwie bedeutet, wie so oft in der Technik, in Form
von Wärme. Ein normaler 7805 ist für etwa 8 bis 9 Volt
Eingangsspannung bei 1 Ampere ausgelegt, also etwa 3 Watt
Verlustleistung (hab jetzt das Datenblatt nicht da). Das
geht aber nur mit Kühlkörper! Deine 1,5 Watt sind da also
noch im Bereich. Warm wird er trotzdem werden, vor allem
wenn du deine Schaltung noch ausbaust und der Stromverbrauch
noch ansteigt. Ein Kühlkörper ist da sicher kein Fehler.
Wenn es dich also nicht stört, dass du mehr Energie
in Form von Wärme (1,5 Watt Verlustleistung kontra
5 * 0,1 = 0,5 Watt Nutzleistung) umsetzt als du hinten
in den µC hineinstopfst, kannst du das mit einem Kühlkörper
durchaus regeln. Schön ist es nicht, aber gehen müsste es.
Ein 7805 hat eine Temperatursicherung. Der schaltet ab, wenns
ihm zu warm wird.

von daniel (Gast)


Lesenswert?

Hi,
Ja du hast Recht, zur Zeit ist dass nur eine Probeschaltung.
Funktioniert es oder nicht, deswegen ist es nicht so wichtig mit
Verlusten. Aber ich habe auch noch einen L293DN, der braucht auch einen
Kühlkörper. Im Datenblatt war es so angegeben, dass man entweder ein
Lötpad mit einer bestimmten Fläche auf der Platine an den GND anbringt
oder ein Kühlblech anbringt.
Wo kann man solche Kühlbleche kaufen, sowohl für den LM7805 und den
L293DN (DIP16).

Vielen Dank, deine Hinweise sind sehr gut
Daniel

von Alex G. (alexgrah)


Lesenswert?

so etwas kann man alles bei reichelt kaufen (www.reichelt.de).

übrigens: nur um einen µC zu programmieren, braucht man eigentlich kein
ossi - man sollte aber die eingangsvariablen kennen, d.h. was man "in
die schaltung reintut", sollte man wissen - in diesem fall dein
unzureichendes netzteil. wenn du dir ein kleines vernünftiges netzteil
baust, brauchst du darauf eigentlich nicht mehr zu achten. ;o)

gruß alex

von Karl heinz B. (kbucheg)


Lesenswert?

> d.h. was man "in die schaltung reintut",

Nicht nur 'in die Schaltung'.
Man glaubt es nicht wie oft in Foren tagelang nach
Fehlern in Funktionen gesucht wird und zum Schluss
stellt sich raus, dass die Funktion gar nicht die Werte
bekommt die der Poster die ganze Zeit angibt. Er hat sie
einfach geschätzt und nie überprüft.

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
Noch kein Account? Hier anmelden.