- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 34

Thema: AT90S2313 - Timer

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Anzeige

    Powerstation Test
    Hi @ all! ;o)
    War wohl doch gestern etwas müde, das ich das nicht gesehen habe! *lol*

    Code:
    .start: 
      ldi temp,low(ramend) 
      out spl,temp
    Ich würde vor start: noch den Punkt wegnehmen, das ist ein Label und keine Direktive! ;o)

    Außerdem würde ich noch die Interrupttabelle einfügen! :o)
    Code:
    .org 0x000
    rjmp start   ; Initialisierung / RESET
    reti         ; IRQ0
    reti         ; IRQ1
    reti         ; Timer1 Capture
    reti         ; Timer1 Compare
    reti         ; Timer1 Overflow
    reti         ; Timer0 Overflow
    reti         ; SPI Complete
    reti         ; UART Rx
    reti         ; UART Data empty
    reti         ; UART Tx
    reti         ; ADC Conversion Complete
    reti         ; EEPROM ready
    reti         ; Analog Comparator
    Die musst Du nurnoch wie bei start verändern und das richtige Label hinsetzten!
    *edit* Guck mal bei www.mikrocontroller.net im Tutorial! */edit*
    Ich habe leider jetzt nicht die zeit um den ganzen Code zu überprfen! :o(
    Mal sehn, wenn es noch Probs gibt, kann ich im Notfall noch helfen! :o)

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    17.07.2004
    Alter
    37
    Beiträge
    81
    Hallo...

    Ich würde vor start: noch den Punkt wegnehmen, das ist ein Label und keine Direktive! ;o)
    Sry. War nur n Tippfehler

    Ich werds jetzt mal auf nem Controller testen... Danke

    Edit:
    Hmm... Also irgendwie klappt das nicht:
    Code:
    .include "2313def.inc" 
    
    .def temp=r16 
    .def int_per_sec=r17
    .def _led=r18 
    
    .org 0x000
    	rjmp start   ; Initialisierung / RESET 
    	reti         ; IRQ0 
    	reti          ; IRQ1 
    	reti          ; Timer1 Capture 
    	reti          ; Timer1 Compare 
    	reti          ; Timer1 Overflow 
    	rjmp Time              ; Timer0 Overflow 
    	reti          ; SPI Complete 
    	reti          ; UART Rx 
    	reti          ; UART Data empty 
    	reti          ; UART Tx 
    	reti          ; ADC Conversion Complete 
    	reti          ; EEPROM ready 
    	reti          ; Analog Comparator
    
    start: 
      ldi temp,low(ramend) 
      out spl,temp
      ldi temp,0b11111111
      out DDRD,temp 
      ldi _led,1
      rjmp initTimer
    
    initTimer: 
       ldi temp,5             ;CPU-Takt/1024 
       out TCCR0,temp 
       ldi temp,2             ;aktivieren des Interrups bei einem 
       out TIMSK,temp    ;Überlauf 
    
       ldi int_per_sec,46 ;Anzahl der Interrupts pro Sekunde 
      
     ;12MHz: 12.000.000/1024=11718,75 --> Bei jedem 11718,75ten Takt 
     ;wird ein Interrupt eingeworfen 
     ;=>11718,75/256(wegen 8Bit TCNT)=45,78 (ca. 46 Interrupts pro Sek.) 
    
       sei                      ;Interrupts global erlauben 
    
    endlos:           
       ldi temp,0b0001000
       out portd,temp                     ;Endlosschleife 
       rjmp endlos 
    
    led_an:
    	ldi temp,0b00100011
    	out PORTD,temp
    	ldi _led,0
    	rjmp zurueck
    led_aus:
    	ldi temp,0b00000000
    	out PORTD,temp
    	ldi _led,1
    	rjmp zurueck
    time:                                   ;Aufruf bei jedem Interrupt 
       dec int_per_sec 
       brne zurueck        ;nach 46 Interrupts (int_per_sec=0) wird 
                                               ;nicht nach "zurueck" gesprungen 
    
                    ;irgendwas zur vollen sekunde 
       sbrs _led,1
       rjmp led_aus
       rjmp led_an
          
    
    
    
    zurueck: 
       reti                      ;rücksprung in die Endlosschleife
    Nunja die LED in der Endlosschleife Leuchtet, aber von Timer her kommt nix....

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Hi enoritz!
    Code:
       rjmp Time              ; Timer0 Overflow
    Versuchs mal mit nem kleinen time!
    Mehr sehe ich jetzt apprupt nicht!

    Sag bitte bescheid, ob's klappt! :o)

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    17.07.2004
    Alter
    37
    Beiträge
    81
    Ich werds mal probieren, kann mir aber irgendwie nicht vorstellen das es was bringt, da das Label "time" ja eigentlich nur eine Adresse repräsentiert, welche im Code-Editor (sowie im Compiler, etc.) als Text (case-insensitive) dargestellt wird.

    Ich werds aber trotzdem mal probieren

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Hi enoritz!
    Funktioniert's?

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    17.07.2004
    Alter
    37
    Beiträge
    81
    Ne, hat nicht funktioniert

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Schade, ich simuliere es nochmal und dann versuche ich mal den Fehler zu finden!

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    17.07.2004
    Alter
    37
    Beiträge
    81
    Also das müsste irgendwie am Aufruf des Interrupts und somit wahrscheinlich an der initialisierung des Timers liegen.

    Wenn ich in die endlosschleife ein Sleep einbaue und auf einen Interrupt warte, wonach dann eine LED angehen soll passiert gar nichts. Eigentlich müsste ein Interrupt den Sleep-Befehl wieder auflösen.

    Bei einem Reset-Interrupt z.B. funktionierts.....

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    So, der Code funktioniert! :o)
    Der Code invertiert an PORTD alle 1Sek. den Zustand der LED's, das heißt sie blinken alle 1Sek.!
    Ich hoffe man versteht meine Label-Kommentare! ;o)
    Wenn jemand noch Fragen hat, ich stehe zur Verfügung! :o)

    Viel Spass! :o)
    Angehängte Dateien Angehängte Dateien

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    17.07.2004
    Alter
    37
    Beiträge
    81
    Werd ich mal testen.....

    Nur wozu ist der Wert "start" gut?? Da zählt der doch immer nur 244 Takte??

    //Edit: Schon in ordnung... hab n bisschen rumgerechnet und habs gerafft

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

12V Akku bauen