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.
Bin für jeden Hinweis dankbar.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
Gruß
Stefan







Zitieren
Lesezeichen