Forum: Mikrocontroller und Digitale Elektronik SDA und SCL am ATmega8 als normale Portpins verwenden


von PETER (Gast)


Lesenswert?

Hi,

ich habe einen ATmega8. Hier ist mein Code:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
4
int main()
5
{
6
    DDRC  |=  (1 << PC5) | (1 << PC4) | (1 << PC3);
7
8
    while(1)
9
    {
10
        PORTC ^= (1 << PC5);   // rote  LED
11
        PORTC ^= (1 << PC4);   // grüne LED
12
        PORTC ^= (1 << PC3);   // blaue LED
13
        _delay_ms(500);
14
    }
15
}
Dieser Code sollte eigentlich die drei LEDs (rot,grün,blau respektive 
PC5, PC4, PC3) zweimal pro Sekunde an- beziehungsweise ausschalten. 
Leider funktioniert das nur mit der blauen LED. Jetzt habe ich gesehen, 
dass PC5 und PC4 für I2C benutzt werden können. Liegt hier mein Fehler? 
Muss ich erst I2C deaktivieren?

von H.Joachim S. (crazyhorse)


Lesenswert?

Ist nach reset deaktiviert. Wird erst per Software eingeschaltet.
Blöde Fragen:
-AGnd und AVcc angeschlossen?
-LEDs richtig herum?

von PETER (Gast)


Lesenswert?

>AGnd und AVcc angeschlossen?
Nein
>LEDs richtig herum?
Ja

von H.Joachim S. (crazyhorse)


Lesenswert?

dann mach das mal :-)

von MeinerEiner (Gast)


Lesenswert?

Wärs kein ATmega8, sondern ein grösserer, hätt ich JTAG auf der Liste 
der Verdächtigen.

Stopf mal zwischen den PORTC ^= ... jeweils ein Delay rein bzw. tausch 
die Abfolge der LEDs um. Wenn dann eine andere blinkt, liegts evtl. 
garnicht an der Hardware sondern möglicherweise am Compiler, dass der da 
Mist "optimiert"

von PETER (Gast)


Lesenswert?

Ich habe AVCC angelötet und bei der Gelegenheit nochmal die alten 
Lötstellen kurz aufgekocht. Jetzt funktioniert es. Ich weiß allerdings 
nicht, ob es am neu angeschlossenen AVCC liegt. Wofür sorgt das AVCC 
denn in diesem Fall?

Auf alle Fälle: Danke! :-)

von (prx) A. K. (prx)


Lesenswert?

Für Strom. Am Port.

Schon kurios, wieviele Leute AVcc für überflüssig halten wenn sie den 
ADC nicht brauchen.

von Bascon-User (Gast)


Lesenswert?

[quote]
Schon kurios, wieviele Leute AVcc für überflüssig halten wenn sie den
ADC nicht brauchen.[/quote]
Sry aber XD. Für I²C brauchte ich nicht mal AGND und AVCC.

von Simon K. (simon) Benutzerseite


Lesenswert?

AVCC und AGND müssen immer angeschlossen werden. Entweder über Filter 
(wenn benötigt) oder einfach an VCC und GND.

von Alex (Gast)


Lesenswert?

Was ist AGND? Ist das einfach der GND-Pin, welcher neben AVCC liegt?

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.