SDA und SCL am ATmega8 als normale Portpins verwenden

Gast #1212853
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?
Gast #1212889
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"
Gast #1212902
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! :-)

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