- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 10 von 15 ErsteErste ... 89101112 ... LetzteLetzte
Ergebnis 91 bis 100 von 150

Thema: Timer0 Overflow Interrupt löst nicht aus (ATmega16)

  1. #91
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    Anzeige

    Powerstation Test
    Zitat Zitat von PicNick
    in diesem Falle dürft jetzt GARKEIN echo kommen
    tuts aber, wieder die UUUUUUUUUU (also halt nur die Bit-Kopie, so wie vorher)
    andere Tasten nur irgendein Müll

  2. #92
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    (Müll ist klar, das geht nur mit 0x55)

    Ja, aber wenn er RX_M_DATA auslöst,
    send_one_byte(bRxCount + 0x30);
    kann doch kein "U" sein ?

    Hopperla, da pfuscht uns die INT0 rein.
    Lösch' das RX_M_RECEIVE erst zusammen mit dem RX_M_DATA , aber VOR dem Send_one...
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #93
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    if (bRxFlag & RX_M_DATA)
    {

    bRxFlag &= ~RX_M_DATA;
    bRxFlag &= ~RX_M_RECEIVE;
    send_one_byte(bRxCount + 0x30);
    }

    U's kommn immer noch

    Noch ne Frage, bei 8 Datenbit 10101010 müßtn das net 0xAA sein?

  4. #94
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Nein, LSB is first, er fängt beim kleinsten Bit an, also gew. rechts nach links

    Was mich jetzt wundert, wieso send-One_byte scheinbar nix schickt, zwischen den U's
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #95
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    Zitat Zitat von PicNick
    Nein, LSB is first, er fängt beim kleinsten Bit an, also gew. rechts nach links
    Stimmt auch wieder..

    Aber eigentlich sollte doch das RX_M_DATA gesetzt werden oder nicht ?!?!

  6. #96
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ja, eben. das kann er doch nur versäumen, wenn er keine 8 Flanken erkennen kann ? Das kann er aber, sonst tät er ja nicht richtig kopieren (echo)
    Da spuckt uns wer in die Suppe
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #97
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Andere Strategie:
    Du nimmst mal ganz normal die HW-UART zum senden und empfangen.
    Den RxPin verbinden wir aber mit INT0 als Spion und der startet auch den Timer, der nix tut, außer bit zählen
    Wenn beim empfangenen Byte das UDR signal gibt, müßte dieser Zähler ja unabhängig bis etwa 8 kommen. tut er das nicht, isser zu schnell oder langsam.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #98
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    HW UART stimmt no was net ganz.. Hab ich noch was vergessen zu initialisieren ??
    Würd das dann mit unserem SW UART kombinieren, so wie du meintest
    INT0 mit dranhängen und in der Timer-ISR nur Bits mitzählen

    Code:
    __task void main()
    {
      hw_uart_init(11); // 19200 @3.686 MHz
    
      while(1);
    }
    
    
    void hw_uart_init(unsigned char baudrate)
    {
      UBRRL = baudrate;
    
      UCSRB |= (1<<RXEN) | (1<<TXEN) | (1<<RXCIE);
    }
    
    
    void transmit_byte(unsigned char data)
    {
      UDR = data;
    }
    
    #pragma vector=USART_RXC_vect
    __interrupt void UART_RX_interrupt(void)
    {
      unsigned char data;
    
      data = UDR; //receive data
    
      transmit_byte(data); // echo data
    }

  9. #99
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Morgen, in voller Frische ?
    UBRRL = LOW(baudrate);
    UBRRH = HIGH(baudrate);
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #100
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    Mag er net.
    Kann ich doch auch so schreiben:

    UBRRL = 0x0B;
    UBRRH = 0x00;

    Geht imma no net

Seite 10 von 15 ErsteErste ... 89101112 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests