Forum: Compiler & IDEs Output invertiert


von mrg (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Atmega8A aus dem AVR Starterkit 
(http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=108). 
Wie in der Anleitung beschrieben habe ich ein Beispiel einmal unter 
Linux mit dem gegebenen Makefile auf den Chip gebracht und einmal unter 
Windows mit dem Atmel Studio 6.0 (6.1 geht wegen eines Bugs nicht: 
Beitrag "AtmelStudio6 Prgrammier-Bug mit AVR-ISP mkII").

Das Atmel Studio invertiert leider die Ausgabe-Logik: 1 ist Masse, 0 ist 
Vcc. Beide arbeiten ja mit avr-gcc und avrdude. Ich bin daher mal die 
Parameter durchgegangen, habe aber nichts gefunden.

Hat jemand eine Erklärung dafür? Wo muss ich ansetzten um ein 
einheitliches Verhalten zu bekommen?

von Fabian O. (xfr)


Lesenswert?

Poste bitte den Code und eine kurze Beschreibung was er machen soll und 
was er tatsächlich macht. Das Problem liegt sicher nicht am Atmel 
Studio.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

mrg schrieb:
> Das Atmel Studio invertiert leider die Ausgabe-Logik: 1 ist Masse, 0 ist
> Vcc.

Glaub' ich nicht.

von Peter D. (peda)


Lesenswert?

mrg schrieb:
> Das Atmel Studio invertiert leider die Ausgabe-Logik:

Das ist quatsch.

Auf dem STK500 sind die LEDs gegen VCC und die Tasten gegen GND 
verdrahtet.
Somit ist 0 = LED an bzw. 0 = Taste gedrückt.

Die Schaltung Deines Boards kann das AS natürlich nicht kennen (will es 
auch nicht).

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Auf dem STK500 sind die LEDs gegen VCC und die Tasten gegen GND
> verdrahtet.

Wobei das eine durchaus übliche Verdrahtungsvariante ist.  Tasten
gegen GND erlaubt es, mit den internen Pullups zu arbeiten.  LED
gegen GND schalten war historisch bedingt deshalb gängig, weil die
n-Kanal-Transistoren im Ausgang eine größere Stromergiebigkeit
hatten als die p-Kanal-Transistoren.

von mrg (Gast)


Lesenswert?

Hallo zusammen,

ich habe den Quelltext aus dem Button-Beispiel des Boards benutzt. Zu 
finden unter 
http://embeddedprojects.googlecode.com/files/700098_AVRStarterkit.zip

Da das Atmel Studio 6.0 beim öffnen des Projekts abstürzt, habe ich dort 
ein neues Projekt angelegt und nur den Quelltext übernommen.

Die avr-gcc und avrdude Einstellungen weichen so wie ich das gesehen 
habe nicht wesentlich ab (das Makefile für Linux ist ja bereits im 
Projekt, die Kommandozeilenaufrufe aus Atmel Studio kann ich ggf. 
nachreichen).

Um das nochmal klar zu stellen: Wenn ich den verlinkten Code 
(700098_AVRStarterkit.zip\Quelltexte\button\button\button.c) unter Linux 
über das gegebene Makefile auf den Chip bringe ist die LED auf dem 
Starter-Board aus und geht an wenn ich den Taster betätige. Wenn ich den 
Code mit dem Atmel Studio auf den Chip bringe ist die LED an und geht 
beim betätigen des Tasters aus.

von g457 (Gast)


Lesenswert?

Bist Du sicher dass Du hüben ∗und∗ drüben [nicht] neu compiliert hast? 
Das im Archiv befindliche Listing-File passt offenkundig ∗nicht∗ zum 
mitgelieferten Quellcode, die Vermutung liegt also nahe, dass das 
Hex-File auch nicht zum Quellcode passt (sonder vermutlich eher zum 
Listing).

Das wäre eine sehr gute Erklärung für das von Dir beobachtete Verhalten.

von Peter D. (peda)


Lesenswert?

mrg schrieb:
> ich habe den Quelltext aus dem Button-Beispiel des Boards benutzt.

Und nun suchen wir alle danach oder wie?

Poste einfach den wirklich verwendeten Quellcode als Anhang.
Also genau den, den Du auf Deiner Festplatte liegen hast!

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
Noch kein Account? Hier anmelden.