Atmega 32, 7-Segment - Programm hängt sich auf?

Gast #3442743
Hallo,

ich steige zur Zeit gerade von Bascom auf C um und bin grade an den 
einfachen Sachen dran. Hello World, LED blinken und sowas ist schon 
durch und geht auch.

Just in diesem Moment sitze ich vor einen 7 Segment Anzeige, die an 
meinen Atmega32 an PortA angeschlossen ist.

Was soll ich sagen, sie leuchtet und gibt mir eine "0" aus. Soweit so 
gut, bis hierhin alles bestens. Aber eigetlich soll sie nach 500ms von 
"0" auf "1" umschalten, nur genau das macht sie nicht.

Zuerst habe ich falsche Fuses vermutet, aber nix da. Auch nach 3min 
passiert absolut nix.

Was mache ich denn falsch? Bin ich einfach nur zu doof oder gibts dafür 
eine vernüftige Erklärung.

Verwende AVR Studio 4 und der Quellcode lässt sich sauber ohne Fehler 
durchcompilieren.
F_CPU ist in den Einstellungen des Projekts auf 1MHz gestellt.

Sitzte jetzt schon sein 8 min vor der Null auf der Anzeige, keine 
Reaktion. Ich habe das Gefühl das der Controller mit der _delay_ms nichs 
anfangen kann, ist sowas möglich?

Hier der Quellcode:
1
#include <util/delay.h>
2
#include <avr/io.h>
3

4
int main(void)
5
{
6
  DDRA=0xff;
7

8
  while(1)
9
    {
10
    PORTA=0b11000000;
11
    _delay_ms(500);
12
    PORTA=0b11111001;
13
    }
14
}
Soviel kann man da doch gar nicht falsch machen.

Achja, die Anzeige ist eine mit Common Anode, falls das noch jemanden 
interessiert, aber ich denke das ist eigetlich völlig Wurst.
Die Reihenfolge in deinem Programm
1
  while(1)
2
    {
3
    PORTA=0b11000000;
4
    _delay_ms(500);
5
    PORTA=0b11111001;
6
    }

ist

* an Port A das Muster für eine 0 ausgeben
* warten
* an Port A das Muster für eine 1 ausgeben
* an Port A das Muster für eine 0 ausgeben
* warten
* an Port A das Muster für eine 1 ausgeben
* an Port A das Muster für eine 0 ausgeben
* warten
....

du musst schon sehr genau schauen, wenn du die '1', die nur für ein paar 
µs leuchtet, sehen willst :-)
1
  while(1)
2
    {
3
    PORTA=0b11000000;
4
    _delay_ms(500);
5
    PORTA=0b11111001;
6
    _delay_ms(500);
7
    }
Gast
Ahhhh, verdammt. So ein dummer Fehler.

Tut mir leid für diese dumme Frage und vielen Dank für die schnelle 
Hilfe, jetzt klappts.

Den Fehler mache ich sicher nicht nochmal :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.