mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega16 + PORTA


Autor: Sebastian Schwaiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Güß euch.

Folgendes Problem:
Ich will meine Projekte vom ATMega8 auf den 16 upgraden.
Problem:
Mein x16 reagiert nicht auf Befehle a la PORTA=0 (PORTB-D funktionieren)

Ich hab den ADC auch schon abgeschalten (was er ja bei µC reset eigtl. 
eh scho nsein sollte, oder? hilft aber alles nix.

wisst ihr, on man da sonst noch was einstellen muss, bis man PORTA als 
normalen ein/ausgang nutzen kann?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Port A ist nichts besonderes Softwareseitig notwendig.
Aber: Hast du AVcc beschaltet? Da muss die Versorgungsspannung
rann, auch wenn du den ADC nicht benutzt.

Autor: Sebastian Schwaiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm... jetz brennt die led, (an PA0 angeschlossen) nicht mehr, aber 
steuern geht immer noch ned...

Autor: Sebastian Schwaiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder sagen wir so:
die led blinkt nicht wie sie sollte!

int main(void)
{
  DDRA=0xFF;

  PORTA=0x0;
  int8_t i=0;
  for(i=0;i<20;i++)
    _delay_ms(5);

  PORTA=0xFF;
  for(i=0;i<20;i++)
  _delay_ms(5);
}

Autor: TT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die LED kann nicht blinken da das Programm nur einmal durchlaufen wird, 
sprich die LED bleibt für ca 100 ms aus und geht dann an und bleibt 
an....

zum blinken bräuchte man ne Schleife um das Ganze, zb Endlosschleife

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Schwaiger wrote:
> oder sagen wir so:
> die led blinkt nicht wie sie sollte!

Na ja, das ist ja auch kein blinken.
Mehr ein: einmal ein und wieder ausschalten
int main(void)
{
  int8_t i=0;

  DDRA=0xFF;

  while( 1 ) { 
    PORTA=0x0;
    for(i=0;i<20;i++)
      _delay_ms(5);
 
    PORTA=0xFF;
    for(i=0;i<20;i++)
      _delay_ms(5);
  }
}

  

Autor: Sebastian Schwaiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tzz... while(1) eingebaut, jetz gehts.
ABER:
eigtl sollte sich der µC doch nach der rückkehr aus main() resetten bzw. 
die main() erneut aufrufen, oder hab ich da mal was falsch 
aufgeschnappt?

Autor: Sebastian Schwaiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, jetz läuft auch mein "eigentliches" Programm (bei dem natürlich 
die Endlosschleife drin ist.)

Vielen Dank euch für die Hilfe!!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Schwaiger wrote:
> Tzz... while(1) eingebaut, jetz gehts.
> ABER:
> eigtl sollte sich der µC doch nach der rückkehr aus main() resetten bzw.
> die main() erneut aufrufen, oder hab ich da mal was falsch
> aufgeschnappt?


Was nach der Rückkehr von main() passiert hängt von
deiner Compiler bzw. der Laufzeitumgebung ab, die der
bereitstellt.
Beim WinAVR wird das Programm in einer Endlosschleife
gefangen und nichts passiert mehr.

Aber: Darauf verlässt man sich nicht. Grundsätzlich:
Auf einem µC programmiert man so, dass das Programm aus
main() nie wieder heraus kommt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.