Hallo,
nach langer Zeit beschäftige ich mich mal wieder mit Bascom, grad eine frische Version gekauft. Ich möchte die Frequenz eines Rechtecksignals messen. Dieses hat eine Frequenz zwischen 1 und 30 Hz. Theoretisch stelle ich mir das so vor:
Ein Timer läuft hoch, wird per Interrupt resettet. Ich lese dann das CCA register aus, in dem eine Zahl zwischen 0 und 65535 steht, die rechne ich in die Frequenz um. Der xmega läuft mit 32 MHz, also müsste ich mit einem Prescaler von 1024 Frequenzen zwischen 0.93 und 35 Hz einigermaßen gut messen können.
Nur finde ich die Hilfe zu den Timern extrem verwirrend, auch bin ich ziemlich überrascht, dass es in den Samples nicht ein Beispiel dazu gibt, so exotisch ist das ja nun nicht....
Ich weiß auch gar nicht an welchem Pin denn nun mein Rechtecksignal anliegen müsste....
Hier stehen einige gute Infos, aber die kann ich nicht selber auf Bascom übertragen:
kampis-elektroecke.de/mikrocontroller/xmega-timer/
Folgenden Code habe ich bisher, der ist Murks, aber ich komme nicht weiter:
Alles anzeigen
Es wäre tll wenn ihr mir helfen könntet.....
nach langer Zeit beschäftige ich mich mal wieder mit Bascom, grad eine frische Version gekauft. Ich möchte die Frequenz eines Rechtecksignals messen. Dieses hat eine Frequenz zwischen 1 und 30 Hz. Theoretisch stelle ich mir das so vor:
Ein Timer läuft hoch, wird per Interrupt resettet. Ich lese dann das CCA register aus, in dem eine Zahl zwischen 0 und 65535 steht, die rechne ich in die Frequenz um. Der xmega läuft mit 32 MHz, also müsste ich mit einem Prescaler von 1024 Frequenzen zwischen 0.93 und 35 Hz einigermaßen gut messen können.
Nur finde ich die Hilfe zu den Timern extrem verwirrend, auch bin ich ziemlich überrascht, dass es in den Samples nicht ein Beispiel dazu gibt, so exotisch ist das ja nun nicht....
Ich weiß auch gar nicht an welchem Pin denn nun mein Rechtecksignal anliegen müsste....
Hier stehen einige gute Infos, aber die kann ich nicht selber auf Bascom übertragen:
kampis-elektroecke.de/mikrocontroller/xmega-timer/
Folgenden Code habe ich bisher, der ist Murks, aber ich komme nicht weiter:
Quellcode
- $regfile = "xm128A4Udef.dat"
- $crystal = 32000000
- $framesize = 100
- $hwstack = 100
- $swstack = 100
- $lib "xmega.lib"
- Config Osc = Disabled , 32mhzosc = Enabled
- Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
- Config Tcc0 = normal , Prescale = 1024 , Capturec = Enabled , Event_source = e0 , Event_action = capture , Event_delay = Disabled , Resolution = 16
- enable interrupts
- Config Com1 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 'PC2
- Open "com1:" For Binary As #1
- Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled
- Config Pinc.0 = Output
- config pinc.2=input
- Portc.2=1 'Aktiviert das den Pullup...?
- Do
- Print #1 , TCC0_CCA
- Waitms 100
- Toggle Portc.0
- Loop
- End