mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm starten


Autor: Olaf E. (lotsinn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Allerseits!

endlich komme ich dazu mich mit den Atmel uC`s zu befassen, hab mir 
hierfür schon vor längerer Zeit u.a. ein STK500 zugelegt und jetzt 
endlich angeschlossen.

Ich hab das gerade mit einem ATMEGA32 16PU bestückt und das "Novice`s 
Guide to AVR Development" durchgearbeitet.

In der Simulation arbeitet das auch wunderbärtig, nur nach dem 
übertragen auf den Mega32 leuchteten alle LED`s gleichzeitig und gleich 
hell.
Ich bin davon ausgegangen das die auch bei hoher geschwindigkeit in 
abhängigkeit der wertigkeit der Bit`s unterschiedlich stark 
leuchten/blinken (PWM).
Um sicher zu gehen habe ich mal den Anfangswert statt auf 0xFF auf 0xAA 
umgestellt und siehe da, es leuchtet jede 2te LED.
d.h. das Programm rennt nicht in den LOOP
Muss ich dem Teil nen Tritt verpassen damit das losrennt?

Hier das Prog:

; My Very First AVR Project
.include "m32def.inc"
.def Temp = R16
.org 0x0000
  rjmp  RESET

RESET:

  ldi  Temp, 0xAA
  out DDRB, Temp

Loop:

  out PortB, Temp
  dec Temp

  rjmp Loop

Vielen Dank schonmal für die Hilfe!

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

was du in DDRx schreibst, ist die Datenrichtung! Also eine 0 für input 
und ne 1 für Output.

Da Temp immer überläuft, ändert der Anfangswert am Blinken nicht viel.
Deine Schleife ist viel zu schnell, da wird man mit bloßem Auge nichts 
sehen. Du musst entweder eine Warteschleife einbauen, oder mit den 
Timern arbeiten.

Cu
David

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist viel zu schnell, als daß Du da ´was sehen kannst. Leuchten können 
immer nur die LEDs, deren Ports Du per DDRB aktivierst. Nochwas: die 
LEDs am STK500 sind invertiert. Auf jeden Fall wird die Loop laufen. 
Damit Du etwas sehen kannst, mußt Du das Programm langsamer machen 
(Timer oder Warteschleifen) oder den externen Takt am Controller 
herunternehmen.

Autor: Olaf E. (lotsinn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travel Rec. wrote:
> Es ist viel zu schnell, als daß Du da ´was sehen kannst. Leuchten können
> immer nur die LEDs, deren Ports Du per DDRB aktivierst.


Hallo David, Hallo Travel,

vielen dank für die Fixen Antworten.
Um zu sehen ob es an der Geschwindigkeit liegt oder ob das Programm 
nicht losläuft habe ich ja den Anfangswert 0xAA gesetz, wenn das Teil zu 
schnell ist, dann sollten doch alle LED leuchten oder nicht?

Bei mir leuchten die genau so wie ich den anfangswert in das Register 
Temp schreibe (0xAA = jede 2te LED, 0x01 = LED0 usw.)

für mich sieht das so aus als würde einfach der Loop nicht abgearbeitet 
werden oder bin ich völlig auf dem Holzweg?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
; My Very First AVR Project
.include "m32def.inc"
.def Temp = R16
.org 0x0000
  rjmp  RESET

RESET:

  ldi Temp, 0xff
  out DDRB, Temp
  ldi  Temp, 0xAA
  out PORTB, Temp

Loop:

  out PortB, Temp
  dec Temp

  rjmp Loop
Versuch mal das.

Autor: Olaf E. (lotsinn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läubi Mail@laeubi.de wrote:
>
; My Very First AVR Project
> .include "m32def.inc"
> .def Temp = R16
> .org 0x0000
>   rjmp  RESET
> 
> RESET:
> 
>   ldi Temp, 0xff
>   out DDRB, Temp
>   ldi  Temp, 0xAA
>   out PORTB, Temp
> 
> Loop:
> 
>   out PortB, Temp
>   dec Temp
> 
>   rjmp Loop
Versuch mal das.

Ah, nun leutet alles, ich glaube jetzt beginne ich zu verstehen, mit FF 
werden bei Out DDRB alle Bit`s auf ausgabe eingestellt, jetzt verstehe 
ich Davids kommentar mit der Datenrichtung.
in PortB kann reingeschrieben werden was dann ausgegeben werden soll 
oder?

Dann werd ich als nächstes mal mit der eingabe experimentieren :-)

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.