www.mikrocontroller.net

Forum: Compiler & IDEs AVR ATMEGA644 IOs


Autor: Zork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Gerd G. (elektrikser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeige mal, was du probiert hast.
DDRC und DDRA richtig gesetzt?
JTAG-Fuse gelöscht (Du verwendest PortC. Bei Auslieferung des Atmegas 
ist JTAG gesetzt und blockiert dir vier Pins von C)?

Autor: Zork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gerd G. (elektrikser)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nicht im Code. Du programmierst die Fuses im AVRStudio unter Tools -> 
Program AVR... Ist in einem Karteireiter versteckt. In dem Bild ist JTAG 
deaktiviert.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerd G. wrote:
> Nicht im Code.

Und warum nicht?

MCUCR = 1<< JTD;
MCUCR = 1<< JTD;


Peter

Autor: Gerd G. (elektrikser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, zu deinem Programm:
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
  }

}

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

Autor: Zork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.