Forum: Compiler & IDEs XTAL auf Ausgang uebertragen und verarbeiten


von Hannes B. (hannesb1980)


Lesenswert?

Hi,

nun bin ich ein uebelst schlechter c programmierer und von µC hab ich 
auch mal keine Ahnung aber da mich jemand gebeten hat versuch ich 
einfach mal mein Glueck.

1. ich wuerde gerne das am XTAL anliegende Signal auf 1 Abfragen dazu 
hab ich mal was geschrieben aber das geht wohl so nicht oder?

2. wuerde ich gerne dieses Signal 1 zu 1 auf die Ausgaenge PA3 und PA5 
uebertragen. Geht dies????

3. macht das Sinn was ich geschrieben hab oder eher nicht? Wiegesagt hab 
nicht wirklich ahnung.
1
/*
2
 * AVRGCC1.c
3
 *
4
 * Created: 21.02.2012 05:43:36
5
 *  Author: ich
6
 */ 
7
8
#include <avr/io.h>
9
#include <stdint.h>
10
11
12
int main(void)
13
{
14
  DDRA = 0xff;      // Ausgang
15
  DDRB = 0x00;      // Eingang
16
  DDRC = 0xff;      // Ausgang
17
  
18
  int i;
19
  int x=0;
20
  int y = 0;
21
  unsigned char old=0, new;
22
  unsigned char XTAL1;
23
  
24
    
25
    while(1)
26
    {
27
        
28
    if ( i = 0, i < 1000, i++)        // Schleife Flankenabfrage
29
    {
30
      
31
    
32
  
33
      
34
        new = (XTAL1 != 0);  //steigende Flanke an XTAL1 soll erkannt werden.
35
        if(!old && new)
36
        {
37
          x=x+1;
38
        }
39
        old=new;
40
       
41
      }                      // Ende Schleife Flankenabfrage.     
42
       
43
    
44
    
45
    
46
    if (x < 200)   { y == 1; }
47
    if (x < 400)   { y == 2; }
48
    if (x < 600)   { y == 2; }
49
    if (x < 800)   { y == 3; }
50
    if (x < 1000)  { y == 4; }
51
    if (x == 1000) { y == 0; }
52
        
53
  
54
  
55
  
56
  
57
    
58
    
59
        switch(y)              // Ausgänge Ansteuern   .... y aus Flankenabfrage.
60
        {
61
          case 1:
62
          PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7);
63
          PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (1<<PC6) | (1<<PC7);
64
          break;
65
66
          case 2:
67
          PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7);
68
          PORTC |= (1<<PC0) | (1<<PC1) | (0<<PC2) | (0<<PC3) | (0<<PC4) | (0<<PC5) | (0<<PC6) | (0<<PC7);
69
          break;  
70
71
          case 3:
72
          PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7);
73
          PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (0<<PC4) | (0<<PC5) | (0<<PC6) | (0<<PC7);
74
          break;  
75
          
76
          case 4:
77
          PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7);
78
          PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (0<<PC6) | (0<<PC7);
79
          break;  
80
          
81
          case 5:
82
          PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7);
83
          PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (1<<PC6) | (1<<PC7);
84
          break; 
85
        }
86
87
    
88
89
    }
90
  return 0;
91
  
92
}

von Falk B. (falk)


Lesenswert?

@  Hannes Bubar (hannesb1980)

>nun bin ich ein uebelst schlechter c programmierer und von µC hab ich
>auch mal keine Ahnung aber da mich jemand gebeten hat versuch ich
>einfach mal mein Glueck.

Versuchs mal mit Netiquette. Dein Geschreibsel ist konfus.

>1. ich wuerde gerne das am XTAL anliegende Signal auf 1 Abfragen

Was für ein Signal? Wie schnell?

>dazu
>hab ich mal was geschrieben aber das geht wohl so nicht oder?

Konfuser Unsinn.

>2. wuerde ich gerne dieses Signal 1 zu 1 auf die Ausgaenge PA3 und PA5
>uebertragen. Geht dies????

Nur, wenn es ein relativ langsames Signal mit ein paar kHz ist.

>3. macht das Sinn was ich geschrieben hab oder eher nicht?

Nicht!

MfG
Falk

von Oliver (Gast)


Lesenswert?

Hannes Bubar schrieb:
> ich wuerde gerne das am XTAL anliegende Signal auf 1 Abfragen

Der komplette C-Code ist Unsinn, teilweise völlig falsch, der Rest passt 
nicht zu deiner etwas konfusen Problembeschreibung.

Kannst du mal in eigenen Worten genauer erklären, WAS du überhaupt 
machen willst? Was meinst du mit XTAL? Was für ein Signal liegt da an? 
Was willst du ausgeben? Und welchen AVR genau verwendest du?

Wenn dir (!!!) das klarer ist, und du es dann so formulieren kannst, daß 
auch jemand hier im Forum das verstehen kann, dann kann man über eine 
Umsetzung in ein Programm nachdenken.

Hilfreich wäre es, wenn du dich mal durch das Tutorial durcharbeitest, 
zumindest durch die Kapitel über die IOs.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Mit "XTAL" meinst du aber nicht zufällig den µC-Pin, an dem zb ein Quarz 
oder ein Quarzoszillator oder irgendeine sonstige Taktquelle des µC 
angeschlossen ist, die vom µC auch zur Taktversorgung benutzt wird?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.