Hallo liebe Mikrocontroller-Gemeinde, ich versuche schon seit ein paar Tagen mein Arduino-Board über AVR Studio 5 zu programmieren. Ich habe es derweilen auch hinbekommen, dass ich aus dem AVR Studio den Mikrocontroller flashen kann, da ich über die Funktion der externen Tools den Arduino Hex Uploader nutze. Nur schaffe ich es nicht, egal was ich mache, einmal ein INPUT zu generieren. Im Folgenden habe ich meinen sehr einfachen Code mal angehangen. Evtl. weiß ja von euch jem. ob ich was falsch mache und wenn ja, was ich falsch mache;-) Gruß Martin #include <avr/io.h> #include <avr/delay.h> #include <math.h> int main(void) { DDRB= 0B00100000; PORTB|= 0B11011111; while(1) { if (PINB4==1) PORTB |=(0x01 << PB5); else PORTB &= (0B11011111); } } PS: Bei dem Board handelt es sich meines Wissens nach um ein zum Atmel UNO baugleiches Board. Also ein Arduino Uno Atmel Atmega mit einem ATMEGA168
> if (PINB4==1) if ( (PINB & (1<<PINB4)) ) PUNB4 ist nur die Bitnummer. Das Einlesen des Ports geht über das 8-Bit Register PINB und das Abfragen des Pins über die & (Bitweise UND) Verknüpfung. Mehr im Artikel Bitmanipulation. Wenn das halbwegs klappt und du dich fragst, wieso nur halbwegs, dann den Artikel Entprellung lesen. Im Schaltplan (http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf) kann ich nicht sehen, wie der Schalter/Taster an PINB4 und die LED an PB5 angeschlossen sind, daher habe ich das nicht kontrolliert. Muss du selbst machen. Stichworte sind hier ob active-low oder active-high Schaltung bei den LEDs verwendet wir und ob interne oder externe Pull Up oder Pull Down Widerstände nötig sind. Das kann man im AVR-GCC-Tutorial bei IO&Tastern&Schaltern nachlesen.
PUNB4 => PINB4 (zu dicke Wurstfinger)
> was ich falsch mache > if (PINB4==1) ^^^^^^^^ ..wertet nach 'unwahr' aus. HTH
Hallo zusammen, vielen Dank für die super Antworten. Jetzt funktioniert es;-) Die Zeile if ( (PINB & (1<<PINB4)) ) bewirkt wahre Wunder;-) Gruß Martin
Hallo Matin! Ich hab auch ein Arduino Uno und möchte das mit AVR Studio 5 programmieren. wie hast du das genau gemacht, damit es mit AVR-Studio funktioniert? Georg
Du kannst von AVRStudio 5 her mit jedem Proger (USBasp, USBisp usw.) flashen voraussetzung ist du benutzt eine "externe Tool" zum programmieren z.B. oder in meinem Fall wäre AVRDUDE. In AVRStudio 5 gehst du unter Tools\External Tools dann Add, dann Command: C:\WinAVR-20100110\bin\avrdude.exe (in meinem Fall) Arguments: Arguments: -e -P usb -c avrispmkII -p ATmega8535 -e -U flash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":a Wobei bei dir sollte statt avrispmkII arduino stehen (glaube ich). Fertig.
> Ich hab auch ein Arduino Uno und möchte das mit AVR Studio 5 > programmieren. Auf dem Arduino Uno ist ein Atmega328 drauf und in dem ist ein Bootloader. Zur Kommunikation zwischen PC (AVR Studio) und Atmega328 (Bootloader) kann man - wie es in der Arduino IDE auch gemacht wird - das Programm AVRDUDE benutzen. AVRDUDE ist sowohl in WinAVR (der alten AVR-GCC-Toolchain für Windows), der neuen AVR-Toolchain für AVR Studio und in der Arduino IDE vorhanden. Wenn man die unten verlinkte Anleitung benutzt, empfiehlt sich die Installation der Arduino IDE. Den Aufruf von AVRDUDE macht man als Externes Tool aus AVR Studio heraus. Dabei muss man dem AVRDUDE eine Kommandozeile angeben. Und da wird es 'haarig': Man muss wissen, an welcher virtuellen seriellen Schnittstelle das Arduino UNO hängt (Nachsehen im Gerätemanager unter LPT&COM) und wie das Resultat des Kompiliervorgangs heisst (Pfad und Name der .HEX). Damit kann man eine Kommandozeile bauen: Siehe Punkt 4- Configure the programmer bei http://www.jayconsystems.com/forum/viewtopic.php?f=15&t=18
ADD: Wenn man auch die Arduino-Biblitheken in AVR Studio benutzen will, dann gibt es eine Anleitung bei der AVR-Freaks: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=874597
danke für eure hilfe. das hat mir schon sehr weiter geholfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.