Hallo,
habe das hier versucht. 1 | lds templ,vtimeL_neu ;aus neu wird alt
| 2 | lds temph,vtimeH_neu
| 3 | sts Vtimel_alt,templ
| 4 | sts Vtimeh_alt,temph
| 5 |
| 6 |
| 7 | ;---Vtime messen und vergleichen----------------------------
| 8 | clr templ ;für normales V-Sync
| 9 | out TCNT1H,templ
| 10 | out TCNT1L,templ
| 11 | wat01: sbic PinB,1
| 12 | rjmp wat01
| 13 | wat02: sbis PinB,1
| 14 | rjmp wat02
| 15 | ldi tempL, (0<<CS12)|(0<<CS11)|(1<<CS10)|(0<<WGM12) ; Start Timer1 mit ohne Vorteiler Systemtakt
| 16 | out TCCR1B, tempL
| 17 | wat03: sbic PinB,1
| 18 | rjmp wat03
| 19 | ldi tempL, (0<<CS12)|(0<<CS11)|(0<<CS10)|(0<<WGM12) ; Start Timer1 mit ohne Vorteiler Systemtakt
| 20 | out TCCR1B, tempL
| 21 | in temph,TCNT1H
| 22 | in tempL,TCNT1L
| 23 | sts VTimel_neu,templ ;alten Wert laden
| 24 | sts VTimeh_neu,temph
| 25 |
| 26 |
| 27 | clr templ ; für negiertes Vsync
| 28 | out TCNT1H,templ
| 29 | out TCNT1L,templ
| 30 | wat011: sbis PinB,1
| 31 | rjmp wat011
| 32 | wat021: sbic PinB,1
| 33 | rjmp wat021
| 34 | ldi tempL, (0<<CS12)|(0<<CS11)|(1<<CS10)|(0<<WGM12) ; Start Timer1 mit ohne Vorteiler Systemtakt
| 35 | out TCCR1B, tempL
| 36 | wat031: sbis PinB,1
| 37 | rjmp wat031
| 38 | ldi tempL, (0<<CS12)|(0<<CS11)|(0<<CS10)|(0<<WGM12) ; Start Timer1 mit ohne Vorteiler Systemtakt
| 39 | out TCCR1B, tempL
| 40 | in puf1,TCNT1H
| 41 | in puf0,TCNT1L
| 42 |
| 43 | lds templ,VtimeL_neu ;der grösseren Wert ermitteln
| 44 | lds temph, VtimeH_neu
| 45 | cp templ, puf0
| 46 | cpc temph, puf1
| 47 | brsh loe
| 48 | sts VTimel_neu,puf0 ;alten Wert laden
| 49 | sts VTimeh_neu,puf1
| 50 |
| 51 | loe:
| 52 |
| 53 |
| 54 |
| 55 | clr templ
| 56 | out TCNT1H,templ
| 57 | out TCNT1L,templ
| 58 |
| 59 | auswertung: lds templ,Vtimel_neu ;Vergleich
| 60 | lds temph,Vtimeh_neu
| 61 | lds puf0, Vtimel_alt
| 62 | lds puf1, Vtimeh_alt
| 63 | andi puf0,0B11111000 ;"Runden um flattern zu beseitigen"
| 64 | andi templ,0B11111000
| 65 | cp templ,puf0
| 66 | cpc temph,puf1
| 67 | breq ex
| 68 |
| 69 | wechsel: ldi templ,1 ; Flag setzten
| 70 | mov vstat,templ
| 71 | T22: sbi portD,7 ;endlosschleife zum test
| 72 | cbi portD,7
| 73 | rjmp T22
|
Vielleicht können die Profis mal drüber sehen.
Ich möchte gern den V-Sync Signal in der länge erfasse Bei
unterschiedlichen auflösungen "dreht" sich das Signal bzw. wird negiert.
Vsync liegt direkt an Port B Pin 1. Ich versuche jetzt mit den Code eine
Veränderung zu messen und
dann ein Flag zus setzten aber leider tut es nicht das was es soll. Im
Simulator schon aber in der Praxis nicht.
schade schade keine antwort
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
|