AVR Studio 5., Ardunio Uno ATMega168, Inputs funktionieren nicht

Gast #2641066
Lesenswert?

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
Gast #2641086
Lesenswert?

>    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.
Gast #2645277
Lesenswert?

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.
Gast #2645577
Lesenswert?

> 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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren