- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: anfänger timer problem

  1. #1
    Gast

    anfänger timer problem

    Anzeige

    LiFePo4 Akku selber bauen - Video
    hallo,
    ich programmiere seit zwei tagen in assembler und ich bekomme es nicht hin eine led blinken zu lassen.
    hier mein code
    Code:
     .NOLIST                    ; List-Output unterdrücken
     .INCLUDE <m32def.inc>       ; das gibt es für jeden Controllertyp
     .LIST                      ; List-Output wieder aufdrehen
     .CSEG                      ; was nun folgt, gehört in den FLASH-Speicher
     .org $000
     .EQU fq = 16000000 			; Quarzfrequenz festlegen
    
     ;------------------------------------------------------
     ;     Start Adresse 0000
     ;------------------------------------------------------
     RESET:
         rjmp INIT           ; springen nach "INIT"
    
     ;------------------------------------------------------
     ;     ISR VECTORS
     ;------------------------------------------------------
     ;    .....    hier kommen dann die Sprungadressen für die Interrupts rein
     ;             dazu kommen wir noch
     .org $016
    	rjmp wait 
    
    
     .ORG INT_VECTORS_SIZE    ; dadurch haben wir für die Vektoren Platz gelassen
    
    wait:					 ;timer Warteschleife
    	inc r17				 ;r17 um eins erhöhen
    	cpi r17,61			 ;vergleichen von r17 mit einer variablen
    	breq main			 ;wenn r17 gleich variable dann springe zu main
    	reti				 ;rücksprung
    
     INIT:  
     ;------------------------------------------------------
     ;     INITIALIZE
     ;------------------------------------------------------
     .DEF Stackpointer = r24     
    	 ldi r24,high(RAMEND)     ;Stack Pointer setzen 
         out SPH,r24              ; "RAMEND" ist in m8def.inc (s.o.) festgelegt
         ldi r24,low(RAMEND)      ; 
         out SPL,r24              ;
    	 
    	 sei
    	 ldi r16,0b00000101
    	 out TCCR0,r16			  ;101: Clock = Taktfrequenz / 1024
    	 ldi r16,0b00000010
    	 out TIMSK,r16			  ;1: Int bei Überlauf
    	 ldi r16,0b00000000
    	 out TIFR,r16
    	 ldi r16,0b10000000
         out ddrd,r16			  ;portd.7 = output
    	 ldi r16,0
    	 out portd,r16			  ;portd.7 = low
    
    
    	 
    main:
    	clr r17					 ;r17 wieder auf null setzen
    	com r16					 ;invertieren des registers r16
    main1:
    	out portd,r16			 ;invertieren von portd
    	rjmp main1				 ;rücksprung zu main1
    ich hoffe dass ich wenigstens einigermasen alles deklariert habe
    währe schön wenn ihr mir helfen könnt
    mfg franzl

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Okay, fangen wir mal an:

    1. fehlt ein sei um die interupts global zu aktivieren
    2. springt man aus einer ISR niemals einfach herraus !!!

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    fehlt ein sei um die interupts global zu aktivieren
    Doch doch da ist ein sei, direkt nach der Stackini, den würde ich aber zum Schluß setzten, wenn alle Einstellungen zum Timer getan sind, find ich persönlich eleganter...

    und zu 2. Ja das ist ganz böse, setze cpr r17,61 und denn breq in die main1, dann sollte es auch klappen.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von izaseba
    fehlt ein sei um die interupts global zu aktivieren
    Doch doch da ist ein sei, direkt nach der Stackini, den würde ich aber zum Schluß setzten, wenn alle Einstellungen zum Timer getan sind, find ich persönlich eleganter...
    ups, das hab ich glatt übersehen.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.05.2005
    Ort
    Rott am Inn
    Alter
    36
    Beiträge
    373
    hallo,
    danke für eure unterstützung jetzt funktioniert es auch. es ist eben am anfang jeder programmiersprache nicht ganz leicht eine gute strucktur hineinzubekommen.
    mfg franzl

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

12V Akku bauen