Forum: Mikrocontroller und Digitale Elektronik Brauche Rat zu einer Schaltung aus der Codesammlung.


von Johannes (Gast)


Lesenswert?

Hallo Forum,

hier in der Codesammlung gibt es eine Schaltung mit Layout und Code für 
den ATtiny13.

Der Beitrag ist hier Beitrag "RC-Fernsteuerung 4-fach switch" zu 
finden.

Die Interruptaufrufe, die der compiler als obsolete gekennzeichnet hat, 
habe ich bereits durch Internetrecherche durch die ISR (TIMER_OVF...) 
ersetzt.

Ich habe sogar eine alte Version der avrlibc in mein Ubuntu gezwängt um 
mit den alten Aufrufen zurechtzukommen.

Nun mein Anliegen:
Egal ob ich diese Schaltung und diesen Code auf dem STK-500, den 
Platinen aus dem Beitrag oder auf dem Steckbrett aufbaue ... Es klappt 
nicht.

Nachdem ich einige Stunden hier im Forum Alles über Interrupt gelesen 
habe und den Timer1 des ATmega8 habe ich versucht, eine ähnliche 
Schaltung mit ähnlichem Code und dem TIMER1 im ATmega8 zu bauen / 
programmieren.

Auch das hat nicht geklappt.

Nun brauche ich die Hilfe Aller hier, wo ich denn noch nach dem Fehler 
suchen soll. Den R/C Empfänger habe ich getestet. Der klappt 1a.

Es wäre nett, wenn mir da jemand nach Durchsicht des Code aus dem 
Beispiel mal erkären könnte, warum ich keine Regung an den LED bekome.

Johannes

von Guru (Gast)


Lesenswert?

Moment. Wenn ich das richtig, verstehe sollen wir anhand eines 
funktionierenden Codes mit einer fuktionierenden Schaltung erklären, 
warum eine (absichtlich oder unabsichtlich) andere Schaltung mit einem 
(absichtlich und/oder unabsichtlich) verändertem Code nicht 
funktioniert?

Falls ich das richtig verstanden habe:
Könntest Du darüber bitte nochmal nachdenken und Deine Anfrage anders 
formulieren?

von Tom (Gast)


Lesenswert?

Johannes schrieb:
> Hallo Forum,
>

> Nun brauche ich die Hilfe Aller hier, wo ich denn noch nach dem Fehler
> suchen soll. Den R/C Empfänger habe ich getestet. Der klappt 1a.

Wow, gleich von allen. Das werden sicher viele Posts.

Wenn Dein Compiler die Interrupts als obsolet kennzeichnet, liegt es 
vielleicht an der gcc Version. Wenn Du Ubuntu benutzt hast Du vermutlich 
eine andere Version als in der ursprünglichen WinAVR benutzt wurde?

von Tom (Gast)


Lesenswert?

Ach so, poste doch mal alle Fehlermeldungen und die verwendeten 
Versionen

von Tom M. (tomm) Benutzerseite


Lesenswert?

Johannes schrieb:
> Die Interruptaufrufe, die der compiler als obsolete gekennzeichnet hat,
> habe ich bereits durch Internetrecherche durch die ISR (TIMER_OVF...)
> ersetzt.

Genaueres findest du in der manpage/Doku zur avr-libc, im Bereich 
<avr/interrupt.h>: Interrupts. Hast du den Bezeichner korrekt angepasst? 
Sonst wird da nämlich nix draus...

> Ich habe sogar eine alte Version der avrlibc in mein Ubuntu gezwängt um
> mit den alten Aufrufen zurechtzukommen.

Pfui ;) Installiere gleich wieder die aktuelle avr-libc auf deine Kiste 
und passe das Programm für deinen MC an. Die switch4ch.c in dem von dir 
genannten Artikel schaut für mich ziemlich "sauber" aus, da sollte kein 
"ich brauch ne alte libc"-Murks nötig sein.

von Johannes (Gast)


Lesenswert?

Hallo Tom M.,

in dem Source-Code aus dem zweiten Anhang heißt es: SIGNAL 
(SIG_OVERFLOW0)

Diese Funktion wird von AVR Studio 4.18, WINAVR und der Toolchain auf 
dem Ubuntu mit der neuesten AVRlibc als obsolete gekennzeichnet.

Die Ersatzfunktion dazu ist: ISR (TIMER0_OVF_vect, ISR_NAKED) und am 
Ende des ISR Aufruf reti();

Mit der alten avrlibc hat der Compiler nicht gemeckert und den 
Sourcecode so wie der da herunterzuladen ist mit 0 Fehler und 0 Warnings 
compiliert.

Dann habe ich einen neuen ATtiny 13 genommen und da das Hex-File 
reingeflashed und einen ATtiny13 bei dem ich die Fuses auf 9,6 MHz 
intern mit CKDIV 8 eingestellt habe.

Dann habe ich einen ATmega 8 mit externem Quarz, 1 MHz genommen und den 
richtig gefused.

Danach dann den Sourcecode mit SIGNAL für den ATmega 8 mit 0 Fehler und 
0 Warnings compiliert und geflasehed.

Dann habe ich einen ATmega8 mit 1 MHz Quarz genommen und den auf extern 
Quarz, 1 MHz geflased. Danach habe ich den Source-Code auf die neue ISR 
Function umgeschrieben und mit 0 Fehler und 0 Warnings compiliert.

Anschließend die HEX-Files in die ATmega 8 geflased und den Empfänger 
aus den gleichen 5 Volt versorgt, wie die Schaltungen.

Es klappt einfach nicht. Die LED bleiben dunkel.

Ich beschäftige mich gerade damit die Variable uint16_t timerValue auf 
ein LCD am ATmega8 auszugeben. Wenn mir das gelungen ist, dann weiß ich 
wenigstens ob die Variable beschrieben wird oder nicht.

Johannes

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.