mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assemblercode zu Testzwecken


Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nachdem ich mich jetzt stundenlang um den Verstand gelötet habe, möchte
ich nun meine Schaltung auch auf Herz und Nieren testen. Darum habe ich
zunächst eine LED an den Port PB0 gehängt. Mir fehlt jetzt eigentlich
nur noch der passende Assemblercode, um diese LED zum blinken zu
bringen.  Es wäre nett von euch, wenn ihr hier ein kleines
Beispielprogramm posten könntet, dass meine LED alle 5sek. aufleuchten
lässt für etwa 1sek.
Ich benutze übrigens einen 4MHz Oszillator.

Vielleicht gibt es ja sogar einen Code, bei dem das Blinken nach
einiger Zeit immer schneller wird...

Danke, schon mal im Voraus!

Autor: Martin S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dir ist aber schon bewußt, daß Assemblercode prozessorspezifisch ist?

Mit welchem Werkzeug möchtest du denn den Assemblercode übersetzten?
Und mit welchem Werkzeug bekommst du die Binärdateien in deinen
Prozessor?

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich benutze AVRStudio in der Version 4.11

Die Binärdatei möchte ich ganz normal mit dem ISP übertragen.

Autor: Rufus, das dicke Ei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, und welcher MC ist das denn nun?

Autor: Benjamin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Blink etwas schneller aber sollte reichen ansonsten noch ne
warteschleife drüber;-)

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachdem ich die Hex-Datei geflasht habe, startet das Programm dann
eigentlich sofort oder muss ich erst noch ein RESET durchführen?

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

normalerweise setzt der Programmer RESET und gibt's nach dem
Programmieren wieder frei, so dass das Programm ansich gleich beginnt.

Die Funktion des Programms hängt allerdings doch davon ab, welchen µC
du verwendest und welcher da drinnen steht...

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte eigentlich sofort starten aber ein Reset schadet auch nicht. Habe
es eben bei mir Probiert und da hatt es prima gefunzt...
Habe allerdings angenommen das du einen Mega8 benutzt...

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell reicht es bei nem anderen ATMEL die m8def.inc in die Passende
Datei abzuändern....

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mmmmhh, also das flashen meines AtMega8 funktioniert anwandfrei. Doch
irgendwie bekomme ich kein High-Signal am PB0-Port heraus? Woran könnte
das liegen? Die Versorgungsspannung von 5V habe ich auch überall
überprüft, sonst würde das Schreiben/Auslesen ja auch nicht
funktionieren. Ich bin am Verzweifeln...

An meinem PB0-Port liegt ein 470Ohm wiederstand, dann kommt meine LED
und das ganze liegt dann an Vcc. Das ist doch so richtig oder?

Oder mache ich beim assemblieren irgendwie einen Fehler? Ich lade halt
immer die .hex-Datei, die mir AVRStudio 4 herausgibt mit PonyProg2000
hoch. Und wie gesagt, da bekomme ich immer ein successful.

Helft mir bitte... DANKE

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ich auch nicht ganz verstehe. Wenn ich den Quellcode mit AVRStudio
simuliere, dann gehen alle PB-Port auf HIGH und verharren in diesem
Zustand. Sprich: Es findet überhaupt kein blinken statt. Stimmt das
denn so?

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja bei der Simulation wird kein Blinken statfinden. Durch die Schleifen
die zur erzeugung der Pause dienen bleibt die LED beim Simulieren
solange an bis du 0xFF*0xFF mal die Schleife durchlaufen hast.

Eventuell mal mit nen Messgerät überprüfen was ausm PORT rauskommt.

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher dass du PortB hast? Beachte: der ist beim Mega 8  ziemlich
"zerstückelt" verteilt. Hast du die LEDs richtig angeschlossen?

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die LED habe ich ganz links unten (PIN 14) angeschlossen. Wie
gesagt erst Widerstand 470Ohm und dann LED zu Vcc hin...

Autor: Santa Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorschlag: Versuch, folgende beiden noch wesentlich einfacheren
Programme zu Laufen zu bringen:

Programm A:

---------------------------------------
.include "m8def.inc"

ldi r16,0xFF    ;PortB als Ausgang
out DDRB,r16

clr r16      ;AN
out PORTB,r16

loop:
rjmp loop
---------------------------------------


Programm B:

---------------------------------------
.include "m8def.inc"

ldi r16,0xFF    ;PortB als Ausgang
out DDRB,r16

ldi r16,0xFF            ;AUS
out PORTB,r16

loop:
rjmp loop
---------------------------------------

Nach dem Starten der Programme solltest Du den entsprechenden Pegel an
den Pins von Port B mit einem Multimeter messen können (wenn nicht,
wurde das Programm nicht korrekt übertragen oder der Controller ist
defekt).  Ist das der Fall, klemmst Du die LED an.  Leuchtet daraufhin
die LED ordnungsgemäß (bzw. nicht je nach Programm), kannst Du Dein
Blink-Programm flashen.  Wenn die LED dann nicht blinkt, weißt Du, daß
es am Programm liegen muß.

Autor: Santa Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein Tip: Rechne mal aus, wie schnell Dein Testprogramm die LED
blinken läßt.  Wenn die LED nämlich 1000 mal pro Sekunde blinkt, dann
blinkt sie, aber Du siehst sie nicht blinken (sondern konstant mit
etwas verminderter Helligkeit leuchten).  Blinkt die LED dagegen mit
einem Takt von 5 min, dann blinkt sie auch, aber das siehst Du nur,
wenn Du mindestens 10 min draufgeguckt hast. Fazit: Es ist sinnvoll,
sich vorher zu vergewissern, daß die Blinkfrequenz im Sekundenbereich
liegt.

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss ich das eigentlich als Intel-HEX oder als Generic-HEX assemblieren?
Oder kann es vielleicht sein, dass ich irgendwie vergessen habe einen
PORT zu beschalten?

Was ist eigentlich mit dem RESET-Eingang vom Atmega8? Das ist denn so
richtig, dass der andauernd auf HIGH liegt? Wofür ist der
47pF-Kondensator in der Schaltung?

Autor: Santa Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was ist eigentlich mit dem RESET-Eingang vom Atmega8? Das ist denn so
>richtig, dass der andauernd auf HIGH liegt?

Der RESET-Pin liegt andauernd auf High, aber wenn Du Dich nicht der
Möglichkeit der ISP-Programmierung berauben willst, ist es
empfehlenswert, ihn nicht direkt, sondern z. B. über einen 10
kOhm-Widerstand auf 5 V zu legen.

>Wofür ist der 47pF-Kondensator in der Schaltung?

Er dient zur Unschädlichmachung hochfrequenter Störsignale, falls es
solche gibt.  Für die grundsätzliche Funktion der Schaltung ist er
nicht erforderlich. Sein Fehlen dürfte bei Deinem Aufbau nichts
ausmachen.

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ES FUNKTIONIERT !!! BIN TOTAL AUS DEM HÄUSCHEN !

Also an der Schaltung hat es nicht gelegen, die war einwandfrei. (was
ich eigentlich gar nicht fassen kann, bei den ganzen Lötungen)

Ich hatte beim kompilieren eine falsche Option angeklickt und immer den
falschen Code hochgeladen ich Dussel. Da sitzt man stundenlang am löten
und basteln und dann sowas. Echt bescheuert... Auf jeden Fall blinkt
die LED jetzt lustig vor sich hin...

Ich danke euch für eure zahlreichen Postings...

PS: Ich mach jetzt erst mal ne Flasche Sekt auf...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.