Avr Rs232 & Timer ?

Gast #3230996
Wunderschönen Sonnatg

Ich brauche für ein Projekt möglichst viele(30) Pwm's Jenachdem was 
möglich ist werd ich wohl mehrere Avrs verwenden.
Nun mein Problem wenn ich eine Soft Pwm erstelle und den Prescaler vom 
Timer unter 64 einstelle kann ich über die Rs232 keine daten mehr 
emfangen.
Ist damit die Leistungsfähigkeit schon am ende? Lg
Gast
Sven schrieb:
> Ist damit die Leistungsfähigkeit schon am ende? Lg

der empfang erfolgt doch von der Hardware. Die ist unabhängig von der 
Auslastung. Oder kommt deine Software nicht nach die Daten zu 
verarbeiten?
Gast
Gute Frage.
Im rs232 Isr schreib ich gerade nur das emfangene Byte in eine Variable 
und setzt eine andere variable auf 1.
In der Main warte ich auf ein emfangenes Byte und übergebe das an die 
Variable der Softpwm.
Da Passiert allerdins nix mehr, Erst ab einem Prescale 64. Nur dann ist 
die Pwm viel zu langsam.
Gast
1
$regfile = "m32def.dat"
2
$crystal = 12000000
3
$baud = 9600
4
Config Portd.4 = Output
5
Config Portd.5 = Output
6
Config Portd.6 = Output
7
Config Portd.0 = Input
8
Config Portd.1 = Output
9
Config Portd.7 = Output
10

11
Dim Adsoll As Byte
12
Dim Rsin As Byte
13
Dim Ist As Bit
14
Dim Pw1 As Byte
15
Dim Zahler As Byte
16

17

18
Config Timer0 = Timer , Prescale = 64
19
Enable Timer0
20
On Timer0 Isr_t1
21

22
Enable Urxc
23
On Urxc Rxd
24

25
Enable Interrupts
26
Adsoll = 101
27
Pw1 = 100
28

29
Do
30
'   If Ist = 0 Then
31
'      Pw1 = Adsoll
32
'      Print Chr(adsoll)
33
'      Ist = 1
34
'   End If
35
Loop
36

37
Rxd:
38
   Pw1 = Udr
39
   Ist = 0
40
   Toggle Portd.7
41
Return
42

43
Isr_t1:
44
   Timer0 = 254
45
   If Zahler < Pw1 Then Portd.6 = 1 Else Portd.6 = 0
46
   Incr Zahler
47
Return


Selbst wenn die Timer Isr nurnoch den wert stellt geht nixmehr. Das 
sollte keine 64 Takte dauern.
Gast
Peter II schrieb:
> MWS schrieb:
>> Peter II schrieb:
>>> ISR braucht mehr als 64takte.
>>
>> 64 Takte x Top des Timers
>
> er wird wohl mehrfach die Compare ISR aufrufen. Sonst könnte er wohl
> kaum 30 PWM bedienen können.

Ich wollte darauf hinweisen, dass die Softpwm ISR schon ein wenig länger 
dauern kann als 64 Takte, denn mit dem Prescaler 64 wird ja erst mal der 
Timer gefüttert, welcher dann bei Top auf 0 geht. Verwendet er einen 
8Bit Timer, so geht das ganze bei 64 x 256 = 16384 Takten zwischen den 
Aufrufen, aber eben nicht mehr mit 8 x 256 = 4096 Takten dazwischen. 
Zuästzlich anders wär's noch bei CTC.

Im Prinzip stimme ich aber zu, die SPwm ISR verbraucht einfach zu viele 
Zyklen, so dass nichts mehr geht.
Gast
Falk Brunner schrieb:
> Dann isses ja kein BASCOM mehr. Inline Assembler zählt nicht.

Falsch. Dein Aussage wäre richtig, würde sie so lauten:
"Dann isses ja kein Basic mehr."

Bascom ist Basic verbunden mit einfachster Integration von Assembler, 
und "einfachst" ist wirklich so.
Gast
Okay danke.
Dann werd ich mir mal ein paar neue Lösungen ausdenken.
Zumal es ja mit ausgabe der Pwm's nicht getan ist. Ziel ist es Motoren 
Pid geregelt zu steuern.
Bei 30 PWMs und serieller Kommunikation sind ja keine Pins mehr übrig.

Ich würde folgendes probieren:

-Interrupts weglassen
-Empfang per ischarwaiting
-Soft-PWM in die Hauptschleife packen, der Timer is eh überflüssig, wenn 
dieser ständig anschlägt


Da geht nichts verloren. Evtl. "stockt" die PWM, wenn Daten empfangen 
werden. Wenn man weiß, was da für Daten kommen und wieviel Takte das 
braucht, kann man bei keinen Daten diese Zeit als NOPs "simulieren"

Ist das ganze zu langsam, dann den Takt z.B. auf 16 MHz erhöhen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.