www.mikrocontroller.net

Forum: Compiler & IDEs IO - Ausgänge schalten (ATTINY 2313)


Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich bin Einsteiger in der Mikrocontroller-Programmierung und habe 
derzeit Probleme bei der Ausgabe einer Signalfolge. Mein Projekt ist der 
Bau einer Schaltung zur Simulutation eines nicht vorhandenen 
CD-Wechslers an einem Blaupunkt Autoradio (VW-Passat, Radio "Beta"). 
Damit wird der Line-In Eingang freigeschaltet und es können MP3-Player 
oder ähnliche Geräte an das Radio angeschlossen werden.

Hierzu ist es erforderlich, mit einem Mikrocontroller zwei Signale (Takt 
& Signal) zu generieren, die an den Autoradio angelegt werden. Den 
Quellcode meines Programmes habe ich angefügt. Es soll eine 8 Bit lange 
Zeichenfolge an PD5 und PD6 ausgegeben werden, welche jeweils 8 mal 
wiederholt wird, gefolgt von einer Pause von 43ms.

Im derzeitigen Zustand gibt das Programm kein Signal an PD5 aus und PD6 
hat 5V konstant. Bei den Fusebits habe ich in PonyProg einen Haken bei 
"CKSEL0" und bei "CKOUT" gesetzt. Sollte dann an PIN6 des Prozessors der 
Takt von 1MHz ausgegeben werden?? Hier messe ich 2V (const.). Ich muss 
dazusagen, dass ich davor einiges mit den Fusebits herumgespielt habe 
und erst im Anschluss daran hier im Forum gelesen habe, dass dies ein 
neuraligischer Punkt ist.

Tausche ich im Quellcode den Befehl "_delay_us( )" in allen Zeilen gegen 
den Befehl "_delay_ms( )" aus, dann erhalte ich an PD5 ein periodisches 
Signal (22us "high" - 4us "low"). PD6 hat kein Signal. Pin6 hat wie 
vorher konstant 2V anliegen.

Hat jemand von euch einen Tipp, wie ich weiterkomme? Ich würde mich sehr 
über Hilfe freuen!

Ich verwende einen Atmel ATTINY 2313 auf dem Evaluations-Board von 
Pollin (Version 2.0). Die Programmierumgebung ist WinAVR 
(2.0.7.667-devel) und PonyProg2000 (2.07c Beta  Jan  6 2008).

Viele Grüße,

Stefan

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
_delay_us() und _delay_ms() übergibt man keine Variablen !
Das müssen konstante Werte sein. Aus:

int pause=3;
int pause2=5;

mach mal

#define pause  3
#define pause2 5

Außerdem Optimierung muss mindestens -O1 sein.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Holger,

vielen Dank für deine Hilfe und den Tipp. Die Schaltung funktioniert 
jetzt endlich (nachdem ich zuvor unzählige Stunden in die Suche des 
Fehlers investiert hatte...)!!

Noch eine Frage: Auf was bezieht sich "Optimierung"? Wo kann ich den 
Parameter ablesen und wie kann er beeinflusst werden?

Gruß,
Stefan

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan (Gast)

>Noch eine Frage: Auf was bezieht sich "Optimierung"?

Auf die Arbeitsweise des Compilers.

>Wo kann ich den Parameter ablesen

Den kann man einstellen, in den Optionen des Projekts oder im Makefile.

MFG
Falk

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.