mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unterprogramm im hintergrund laufen lassen


Autor: Klaus O. (kelomat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute!

Vorweg: ich bin noch ein blutiger Anfänger beim Programmieren!

Ich hab ein kleines Problem!
Ich will mit einer Infrarotfernbedienung 2 Zahlen eingeben und nach der 
"Enter"-Taste sollen diese auf einer 7Segment anzeige erscheinen.

Das ganze funktioniert schon ganz gut! Nur: das mit dem multiplexen der 
Anzeige haut nicht so ganz hin weil scheinbar das Programm für das 
auswerten vom rc5 (getrc5) zulange braucht.

Jetzt blinkt die erste anzeige.

Gibt es da eine möglichkeit ein Unterprogramm für's Multiplexen im 
Hintergrund laufen zu lassen???

mfg
Klaus

Autor: Olli R. (omr) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus O. wrote:

> Gibt es da eine möglichkeit ein Unterprogramm für's Multiplexen im
> Hintergrund laufen zu lassen???

Wieviele Kerne hat Dein uC?

Olli

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tu das Multiplexen in nen Timer-Interrupt und gut ist.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>cheinbar das Programm für das auswerten vom rc5 (getrc5) zulange braucht.


Sind dort etwa delays drin??

Das RC5 dekodieren geschieht doch auch im Timer interrupt...

Autor: Klaus O. (kelomat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bis jetzt hab ich das:

$regfile = "m32def.dat"
$framesize = 1000
$swstack = 1000
$hwstack = 1000
$crystal = 16000000
$baud = 9600


Config Portc = Output
Ddra = &B00000011


Seg1 Alias Porta.0
Seg2 Alias Porta.1

Config Rc5 = Pina.3



Enable Interrupts

Dim Address As Byte , Command As Byte , Seg1_var As Byte , Seg2_var As 
Byte , Eingabe As Byte
Dim Einer As Byte , Zehner As Byte , Zahl As Byte , Enter As Bit , 
Erste_fertig As Bit


Do



Getrc5(address , Command)

Command = Command And &B01111111



  'Print Address ; "  " ; Command
  'Print Zehner ; " " ; Einer ; " " ; Enter


If Address = 255 Then
   Erste_fertig = 0
   Goto Weiter
   End If

If Command < 10 And Zahl = 0 Then                           'zehner
   Zehner = Command
   Zahl = 1
   Erste_fertig = 1
   End If

If Command < 10 And Zahl = 1 And Erste_fertig = 0 Then      'einer
   Einer = Command
   Zahl = 2
   End If

If Command = 87 And Zahl = 2 Then                           'enter
   Enter = 1
   Zahl = 0
   End If


Weiter:

   If Command = 41 Then                                     'löschen
   Enter = 0
   End If


   If Enter = 1 Then
       Seg1_var = Lookup(zehner , Anzeige)
       Seg2_var = Lookup(einer , Anzeige)


 Seg1 = 1
 Seg2 = 0
 Portc = Seg1_var
 Waitms 5


 Seg1 = 0
 Seg2 = 1
 Portc = Seg2_var
 Waitms 5
  Else
 Seg1 = 0
 Seg2 = 0
    End If


  Loop

End

 Anzeige:
   Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111
   '      0   1    2   3    4    5       6    7    8    9

Mit Timern hab ich noch nicht wirklich erfahrung gemacht...

Hat wer verbesserungsvorschläge?
Irgendwelche Fehler?

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mit Timern hab ich noch nicht wirklich erfahrung gemacht...

Dann wirst du es jetzt wohl oder übel machen müssen.

Autor: Klaus O. (kelomat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Tu das Multiplexen in nen Timer-Interrupt und gut ist.

Das wars'

DANKE!!!!!

lg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.