UART und Daten Ausgabe Funktion

OP #3494376
Lesenswert?

Hallo!Ich habe eine Lösung von ein Aufgabe bekommen aber folgende 
Abschnitt habe ich nicht verstanden besonders wo Frage Zeichen steht.Das 
wäre nett für eine Erklärung!Die gesamte Lösung ist unten.
1
  ISR(INT0_vect)       
2
        {
3
        a=0;            //Zähler auf 0
4
        b=1;     ???????????????
5
        }
6

7
  ISR(TIMER1_COMPA_vect)   
8
 {
9
    PORTA=a^0xff; ?????????????????    
10
    PORTC^=0x02;                // Led:AN/AUS
11
    if (PORTC &= 0x02)   // ????????????
12
        {
13
                a++;
14
                itoa(a,puffer,10);???????????
15
                uart_puts(puffer);?????????????
16
                uart_puts("\n");????????????
17
                }
18
    }
        //////////////////////////////////////
1
 #include <avr/io.h>
2
   #include <avr/interrupt.h>
3
   #include <stdlib.h>
4
   #include <avr/sleep.h>
5
   #include <avr/power.h>
6

7
volatile unsigned char a=0,b=0;
8

9
char puffer [4];                                               // DH haus namme puffer speicher reserv für 4 stellen DT char (ich)
10

11
void uart_puts(char *s);
12

13
void USART_Transmit(unsigned char  data )              //  Wait for empty transmit buffer 
14
{
15

16
while ( !(UCSR2A & (1<<UDRE2)) );                          // Put data into buffer, sends the data 
17

18
UDR2 = data;
19

20

21
    ISR(INT0_vect)                          //Interrupt zum Zähler nullen
22
        {
23
        a=0;                                    //Zähler auf 0
24
        b=1;
25
        }
26

27

28

29
  ISR(TIMER1_COMPA_vect)   
30
 {
31
    PORTA=a^0xff;                    //Ausgabe der halben Perioden
32
    PORTC^=0x02;                // Led:AN/AUS
33
    if (PORTC &= 0x02)               // if ist wie input mit pin lesen (ich)    
34
        {
35
                a++;
36

37
                itoa(a,puffer,10);
38
                uart_puts(puffer);
39
                uart_puts("\n");
40
                }
41
    }
42

43
void uart_puts(char *s)
44
{ 
45
while (*s)                                       ///* so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator" */
46
        { 
47
        USART_Transmit(*s);
48
        s++;
49
        }
50
}
51

52
int main (void)
53
    {
54

55
    set_sleep_mode(SLEEP_MODE_IDLE);
56

57
          power_all_disable();
58
          power_timer1_enable();
59
          power_usart2_enable();
60

61

62
    DDRC=0x02;                             //    C.1 als Ausgang
63
    DDRA=0xFF;                                     // Alle A als Ausgang
64
    DDRD &=~(1<<PIN1);                             // Alle D als Eingang
65

66
    PORTD=0xFF;
67
 ---------------Timer1(einstellen)---------------------------------
68
                    
69
    TCCR1A=0x0;
70
    TCCR1B|=(1<<CS11)|(1<<WGM12);               //Prescaler 8 und CTC modus
71
    TIMSK1|=(1<<OCIE1A);                         //Interrupt typ eingeschaltet
72
    OCR1A=0xF424;                             // Höchstwert eingestellt
73
-----------------EXTEN INTERRUPT-----------
74
    EIMSK|=(1<<INT0);                   // Pin 0 leitet interrupt ein
75
    EICRA|=(1<<ISC11);          //The falling edge of INTn generates  asynchronously an interrupt request
76

77

78
  ----------//USART2(Konfiguration)----------------------
79

80
        UCSR2B |=(1<<TXEN2);                    //Als Sender geschaltet
81
        UCSR2C|=(0<<USBS2)|(0<<UPM21)|(0<<UPM20)|(1<<UCSZ20)|(1<<UCSZ21)|(0<<UCSZ22); // Auf 8 Bit ausgabe + 1 Stoppbit, Parity Mode = Disable
82
        UBRR2=0x0C ;     //BAUT 4800
83

84

85
    sei();                                                 //globalte interrupts angeschaltet
86

87
    while (1){
88
        sleep_mode();
89

90
                }
91

92

93
        return 0;
94
    }
Angehängte Dateien:
Gast #3494398
Lesenswert?

Die Ausgabe der Daten sollte nicht innerhalb der TIMER1_COMPA ISR 
stattfinden.

Das Programm wird so nicht compilierbar sein, weil die Deklarationen von 
ISR(INT0_vect) und ISR(TIMER1_COMPA_vect) vor den eingebundenen 
Definitionen/Deklarationen stehen.

Gruß
Michael

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