ATMega16 schaltet keine Pins

Gast #2117303
Lesenswert?

Hi, ich habe folgendes, mir unerklärliches Problem:
ich wollte ein Programm für eine Uhr auf den Controller überspielen. 
Dies klappte auch problemlos allerdings schaltete der Controller keinen 
seiner Ausgänge.
Daraufhin habe ich das Programm so weit vereinfacht, bis folgendes 
herausgekommen ist:
1
#include <avr/io.h>
2
  
3
int main(void)
4
{
5
    DDRA = 0xff;    
6
    PORTA = 0xff;   
7
    return 0;
8
}
Allerdings zeigt sich der Controller relativ wenig beeindruckt.
Meine Beschaltung:
Takt: 4Mhz extern Quarz
Versorgungsspannung an VCC, AVCC und AREF
GND an beiden GND anschlüssen
100nF zwischen vcc und GND
10k zwischen VCC und Reset
und natürlich ne LED für die Portpins.

Hat irgendjemand eine Idee, was ich Versuchen könnte?
Danke.

MfG Miche
Gast #2117322
Lesenswert?

Hi Miche,

wenn die LEDs als Pull-down geschaltet sein sollten. Also Anode an +Ub 
und Kathode über R an µP-Pin geschalte, dann bleiben die LEDs dunkel. Du 
muß PORTA = 0x00 programmieren. Dann sollten sie leuchten.

Viel Erfolg
Gast #2117336
Lesenswert?

Miche schrieb:
> ich wollte ein Programm für eine Uhr auf den Controller überspielen.
> Dies klappte auch problemlos allerdings

Das verify nach dem Flashen liefert keine Fehler?

Miche schrieb:
> Takt: 4Mhz extern Quarz

Wie hast du denn die Fuses gesetzt?

Anonsten ist ein ausgeführtes return in main nicht sonderlich klasse, in 
diesem Fall aber stört das nicht.

Oliver
#2117337
Lesenswert?

Dein Controller fängt immer wieder von vorne an.
Versuch mal ihn nach den Befehlen idlen zu lassen:
1
#include <avr/io.h>
2
  
3
int main(void)
4
{
5
    DDRA = 0xff;    
6
    PORTA = 0xff;   
7
    while(1);
8
    return 0;
9
}

Die Beschaltung der LEDs (also Polung+Vorwiderstand) ist natürlich auch 
wichtig... R's hast du ja wohl drin für die LEDs?
Gast #2117349
Lesenswert?

verify liefert keinen Fehler, hab nur den Clock auf externes quarz 
gesetzt.
Mit neuem Controller und Werkseinstellung funktioniert es aber auch 
nicht.
Auch das eingefügte while(1); bringt keine Besserung.
Hatte ich zuvor auch im Programm aber der Controller müsste nach meinem 
Verständnis nach die zustände auch ohne while(1); behalten oder?
Rs sind vorhanden und LEDs sind richtig gepolt.
langes bein an VCC, kurzes bein an R und zweites bein von R an AVR PIN 
A2
#2117362
Lesenswert?

Miche schrieb:

> Rs sind vorhanden und LEDs sind richtig gepolt.
> langes bein an VCC, kurzes bein an R und zweites bein von R an AVR PIN
> A2
Also doch anders rum. Mit der beschaltung musst du die Ports auf 0x00 
schalten, dann sollten sie leuchten.

langes Bein => Anode
kurzes Bein => Kathode

Da an der Anode bereits VCC anliegt muss an der Kathode 0V == GND liegen 
damit sie leuchten.
Gast #2117456
Lesenswert?

Ich habe nun den Fehler denke ich eingrenzen können:
habe den Controller nun mit meinem Netbook programmiert -> funktioniert
werde in nächster Zeit mal winavr und avrstudio neuinstallieren
Danke für die schnelle Hilfe
MfG Miche

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