
Wie ktoś może co z tym zrobić ?
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięModeratorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Kod: Zaznacz cały
$regfile = "attiny2313.dat"
$crystal = 8000000
$baud = 1200
Config Portd.2 = Output
Portd.2 = 0
Dim A As Byte
A = 5
Dim Interval As Integer
Interval = 111
Config timer1 = Timer , Prescale = 1
Load Timer1 , Interval
Enable timer1
Enable Interrupts
On Timer1 timer1_int
Start timer1
Do
Print A
Loop
timer1_int:
Load timer1 , Interval
Toggle Portd.2
Return
Fusy może masz dobrze ustawione , ale program jest do ... niedobryFuse bity na 100% są dobrze ustawione. Wyłączony podział przez 8 i włączony external xtal.
Kod: Zaznacz cały
$crystal = 8000000
$regfile = "attiny2313.dat"
'....
Config Portb.2 = Output 'PB2/OC0A - wyjście
Set Tccr0a.6 'output mode -Toggle OC0A on Compare Match
Set Tccr0a.1 'tryb CTC - mode 2
Ocr0a = 110 'top timer0
Set Tccr0b.0 'start timer0 Prescale = 1
'... dalsza Twojego część kodu
W tym nie ma żadnej tajemnicyCiekawie tylko dlaczego tamten program nie działał - wygląda raczej OK
Skąd wiesz że akurat 140 cykli ?W tym nie ma żadnej tajemnicyCiekawie tylko dlaczego tamten program nie działał - wygląda raczej OK
Procedura obsługi przerwania , to około 140 cykli zegara.Jeśli teraz podzielimy 8MHz/140 to łatwo policzyć , że w takich warunkach , zmiana stanu pinu może wystąpić tylko 57142 razy na sekundę , co daje nam 28571 Hz.To wszystko , co można wycisnąć tym sposobem z proca
Piotrek
Ano stądSkąd wiesz że akurat 140 cykli ?
Kod: Zaznacz cały
timer1_int:
Load timer1 , Interval
Toggle Portd.2
Return
Kod: Zaznacz cały
+0000004E: PUSH R0
+0000004F: PUSH R1
+00000050: PUSH R2
+00000051: PUSH R3
+00000052: PUSH R4
+00000053: PUSH R5
+00000054: PUSH R7
+00000055: PUSH R10
+00000056: PUSH R11
+00000057: PUSH R16
+00000058: PUSH R17
+00000059: PUSH R18
+0000005A: PUSH R19
+0000005B: PUSH R20
+0000005C: PUSH R21
+0000005D: PUSH R22
+0000005E: PUSH R23
+0000005F: PUSH R24
+00000060: PUSH R25
+00000061: PUSH R26
+00000062: PUSH R27
+00000063: PUSH R28
+00000064: PUSH R29
+00000065: PUSH R30
+00000066: PUSH R31
+00000067: IN R24,0x3F
+00000068: PUSH R24
+00000069: LDI R26,0x60
+0000006A: LD R16,X+
+0000006B: LD R17,X
+0000006C: COM R16
+0000006D: COM R17
+0000006E: SUBI R16,0xFF
+0000006F: SBCI R17,0xFF
+00000070: OUT 0x2C,R16
+00000071: OUT 0x2D,R17
+00000072: LDI R26,0x32
+00000073: LD R24,X
+00000074: BST R24,2
+00000075: CLR R24
+00000076: BLD R24,0
+00000077: COM R24
+00000078: BST R24,0
+00000079: LDI R26,0x32
+0000007A: LD R24,X
+0000007B: BLD R24,2
+0000007C: ST X,R24
+0000007D: POP R24
+0000007E: OUT 0x3F,R24
+0000007F: POP R31
+00000080: POP R30
+00000081: POP R29
+00000082: POP R28
+00000083: POP R27
+00000084: POP R26
+00000085: POP R25
+00000086: POP R24
+00000087: POP R23
+00000088: POP R22
+00000089: POP R21
+0000008A: POP R20
+0000008B: POP R19
+0000008C: POP R18
+0000008D: POP R17
+0000008E: POP R16
+0000008F: POP R11
+00000090: POP R10
+00000091: POP R7
+00000092: POP R5
+00000093: POP R4
+00000094: POP R3
+00000095: POP R2
+00000096: POP R1
+00000097: POP R0
+00000098: RETI
Kod: Zaznacz cały
Set Tccr0a.6 'output mode -Toggle OC0A on Compare Match
Set Tccr0a.1 'tryb CTC - mode 2
Ocr0a = 110 'top timer0
Set Tccr0b.0 'start timer0 Prescale = 1
Wie ktoś może jak zmienić kod, który napisał szymel, tak aby częstotliwość była generowana na OC0B (chodzi o to, że chciałbym mieś wolny na attiny2313 cały port B)...
Kod: Zaznacz cały
$crystal = 8000000 $regfile = "attiny2313.dat" '.... Config Portd.5 = Output 'PD5/OC0B - wyjście Set Tccr0a.4 'output mode -Toggle OC0B on Compare Match Set Tccr0a.1 'tryb CTC - mode 2 Ocr0a = 110 'top timer0 ocr0b=55 ' ;-) Set Tccr0b.0 'start timer0 Prescale = 1 '... dalsza Twojego część kodu
Pewnie nie powiem nic nowego - dokumentacja , a szczególnie zawarte w niej tabelkiA może zna ktoś źródło informacji o wszystkich chwytach na flet prosty z timerami, bo do tej pory ślaczki
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości