Eingang direkt auf Ausgang geben

Gast #906418
Lesenswert?

Hallo!

ich habe ein Problem mit meinen C-code!

    if (bit_is_set(PINC,Rot_Eingang))
       {bit_on(PORTC,Rot_Ausgang);}
       else {bit_off(PORTC,Rot_Ausgang);}
    if (bit_is_set(PINC,Gruen_Eingang))
       {bit_on(PORTC,Gruen_Ausgang);}
       else {bit_off(PORTC,Gruen_Ausgang);}
    if (bit_is_set(PINC,Blau_Eingang))
       {bit_on(PORTC,Blau_Ausgang);}
       else {bit_off(PORTC,Blau_Ausgang);}
oder
               uint8_t x;
    x= PINC;
    x *=8;
    PORTC = x;

MEGA8 8MHZ;
würde gerne ein Eingangssignal direkt durch µC auf einen Ausgang
leiten um das Eingangsignal zu überwachen und dann bestimmte Aktionen
an den Ausgangspins auszugeben.

Habe aber jetzt das Problem wenn ich die Frequenz am Eingang immer 
weiter hoch drehe beginn ab einer Frequenz von 200 bis 300Hz  ein doppel 
trg
auf dem Ausgang.

ist der µC zu langsam?

hätte jemand eine Idee ob und wie das Funktionieren könnte?

Danke!
Gast #906454
Lesenswert?

Ja will Eingangspin gleich Ausgangspin!

                if (bit_is_set(PINC,PC0))
       {bit_on(PORTC,PC4);}
       else {bit_off(PC4);}
    if (bit_is_set(PINC,PC1))
       {bit_on(PORTC,PC5);}
       else {bit_off(PORTC,PC5);}
    if (bit_is_set(PINC,PC2))
       {bit_on(PORTC,PC6);}
       else {bit_off(PORTC,PC6);}
aber so habe ich eben doppel trg. am Ausgang bei höheren Frequenzen
hätte gerne ein sauberes Signal am Ausgang.
#907142
Lesenswert?

ich wrote:

> aber so habe ich eben doppel trg. am Ausgang bei höheren Frequenzen
> hätte gerne ein sauberes Signal am Ausgang.

Dann mußt Du uns erstmal den Rest des Programms zeigen, in den gezeigten 
Zeilen liegt der Fehler jedenfalls nicht.


Aber es wird eh kaum klappen, 3 PWMs jitterfrei durch nen MC 
durchzuschleifen, wenn er auch noch was anderes machen soll.


Peter
Gast #907841
Lesenswert?

OK


Dann wird es wohl nicht klappen mit höheren Frequenzen ,werde dann nur 
bis 200Hz PWM gehen ums durchzuschleifen .

Das reicht mir dann aus !


Jörg Wunsch es ist eine Endlosschleife drum!soviel dazu!!!

Auszug:
int main(void)
{
   init_devices();
   uint16_t Signalpegel=0;
  bit_on(TIMSK,TOIE1);
 while(1)
 {
 //------------------------------High------------------------------------ 
---------
  if ((bit_is_set(PIND, PD2)) && (bit_is_set(PIND,PD3))) //High
  {

  RGB();
  Signalpegel = AdcWert(6);
        Summe(Signalpegel);

  }
//-------------------------------middle--------------------------------- 
--------
  if ((bit_is_clear(PIND, PD2)) && (bit_is_set(PIND,PD3))) //middle
  {

  RGB();
  Signalpegel = AdcWert(6);
        Summe(Signalpegel);

  }
//-------------------------------low------------------------------------ 
---------
  if ((bit_is_set(PIND, PD2)) && (bit_is_clear(PIND,PD3))) //low
  {
        RGB();
  Signalpegel = AdcWert(6);
        Summe(Signalpegel);
  }
//------------------------------Test------------------------------------ 
---------
  if ((bit_is_clear(PIND, PD2)) && (bit_is_clear(PIND,PD3))) //Test
  {
  Test();
  }
 }
}
//--------------------------------------------------------------------
void RGB(void)
{
    if (bit_is_set(PINC,PC0))
       {bit_on(PORTC,PC4);}
       else {bit_off(PC4);}
    if (bit_is_set(PINC,PC1))
       {bit_on(PORTC,PC5);}
       else {bit_off(PORTC,PC5);}
    if (bit_is_set(PINC,PC2))
       {bit_on(PORTC,PC6);}
       else {bit_off(PORTC,PC6);}
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren