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