guten abend,
ich geb zu es klappt nicht. mit timer 1, eventuell muss ich hier tatsächlich mit den Registern arbeiten.
aber vorher noch ne Frage, macht es sinn mein an und aus der leds zu drehen, bin ich überhaupt auf dem richtigen weg ??
kannst du mir sagen, warum meine lösung nicht ideal ist (nicht weil ich ja so toll bin sondern um den sinn zu verstehen)
wenn ich übrigens ocr1a erhöhe ändert sich die Helligkeit nicht, aber die anzeige flackert. die Helligkeit kann mit ocr1b geregelt werden.
ist immer noch Voodoo im Moment.
da ich aber mal nach dcf geschaut habe, ist timer1 ja eh blöd, den benötigt ja dcf.
also hier mein code mit timer2.
die Idee hinter dem prescale 256 ist, den isr so selten wie möglich zu machen, damit der rest des programms nicht so oft unterbrochen wird.
das vorladen auf 100 damit es grade nicht flackert, so meine Ideen.
gruß
ich geb zu es klappt nicht. mit timer 1, eventuell muss ich hier tatsächlich mit den Registern arbeiten.
aber vorher noch ne Frage, macht es sinn mein an und aus der leds zu drehen, bin ich überhaupt auf dem richtigen weg ??
kannst du mir sagen, warum meine lösung nicht ideal ist (nicht weil ich ja so toll bin sondern um den sinn zu verstehen)
wenn ich übrigens ocr1a erhöhe ändert sich die Helligkeit nicht, aber die anzeige flackert. die Helligkeit kann mit ocr1b geregelt werden.
ist immer noch Voodoo im Moment.
da ich aber mal nach dcf geschaut habe, ist timer1 ja eh blöd, den benötigt ja dcf.
also hier mein code mit timer2.
Code:
'Meine erste matrix
'ATMEGA8 mit 8mhz int quarz
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100
'-------------- ports init --------------------- '
Lcdport Alias Portb
Matrixsp Alias Portd
Config Matrixsp = Output
Matrixzei Alias Portc
Config Matrixzei = Output
Taster1 Alias Pinb.6
Config Taster1 = Input
Portb.6 = 1
'------------------timer init--------------------
Config Timer2 = Timer , Prescale = 256 , Clear Timer = 0
On Compare2 Ledsoff
On Timer2 Ledson
Enable Compare2
Enable Timer2
Ocr2 = 1023
Enable Interrupts
'------------------lcd init -----------
Config Lcdpin = Pin , Db4 = Lcdport.3 , Db5 = Lcdport.2 , Db6 = Lcdport.1 , _
Db7 = Lcdport.0 , E = Lcdport.5 , Rs = Lcdport.4
Config Lcd = 16 * 1
Cursor Off , Noblink
Dim I As Byte
Dim Offset As Byte
Dim Ledmuster(4) As Byte
For I = 1 To 4
Offset = I - 1
Ledmuster(i) = Lookup(offset , Spalten)
Next
'Offset = 0
Dim Zeilen(4) As Byte
Zeilen(1) = &B00000001
Zeilen(2) = &B00000010
Zeilen(3) = &B00000100
Zeilen(4) = &B00001000
Dim Sz As Byte
Dim Zz As Byte
Sz = 1
Zz = 1
'---------------------------------------------------
Cls
Lcd "hallo duda " ; Offset ' nur um zu sehen ob sich was tut
Do
Debounce Taster1 , 0 , Newbild , Sub
Loop
End
Ledson:
Matrixzei = Zeilen(zz)
Matrixsp = Ledmuster(sz)
Incr Zz
Incr Sz
If Zz = 5 Then Zz = 1
If Sz = 5 Then Sz = 1
Timer2 = 100
Return
Ledsoff:
Matrixzei = 0
Return
Newbild:
For I = 1 To 4
If Offset = 127 Then
Offset = 0
Goto Hops
End If
If Offset < 127 Then Incr Offset
Hops:
Ledmuster(i) = Lookup(offset , Spalten)
Next
Return
$data
Spalten:
Data &B11101111 , &B11111111 , &B11111111 , &B11101111
Data &B01111111 , &B01111111 , &B01111111 , &B01111111
Data &B00111111 , &B00111111 , &B00111111 , &B00111111
Data &B00011111 , &B00011111 , &B00011111 , &B00011111
Data &B00001111 , &B00001111 , &B00001111 , &B00001111
Data &B00000111 , &B00000111 , &B00000111 , &B00000111
Data &B00000011 , &B00000011 , &B00000011 , &B00000011
Data &B00000001 , &B00000001 , &B00000001 , &B00000001
Data &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B10000000 , &B10000000 , &B10000000 , &B10000000
Data &B11000000 , &B11000000 , &B11000000 , &B11000000
Data &B11100000 , &B11100000 , &B11100000 , &B11100000
Data &B11110000 , &B11110000 , &B11110000 , &B11110000
Data &B11111000 , &B11111000 , &B11111000 , &B11111000
Data &B11111100 , &B11111100 , &B11111100 , &B11111100
Data &B11111110 , &B11111110 , &B11111110 , &B11111110
Data &B11111111 , &B11111111 , &B11111111 , &B11111111
Data &B11111110 , &B11111110 , &B11111110 , &B11111110
Data &B11111100 , &B11111100 , &B11111100 , &B11111100
Data &B11111000 , &B11111000 , &B11111000 , &B11111000
Data &B11110000 , &B11110000 , &B11110000 , &B11110000
Data &B11100000 , &B11100000 , &B11100000 , &B11100000
Data &B11000000 , &B11000000 , &B11000000 , &B11000000
Data &B10000000 , &B10000000 , &B10000000 , &B10000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000001 , &B00000001 , &B00000001 , &B00000001
Data &B00000011 , &B00000011 , &B00000011 , &B00000011
Data &B00000111 , &B00000111 , &B00000111 , &B00000111
Data &B00001111 , &B00001111 , &B00001111 , &B00001111
Data &B00011111 , &B00011111 , &B00011111 , &B00011111
Data &B00111111 , &B00111111 , &B00111111 , &B00111111
Data &B01111111 , &B01111111 , &B01111111 , &B01111111
die Idee hinter dem prescale 256 ist, den isr so selten wie möglich zu machen, damit der rest des programms nicht so oft unterbrochen wird.
das vorladen auf 100 damit es grade nicht flackert, so meine Ideen.
gruß