Hallo liebe Bastler, für alle, die nicht das Geld für einen „richtigen“ Logic-Analyser ausgeben können, hier eine low-cost-Lösung mit Beschränkung auf einen einzigen Kanal (was für die Analyse von RC5-Sequenzen, DCF77 etc. aber auch völlig ausreicht.) Das Funktionsprinzip: Der 16-Bit-Timer1 eines Mega8 in Verbindung mit einem zusätzlichen Byte zeichnet die Flankenwechsel an ICP1 oder am Analog-Comparator mit 24 Bit-Auflösung auf. Abhängig vom eingestellten Wert des Prescalers lassen sich (bei 16MHz mc-Takt) Ereignisse in einer Auflösung von 0.5us bis 64us über einen Zeitraum bis 8.4 bis 1073 Sekunden speichern. Allerdings mit der Einschränkung auf insgesamt maximalen 300 Taktwechsel, denn je Ereignis werden 3 Byte für das Ablegen des Zeitstempels im SRAM benötigt, sind also 300x 3 = 900 Byte (und der Mega8 hat nur 1024 Byte SRAM). Die Steuerung sowie die Änderung aller Parameter des Logic-Analysers erfolgt über ein Terminalprogramm (z.B. hTerm), auch die Ausgabe des Ergebnisses erfolgt über die serielle Schnittstelle ans Terminal (und kann ggf. von dort zur weiteren Bearbeitung in einer Tabellenkalkulation exportiert werden). Die Ausgabe kann wahlweise in als: (-a1) unbearbeitete Liste der Counterwerte, (-a2) Ausgabe der Counterstände an jeden Pegelwechsel mit Differenzberechnung, (-a4) Dauer von Low- und High-Pegel mit Summe von Low-und High-Pegel (= Counts je Takt) Hardwareanforderungen: Mega8 mit 16MHz Quarz, MAX232 für die serielle Schnittstelle, ggf. noch ein Poti, wenn der analog comparator als Eingang des Signals genutzt werden soll. Der Input wird an Pin ICP1 (wenn -c0) oder am Analog-Comparator erwartet (wenn -c1 gesetzt ist) 4 LED‘s sind für die Statusmeldungen an PC3-PC0 vorgesehen. PC3 - Power on PC2 - Warten auf Trigger PC1 - Scannen PC0 - Ready (PC1 und PC0 togglen während des Scans bei jedem 16Bit Counter Overflow. Weitere Beschreibungen gibts im zip-File. happy analysing Michael S.
@ Steffen (Gast) Ein 16-Bit Timer/Counter läuft nach 256*256 Counts über und beginnt wieder bei 0 zu zählen. Bei einem Prescale von 8 und 16.000.000 MHz Takt passiert das nach: 256 256 (8 / 16.000.000) = 0.032768 Sekunden. Wenn man also über einen längeren Zeitraum loggen (mit eindeutigen Werten) möchte, dann reicht ein 16-Bit Counter nicht aus. Ein weiteres Byte verlängert den Zeitraum um den Faktor 256. Alternativ kann man den Prescaler erhöhen, reduziert damit aber auch die Auflösun:. Prescale = 64 -> Aufllösung 4us Prescale = 256 -> Auflösung 16us Prescale = 1024 -> Aufllösung 64us Bei einem Prescale von 1024 und einem 16Bit Counter ist das Log-Intervall 256 256 (1.024 / 16.000.000) = 4,194 ... Sekunden. Für eine DCF77 - Signal also auch noch etwas kurz (sofern die Werte eindeutig sein sollen !) . Aber du kannst den Counter natürlich auf 16-Bit reduzieren, dann ist es möglich, 50% mehr Flanken aufzuzeichnen. Alles klar ?
Naja der counter startet doch bei 0... Bei jedem Flankenwechsel speicherst du den 16bit Wert Wenn ein Überlauf auftritt ohne das ein Flankenwechsel auftrat speicherst du einen Wert. Dann "weißt" du immer wann ein Überlauf standfand oder nicht?
Wer sagt den das die Zahlen immer gleich lang sein müssen. Einfach nur 7 bit nutzen bit 8 zeigt an ob Zahl zuende. Wird bei MIDI files so gemacht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.