PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann ein ATtiny (anstatt Servo) Frequenzen eines Empfängers umwandeln (Strom-An-Aus)?



Bow-Hunter
22.09.2014, 22:12
Ich möchte an meinem Modellflieger Blinklichter etc. über die Fernsteuerung steuern.

Den ATtiny-13 oder 25 mit einem Blinklichtprogramm zu bestücken, bekomme ich hin. Ich möchte ihn aber nicht mit einen Taster am Boden steuern sonder in der Luft auch gerne an und ausschalten.

Daher meine Frage: Kann man mit Bascom ein Programm schreiben das folgendes macht:

Input Frequenz A (1ms) = Licht an
Input Frequenz B (2ms) = Blinker an
Input Frequenz C (3ms) = Licht aus


Ich weis das z.B. der ATtiny13 Servos steuern kann und das mit einfachsten Befehlen, also müsste er ja wenn er Frequenzen raus geben kann auch welche empfangen können oder?

Vielen Dank im Voraus

Sauerbruch
23.09.2014, 05:39
Klar kann er das!

Ganz einfach ginge das z.B. mit einem Interrupt und einem der beiden Timer, die der Mikrocontroller hat.
Weißt Du in Grundzügen wie ein Interrupt funktioniert und wie man mit Timern umgeht?

Gruß,

Daniel

Bow-Hunter
23.09.2014, 06:19
Nein noch nicht. Bin mit Bascom noch nicht so sicher.
Es wäre nett wenn du mir das ein wenig erläutern kannst.
Gruß Glenn

Sauerbruch
23.09.2014, 09:41
Okay - fangen wir mal mit Interrupts an. Dazu gibt´s hier eine gut verständliche Erklärung:

http://halvar.at/elektronik/kleiner_bascom_avr_kurs/interrupts/

Der ATTiny13 bzw. 25 hat zwar nicht die "klassischen" Interrupt-Eingänge INT0 und INT1 (wie bei halvar beschrieben), sondern nur sogenannte PinChange-Interrupteingänge (PCINT0 - 5). Wenn Dir bis dahin alles klar ist, können wir mal ein Beispiel mit einem PCINT programmieren!

oberallgeier
23.09.2014, 09:55
... fangen wir mal mit Interrupts an ... ATTiny13 bzw. 25 hat zwar nicht die "klassischen" Interrupt-Eingänge INT0 und INT1 ...Jein - jein13 und jein25. Beide haben zwar nicht ~0 UND ~1, aber Du nennst sie ja zu Recht "klassisch" und das ist wohl der Grund, dass auch hier wenigstens einer zu finden ist. Priorisiert gleich nach dem RESET, also am Anfang der Interrupttabelle - und das macht ihn wertvoller als die PCINTs.

radbruch
23.09.2014, 13:06
Ganz einfach ginge das z.B. mit einem Interrupt und einem der beiden Timer......oder mit einem einfachen Zähler die Impulslänge messen:

zähler=0
while (Eingang_Servosignal == low) ' warten auf Startflanke vom Servoimpuls
while (Eingang_Servosignal == high) zähler++ ' warten auf Stopflanke vom Servoimpuls

if (zähler > Wert_Licht_an) then Licht_an
if (zähler > Wert_Blinker_an) then Blinker_an
if (zähler > Wert_Licht_aus) then Licht_aus

HeXPloreR
23.09.2014, 17:40
Hallo Bow-Hunter,

schau Dir dazu auch mal den Bascom Befehl "Pulsein" und "Pulseout" an. Sehr einfach einen RC-Empfänger damit einzulesen. Wenn möglich solltets du dir die empfangenden Werte mit print auf einem PC Terminal oder LC-Display anzeigen lassen um zu prüfen was z.B in Neutralstellung von den einzenlen Kanälen eingelesen wird um ggf das Programm dementsprechen anzupassen.
Das was du suchst nennt sich "Tastfunktion".

Viele Grüße
Jörg