AVR ATMEGA644 IOs

Gast #940508
Hallo zusammen

Suuuper Forum, Gratulation!

Als Ersatz für eine Steuerung entschied ich mich für einen ATmega644.
Die HW ist folgendermassen aufgebaut: Inputs von 24VDC über Optokoppler 
auf uC mit 5VDC, Outputs über High Side Switches (schalten auch 24VDC). 
Eingänge mit Pull-Down Widerständen.
HW wurde getestet, sollte keine Fehler aufweisen.
Als Compiler verwende ich AVR Studio 4.0, welcher mir von div. Seiten 
empfohlen wurde.
In Sachen C-Programmierung bin ich ein blutiger Anfänger aber leider 
bringe ich nicht einmal die einfache Ansteuerung der IOs zustande. Habe 
mir auch das Skript dieser Homepage zu Hilfe genommen...
Kann mir bitte jemand auf die Sprünge helfen, wie der Code lauten muss 
um z.B. I portc pin0 ==> O porta pin0, I portc pin1 ==> O porta pin1...
Habe viele Dinge ausprobiert und bin mittlerweilen frustriert und kurz 
vor der Resignation.

P.S. nicht böse werden über meine Unerfahrenheit ;-)

Danke im Voraus
Gast
Probiert habe ich so Vieles.
Diverse Dinge aus anderen Posts.
Was für mich nach Datenblatt und dem AVR-GCC-Tutorial das Naheliegendste 
war:

#include <avr/io.h>

void mainLoop()
{
    //main loop
}

void portTest()
{
  DDRA = 0xff;    //port a bit 0 to 7 as output
  DDRC = 0x00;    //port c as input

  for(;;)      //output active if...
  {
     PORTA = PINC;  //checking condition from input and set output
  }

}

int main()
{
  portTest();
  mainLoop();  //never return
}

Aber das JTAG... Das könnte was sein. Wie müsste das im Code 
implementiert sein?

THX for the help
Ach ja, zu deinem Programm:
1
void portTest()
2
{
3
  DDRA = 0xff;    //port a bit 0 to 7 as output
4
  DDRC = 0x00;    //port c as input
5

6
  for(;;)      //output active if...
7
  {
8
     PORTA = PINC;  //checking condition from input and set output
9
  }
10

11
}

for(;;){} ist eine Endlosschleife und wäre besser in der main() 
aufgehoben. Gehört nicht in eine Funktion, weil du da nicht mehr 
rauskommst. Beim Hauptprogramm ist das aber erwünscht.
Mit PORTA = PORTC; kopierst du  A auf C und negierst nicht. Du solltest 
vielleicht noch bei den Ausgängen die Pullup-Widerstände setzen.

@ Peter
Ja, ich weiß, dass das geht. Man kann es auch im Makefile machen. Ich 
wollte es einfach halten. Obwohl, das wäre es ja auch...

Gruß Gerd
Gast
Wer suchet, der findet!!

War definitiv die JTAG Sache.

Absolut cool, jetzt macht die Sache wieder Freude.

Muss man zuerst mal drauf kommen so als Laie...


@ Gerd: würde dir jetz gerne ein Bier spendieren ;-) Vielen Dank für 
deine Hilfe

@ Mark: danke auch dir für deinen Input

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.