-         

Ergebnis 1 bis 7 von 7

Thema: AT90S2313

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.07.2005
    Beiträge
    224

    AT90S2313

    Anzeige

    Hi!

    Da es ja kein Assembler Forum gibt poste ich es hier.

    Hab mir gestern mal ein AT90S2313 gekauft und hab auch gleich mal ein Tut gelesen... Ich programmiere die Dinger mit Assembler. Jetzt wollt ich mir ein Wechselblinker basteln. Das Problem ist das wenn ich einfach:
    Code:
    .nolist
    .include "2313def.inc"
    .list
    
    ldi r16, 0b00000101
    out DDRD, r16 
    
    looping: 
    ldi r16, 0b00000001
    out PORTD, r16
    
    ldi r16, 0b00000100
    out PORTD, r16
    rjmp looping
    mache, ist es ja logisch das es aussieht als wenn beide LEDs die ganzen Zeit leuchten.
    Also brauch ich irgendwie ein Unterprogramm,was so 0,5 Secs wartet... Wie kann man das Proggen?

    Mfg

    Elektronik303

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Google mal nach "AVR Delay Loop" für Assembler.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.07.2005
    Beiträge
    224

    RE:

    Der Code funzt aber komischerweiße nich:

    Code:
    .nolist
    .include "2313def.inc"
    .list
    
    ldi r16, 0b00000101
    out DDRD, r16 
    
    looping: ;Blink-Schleife
    
    ldi r16, 0b00000001 
    
    out PORTD, r16 
    
    rcall delaymsec 
    
    ldi r16, 0b00000100
    
    out PORTD, r16 
    
    rcall delaymsec 
    
    
    
    
    rjmp looping
    
    
    
    delaymsec:
     ldi R16, $12
     WGLOOP0: ldi R17, $BC
     WGLOOP1: ldi R18, $C4
     WGLOOP2: dec R18
     brne WGLOOP2
     dec R17
     brne WGLOOP1
     dec R16
     brne WGLOOP0
     nop
     nop
    ret
    Müsste doch eigentlich klappen?!

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Für welche Zeit ist die Schleife denn berechnet?

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.07.2005
    Beiträge
    224

    RE:

    0,5 Secs bei 4Mhz...

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Müsste doch eigentlich klappen?!
    Ja, müsste eigendlich funktionieren.

    Nur so eine Idee ...
    Es wäre nicht schlecht, vorher den Stackpointer und den RAM zu initialisieren.


    Code:
    	ldi	r16,low(ramend)		;Stackpointer setzen
    	out	spl,r16
    	ldi	r16,high(ramend)
    	out	sph,r16
    	ldi	yl,0x60			;Beginn des RAM
    	ldi	yh,0			
    	clr	r16
    init:	
       st	 y+,r16     	         ;RAM-löschen
    	cpi	yl,low(ramend+1)	               
    	brne	init			
    	cpi	yh,high(ramend+1)	
    	brne	init

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.07.2005
    Beiträge
    224

    RE:

    Sorry, aber wenn ich deinen Code bei mir einfüge, sagt er mir da wär ein Fehler drin...

    Und ich habe was lustiges rausgefunden... Mein AVR macht nur dann Wechselblinker, wenn er auch lust drauf hat... Heute z.b. Ging der Wechselblinker für ungefähr 1. Minute dann ist er auch wieder ausgegangen... Ich hab die Batterie nochmal neu drangemacht und es ging immernoch nicht. Das ist mir ein Rätsel. Glaubt ihr das Teil ist kaputt und ich sollte ein neues holen? Die Schaltung kann nicht falsch sein...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •