Forum: Mikrocontroller und Digitale Elektronik Umstieg von Pic auf ATmega -> HELP!


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martinw (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute!

Also beschäftige mich jetzt schon längere zeit mit PICs und will jetzt
auch mal ein wenig mit AVRs arbeiten!
Als Programmiergerät verwende ich den SmartProg von Elnec.
Mein erstes kleines Programm schaut genau so aus:

include "m16def.inc"

Init:
    ldi r16, 0xFF    ;Port B durch Ausgabe von 0xFF ins
    out DDRB, r16       ;Richtungsregister DDRB als Ausgang
konfigurieren

    ldi r16, 0xFF
    out PORTB, r16      ;PORTB auf 0xFF setzen -> alle LEDs aus

Main:
  sbi  PORTB,0
  cbi  PORTB,0
  rjmp  Main

Aber es passiert genau garnichts! Am Oszilloskop müsste der PORTB,0 Pin
ja ein Rechteckssignal ausgeben oder? Aber er ist nur auf Low! Der 2Mhz
Quarz den ich am Chip betreibe schwingt aber schön brav, sieht man im
Oszzi. Angehängt habe ich den Screenshot der Fuse bits, da ich mir mit
denen nicht so ganz sicher bin ob die so stimmen...

Vielleicht könnt ihr mir da mal schnell weiter helfen.

Danke

MfG Martin W

von Dieter B. (Gast)


Lesenswert?

Hallo

Stackpointer einstellen ?

MFG
Dieter

von Martinw (Gast)


Lesenswert?

Hmm Stackpointer!?
Was wo wie??? Ich mich nix auskennen mit AVR!!!
Ach ja handelt sich um einen ATMEGA161!

Danke

MfG Martin W

von Fritz Ganter (Gast)


Lesenswert?

Hallo Martin!

Mach mal zwischen
sbi  PORTB,0
und
cbi  PORTB,0
ein paar NOPs rein.

von Martinw (Gast)


Lesenswert?

Die Nops helfen auch nichts, das oszilloskop müsste übrigens so hohe
Frequenzen noch leicht schaffen...

MfG Martin W

von Martinw (Gast)


Lesenswert?

Ok es geht jetzt!

Lag am Quarz! Keine Ahnung wieso aber er hat die 2 Mhz nicht genommen,
mit einem 5 Mhz Quarz geht es jetzt!
Wann sollte man eigentlich slow rising und fast rising power bei den
cksel fuses einstellen?

Danke

MfG Martin W

von Fritz Ganter (Gast)


Lesenswert?

Nimm mal die Zeile
 cbi  PORTB,0
raus, und schau, ob der Ausgang dann auf High bleibt.

von leo9 (Gast)


Lesenswert?

Der stackpointer müsste egal sein, kommen ja keine calls und ints vor.
Mich wundert eher dass obiger source fehlerfrei compiliert wird, vorm
include fehlt ein Punkt. Du solltest auch die richtige .def Datei
laden, die Portdefinitionen sind zwar gleich, aber vielleicht
unterscheiden sich andere Speicherstellen.
Ist der obige Code alles oder nimmst du noch andere Initialisierungen
vor?

grüsse leo9

von Martinw (Gast)


Lesenswert?

Hi

Nein der Punkt ist nur beim Kopieren verschwunden ;-) also ich bekomme
schon eine richtige Hex file!
Aber .include "m16def.inc" passt doch für den ATMEGA161 oder nicht?

MfG Martin W

von leo9 (Gast)


Lesenswert?

sorry, aber ich kann auch nicht alle avrs auswendig, für den mega161
würde ich die m161def.inc verwenden. Die exakten Unterschiede findest
du im Datenblatt, möglicherweise unterscheiden sie sich aber durch die
Speichergröße und dann wirds zum Stack-Initialisieren wieder wichtig
die richtige zu verwenden.

grüsse leo9

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]
  • [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.