Hallo,
für mein momentanes Projekt benötige ich einen AVR, der über 1 Pin Daten empfängt (SOFTUART), diese dann zerlegt und anschließend mittels PWM ausgibt. Beispiel:
Der ATMEGA8 sendet "120*90*100*200"
Jetzt soll mein zweiter AVR (ein ATTINY45) diesen String empfangen und in 4 Teile zerlegen:
1. "120"
2. "90"
3. "100"
4. "200"
Diese 4 Strings soll er nun auf 4 verschiedene PWM-Ausgänge geben. Der PWM-Teil läuft soweit, jedoch nur, solange ich meinen Split-Befehl auskommentiere.
Hier mal mein Programm:
Sobald der Split-Befehl im Programm steht, wird die PWM-ISR teilweise blockiert und meine Signale stimmen nicht mehr.Code:$regfile = "attiny45.dat" $crystal = 8000000 $framesize = 60 $hwstack = 60 $swstack = 60 Open "COMB.0:19200,8,N,2,INVERTED" For Input As #1 Config Pinb.0 = Input Config Servos = 3 , Servo1 = Portb.3 , Servo2 = Portb.2 , Servo3 = Portb.4 , Servo4 = Portb.1 , Reload = 4 , Intervall = 10 Config Portb.1 = Output Config Portb.2 = Output Config Portb.3 = Output Config Portb.4 = Output Dim _input As String * 15 Dim _data(4) As String * 5 Dim _lenght As Byte Dim _bl(4) As Byte Dim _blold(4) As Byte Dim I As Byte Const Min_servo = 11 Const Max_servo = 70 'STARTUP########### _input = "" _lenght = 0 For I = 1 To 4 _bl(i) = Min_servo _blold(i) = _bl(i) Servo(i) = _bl(i) Next I I = 0 '################## Enable Interrupts Do Input #1 , _input Noecho _lenght = Split(_input , _data(1) , "*") If _lenght > 0 Then For I = 1 To 4 _bl(i) = Val(_data(i)) Servo(i) = _bl(i) Next I _input = "" _lenght = 0 End If Loop End
Was kann ich nun dagegen tun? Den Split-Befehl rausnehmen und das Ganze irgendwie anders lösen?
Meine Hardware sieht so aus:
Ein Atmega8 lest ein WM+ und einen 4CH-Empfänger (über Summensignal) ein und errechnet daraus 4 versch. Werte für 3 BLM und 1 Servo.
Diese 4 Werte muss ich nun an den ATTINY45 (als "PWM-Controller") senden (habe nur 1 Pin). Dieser soll dann seinen 4 PWM-Ausgängen diese 4 Werte zuweisen. Die PWM-Frequenz liegt bei 50Hz.
Über ein paar konstruktive Ideen würde ich mich sehr freuen.
Gruß
Chris







Zitieren

Lesezeichen