Hallo,
ich habe gerade ein kleines Board (Atmega 644p @16MHz) mit mehreren
Sensoren aufgebaut. Mein Netzteil läuft beim Versorgen allerdings immer
in die Strombegrenzung (120mA). Nachdem ich lange nach einem Kurzschluss
in der Schaltung gesucht habe und eben keinen gefunden habe, habe ich
ein leeres Programm aufgespielt (nur 30mA fliessen).
Ich konnte den Stromanstief auf die Zeile ADC_init eingrenzen. Ist die
Zeile drin geht es in die Begrenzung, ansonsten liegt der Verbrauch bei
ca.70mA (LEDs...).
1 | int main(void)
|
2 | {
|
3 | /*
|
4 | DDRC = 0b11111111;
|
5 | PORTC = 0b00000000;
|
6 | */
|
7 | DDRA = 0x00;
|
8 | uart_init0();
|
9 | timer1Init();
|
10 | timerPWMInit();
|
11 | //ADC_Init(); //Die böse Funktion
|
12 | SPI_MasterInit();
|
13 | control_init();
|
14 |
|
15 | sei();
|
16 |
|
17 | while(1)
|
18 | {
|
19 | ...
|
die Funktion ADC_Init()
1 | void ADC_Init(void) {
|
2 |
|
3 | uint16_t result;
|
4 |
|
5 | ADMUX = /*(1<<REFS1) | */(1<<REFS0);
|
6 |
|
7 | ADCSRA = (1<<ADPS2)|(1<<ADPS1) | (1<<ADPS0);
|
8 | ADCSRA |= (1<<ADEN);
|
9 |
|
10 | ADCSRA |= (1<<ADSC);
|
11 | while (ADCSRA & (1<<ADSC) ) {
|
12 | }
|
13 |
|
14 | result = ADCW;
|
15 | }
|
Ich brauch die ADC Eingänge auch nicht auslesen, die Initialisierung
reicht. Achja, ich habe einen Analogsensor dran mit Werten zwischen 0
und 5V, die Werte liegen auch in dem Bereich
Ich kann mir das nicht erklären, vielleicht hat jemand eine Idee
Vielen Dank