Forum: Compiler & IDEs at90can128: _delay_ms() funktioniert nicht mehr


von Harald (Gast)


Lesenswert?

Hallo,

ich erzähl erst mal, womit ich arbeite:

AT90CAN128 auf STK500 mit 501-Adapter
WINAvr
Zur Datenübertragung: AVRStudio 4.0

Als ich heute versuchte, meine atmega8-Bibliotheken auf einem
AT90CAN128 zum Laufen zu bekommen, musste ich feststellen, daß
_delay_ms() und delay_us() nicht mehr funktionieren.

F_CPU ist auf 8MHz gesetzt, Die Teilerfuse (Divide Clocl internally by
8) ist nicht gesetzt.

_delay_ms(1) ist zunächst mal nicht hinderlich, hilft aber auch nicht.

_delay_ms(x) mit1<x<30 führt dazu, daß die Funktion, die es verwendet,
sich nicht mehr meldet bzw. keine Reaktion auf Tastendruck erfolgt.

Da ich eigentlich nur einen Taster entprellen muß, möchte ich
eigentlich keine Timerbasierte Funktion schreiben.

Hat mir jemand einen Ratschlag?

(Das Metaproblem dazu ist, daß ich meine I2C-Bibliotheken, die ich auf
einem mega8 entwickelt habe, gerade auf den at90can128 portiere.
Dabei bricht die Datenübertragung abrupt, meistens nach SLA+W aber auch
früher ab, und ich oszillographiere eine erneute start-condition. Als
Ursache vermute ich gerade stark das nicht abgefangene Tasterprellen.)

Gruß,
Harald

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


Lesenswert?

Nun, erstens sollten die Teile natürlich funktionieren, muss
ich mir am Wochenende mal auf einem 'C128 ausprobieren.

Ansonsten: use a timer.  Tastaturentprellung ist eine typische
Routineaufgabe für einen regelmäßig laufenden Timer-Interrupt.

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.