Forum: Mikrocontroller und Digitale Elektronik FreeRTOS und ATMega644


von Dietmar E (Gast)


Lesenswert?

Kann jemand mit einer Anpassung von FreeRTOS an den ATMega644 helfen 
(d.h. die notwendigen Änderungen in der Datei port.c, aufbauend auf der 
Version für den ATMega32)? Bzgl. der Anpassung des Timer-Codes haber ich 
untenstehenden Vorschlag gefunden, aber das scheint nicht alles zu sein. 
Das Programm hängt. Der 644 soll einen Programm-Counter mit 3 Bytes 
haben?

------------------------------------------------------------------------ 
--------------
#define portFLAGS_INT_ENABLED ( ( portSTACK_TYPE ) 0x80 )

#define portCLEAR_COUNTER_ON_MATCH ( ( unsigned portCHAR ) 0x08 )
#define portPRESCALE_64 ( ( unsigned portCHAR ) 0x05 )
#define portCLOCK_PRESCALER ( ( unsigned portLONG ) 64 )
#define portCOMPARE_MATCH_A_INTERRUPT_ENABLE ( ( unsigned portCHAR ) 
0x02 )

static void prvTimerInterrupt( void )

/* Enable the interrupt - this is okay as interrupt are currently 
globally
disabled. */
ucLowByte = TIMSK1;
ucLowByte |= portCOMPARE_MATCH_A_INTERRUPT_ENABLE;
TIMSK1 = ucLowByte;
------------------------------------------------------------------------ 
--------------

von 644 (Gast)


Lesenswert?

Hallo,


habe die Anpassung vor längerer Zeit bei mir gemacht, aber das gleiche 
Problem wie bei dir. Das Teil hängt in REALTIME ;-)

K.A. was dat is.

von Dietmar E (Gast)


Angehängte Dateien:

Lesenswert?

Es war ein Fehler bei der Timer-Initialisierung, kein Problem mit dem 
Programm-Counter - der ist im Gegensatz zu einer Angabe im Datenblatt 
(vermutlich) doch nur 2 Bytes gross.

von Mathias D. (gonium)


Lesenswert?

Hi,

ich habe einen FreeRTOS-Port auf den ATMega644 gemacht - inklusive 
Integration der UART-Bibliotheken von Peter Fleury. Der Code ist hier 
beschrieben:

http://gonium.net/md/2008/08/10/freertos_for_atmega644/

Have fun,
-Mathias

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.