- klar, da muss man *natürlich* schon drauf hinweisen! 

)|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
$regfile = "attiny2313.dat"
$crystal = 8000000 'Interner Oszillator/Quarz
Config Pinb.0 = Input 'Anschluss am Empfänger b.0
Config Portd.6 = Output 'Schaltausgang PinD.6 Strobe
Config Portb.1 = Output 'Schaltausgang PinB.1 Beaconlight
Config Portb.2 = Output 'Schaltausgang 2
Dim Signal As Byte 'Länge des Signals vom Empfänger
Dim Modus As Byte '0=Aus 1=Strobe 2=Strobe+Beacon
Dim Schalt2 As Bit 'Status Schaltausgang 2
Dim Zaehler As Word 'Zähler für Strobe/Beacon Zeitsteuerung
Schalt2 = 0
Config Timer0 = Timer , Prescale = 64 'timer0 konfigurieren
On Timer0 Isr_timer0 'immer zu isr_timer0 springen
Enable Timer0 'timer0 einschalten
Enable Interrupts 'Interrupts global einschalten
Do
Pulsein Signal , Pinb , 0 , 1 'Signallänge an Pinb.0 abfragen
If Signal > 85 Then 'nur weitermachen wenn brauchbares Signal
If Signal < 115 Then 'wenn linker Anschlag --> Ausgang2 ein/ausschalten
If Schalt2 = 0 Then 'wenn aus dann einschalten
Schalt2 = 1
Portb.2 = 1
Else 'sonst ausschalten
Schalt2 = 0
Portb.2 = 0
End If
Waitms 300 'entprellen
End If
If Signal > 170 Then 'wenn rechter Anschlag --> Strobe/Beacon anschalten
If Modus = 0 Then 'wenn aus Strobe einschalten, Modus 1
Modus = 1
Elseif Modus = 1 Then 'wenn Strobe breits an Beacon auch noch anschalten, Modus2
Modus = 2
Else 'sonst bzw wenn Beacon+Strobe bereits an alles ausschalten
Modus = 0
Zaehler = 0
Portd.6 = 0
Portb.1 = 0
End If
Waitms 300 'entprellen
End If
End If
Loop 'von Vorne anfangen
Isr_timer0:
Select Case Zaehler:
Case 1 : Portd.6 = 1 'Strobe an
Case 21 : Portd.6 = 0 'nach 20ms Strobe aus
Case 201 : Portd.6 = 1 'nach 200ms Strobe an
Case 221 : Portd.6 = 0 'nach 220ms Strobe aus
Case 671 : If Modus = 2 Then Portb.1 = 1 'nach 670ms wenn Modus2(Beacon) Beacon an
Case 711 : Portb.1 = 0 'nach 710ms beacon aus
Case 1340 : Zaehler = 0 'nach 1340ms von Vorne beginnen
End Select
If Modus > 0 Then ' nur wenn Strobe/Beacon an ist hochzählen
Incr Zaehler
End If
Timer0 = 131 'Timer zurücksetzen
Return 'zurückkehren
End
|
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »exelero« (14. Februar 2010, 18:53)
Am Besten mal compilieren und drauf flashen, dann siehst Du ja, ob's funktioniertIch habe den Code nochmals angepasst - bin mir aber nicht sicher ob das so hinhaut.
- kaputt gehen kann ja nix dabei...
- sorry, nicht falsch verstehen, das ist *nicht* so gemeint dass ich da jetzt drauf rumreiten will, aber ich frage mich schon, wieso Du Dir nun *deswegen* extra die Arbeit gemacht hast, den Code noch mal umzubauen...
und dann bitte auch berichten, ob Du den Unterschied zwischen 20 ms und 19,968 ms siehst![]()
Ich meinte eigentlich den Excelero, ob er sieht, dass das nun "echter" blinkt...Ja aufm Oszi hab ich den gesehn![]()

Das ist das was ich weiter oben gemeint habe mit "nen µC mit genau passendem RC-Oszi zu erwischen ist so wie ein 6er im Lotto"...Allerdings hab ich gerade mal zum Spaß den Unterschied zwischen dem Rc-Oszi und einem Quarz getestet.
Der Unterschied zwischen den beiden Codes, getestet mit einem Quarz ist deutlich geringer, als der unterschied zwischen zwei Atmega8 und damit zwei verschiedenen Rc-Oszis.
Sehe ich das richtig, dass der letzte Abschnitt also 1 µs zu lange dauert...?Der letzte Wert stimmt nicht, denn bei 1341 wird er auf 0 gesetzt und erst bei 1 wird wieder das Strobe angeschaltet.
Hamburg habe ich nur als grobe Richtung angeschlagen - aus Datenschutzgründen, Sie verstehen?
Ich wohne bei dir fast um die Ecke also von HH aus in Richtung Bremen.
gruß
Warum eig.?
Hast auch n Modellflieger? Dann könn wir ja um die Wette crashen![]()
![]()
Aber nen Selbstbau Schocky steht da noch rum und wartet auf seinen ersten richtigen Flug.
P.S.: das interessiert mich: wie misst man denn mit dem Oszi so nen kleinen Unterschied...? - ich habe nur so ein Billig-Teil, wenn da der 20 ms-Puls nun den ganzen (ziemlich kleinen) Bildschirm "ausfüllt", sieht man eigentlich keinen Unterschied, ob der nun 20 ms oder 19,9 lang ist - hast Du ein digitales, das das rausmessen kann...? - oder irgendwie mit nem 2-Kanal-Oszi, dass man nur den *Unterschied* darstellen lässt..?
ja, aber es ist zumindest ein DSO - also kann das auch die Impulslänge anzeigen...? Ich meine jetzt in dem Sinn, dass es das "auswertet" und dann direkt digital anzeigt...?Naja ich hab eigentlich auch nur ein einfaches China-DSO,
), da kann man halt nur per Linienraster auf dem Bildschirm eher abschätzen als Messen, also so ein kleiner Unterschied ist da zumindest nicht zu *sehen*... Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »exelero« (14. Februar 2010, 18:58)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »exelero« (2. Februar 2010, 19:00)
Ja, sonst hast Du dann nur 1 MHz...Muss ich das Häkchen bei Divide clock by 8 internally wegnehmen
z.B. - oder bei 14CK + 65 msund ein Häkchen bei Ext. Crystal Osc.; Frequenz 8.0- MHz; Start-up tim: 14CK + 4.1 ms setzen?
. Dann werde ich es auf + 65 ms setzen.
). --- OK
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »exelero« (3. Februar 2010, 21:38)
...
Ich habe den Programmer auf Com5 eingestellt. Außerdem die beiden DIP-
