Hallo,
ich hoffe hier st mir jemand der mir bei meinem Problem helfen kann, da ich noch nicht so firm in der Programierung bin.
Das Program funzt soweit, ich hab es schon etwas umgeschrieben, nur bin ich nun an einem Punkt angekommen wo ich nicht mehr weiter weiß.
Der Timer0 gibt ein Signal auf Porta.0 raus, soweit so gut. Die Musteranzeige funzt auch auf Portb und Portd. Meine Frage ist nun, ist es möglich das Signal das Timer0 generiert auf die anderen Ports zu nutzen, so daß die LED´s die durch die Musteranzeige während dieser zeit schnell blinken??
Bisher hab ich nur das Ergebnis gehabt das entweder das Blinksignal gar nicht geht oder die ganzen Ports blinken läßt und so die Musteranzeige überblendet.
Code:
'Drachenlicht mit ATtiny2313 Version 0.8
'Zeitgesteuerte Musteranzeige
'erstellt für www.attiny.de
'von Bernhard Ritter
$regfile = "attiny2313.dat" 'Definitionsdatei für ATtiny2313
$crystal = 2000000 'Oszillatorfrequenz 0.5 MHz
Config Porta.0 = Output 'Port A ist Ausgang für LEDs
Config Portb = Output 'Port B ist Ausgang für LEDs
Config Portd = Output 'Port D ist Ausgang für LEDs
Porta.0 = 0 'Alle Ausgänge Port A auf 0
Portb = 0 'Alle Ausgänge Port B auf 0
Portd = 0 'Alle Ausgänge Port D auf 0
Dim Muster1 As Byte 'Muster1 als Byte dimensionieren
Dim Muster2 As Byte 'Muster2 als Byte dimensionieren
Dim Zeit As Byte 'Zeitzähler in 0.13-Sekundenschritten
Dim Intzeit As Byte 'Interruptzähler für Zeitvergleich
Config Timer0 = Timer , Prescale = 8 ' Timer-0 Vorteiler auf 1024
Timer0 = &H00 ' Timer-0 Startwert setzen
Enable Timer0 ' Timer-0 Interrupt einschalten
On Timer0 Trigger
Config Timer1 = Timer , Prescale = 1 'Prescaler auf 256
'Interrupt alle 256 x 256 Takte : 2uS * 65536 = 131.072 ms
'15 Zeiteinheiten ergeben 2 Sekunden Musteranzeigezeit
On Timer1 Anzeige 'bei Timerüberlauf nach Anzeige springen
Enable Timer1 'Timer0-Interrupt einschalten
Enable Interrupts 'Interrupts global aktivieren
Do 'Hauptprogramm
'nothing
Loop
End 'End Hauptprogramm
Anzeige: 'Unterprogramm Anzeige
Incr Intzeit 'Interruptzähler für Zeitvergleich erhöhen
If Intzeit > Zeit Then 'Wenn Musterzeit abgelaufen ist neuen Datensatz holen
Intzeit = 1 'Interruptzähler zurücksetzen
If Zeit = 0 Then Restore Musterdaten 'Datenzeiger auf erstes Muster setzen
Read Muster1 'Muster einlesen
Read Muster2
Read Zeit
Portb = Muster1 'Daten anzeigen
Portd = Muster2
End If
Return
Trigger:
'Timer-0 Interruptroutine
Timer0 = &H00 ' Timer-0 Startwert setzen
Portb = &HFF - Portb ' Ausgänge invertieren
Return
'Hier beginnt die Muster- und Zeitenliste
'Aufbau: Data Muster1 , Muster2 , Zeit
'Die Muster können binär(&Bxxxxxxxx), hexadezimal(&Hxx) oder dezimal eingegeben werden
'Zeit=0 startet Programm neu
Musterdaten:
Data &B00000001 , &B00000001 , 10
Data &H03 , &H03 , 10
Data 7 , 7 , 15
Data 15 , 15 , 1
Data 31 , 31 , 1
Data 63 , 63 , 1
Data 127 , 127 , 1
Data 255 , 255 , 1
Data 1 , 254 , 1
Data 3 , 252 , 1
Data 7 , 248 , 1
Data 15 , 240 , 1
Data 31 , 224 , 1
Data 63 , 192 , 1
Data 127 , 128 , 1
Data 255 , 0 , 1
Data 0 , 0 , 0
Bin für jeden Hinweis dankbar.
Gruß
Stefan
Lesezeichen