Forum: Mikrocontroller und Digitale Elektronik Pogrammierer für den MCT ATMEGA32 gesucht RAUM FFM


von MCTatmega (Gast)


Lesenswert?

Hey leute bräuchte mal eure Hilfe
muss ein paar Pogramme für den ATMEGA 32 schreiben
gibt es jemanden im Raum Frankfurt am Main der mir
helfen kann natürlich mit Entschädigung **

von Frank (Gast)


Lesenswert?

Wie wäre es mal mit ein paar Details?

von MCTatmega (Gast)


Lesenswert?

ich müsste so paar pogramme schreiben wie

Schreiben Sie C-Programme für den ATmega 32 (fcpu = 16 MHz), das einen 
Infraschallton von 5 Hz erzeugt. Der Lautsprecher sei mit Pin PD5 
verbunden.

Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) ohne Interrupt.
Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) mit Interrupt.
Verwenden Sie Timer 1 im CTC -Mode mit ICR1 als CCR - Register.
Verwenden Sie Timer 1 im CTC - Mode mit OCR1A als CCR - Register.
Verwenden Sie Timer 1 im Fast - PWM - Mode.

von Georg G. (df2au)


Lesenswert?

MCTatmega schrieb:
> Schreiben Sie C-Programme

Also Hausaufgaben Hilfe.

von MCTatmega (Gast)


Lesenswert?

genau
müsste es halt auch verstehen was da genau abläuft

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

MCTatmega schrieb:
> Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) ohne Interrupt.
 Prescaler auf 8, in main() TCNT1 auf >= 20000 prüfen, falls ja,
 TCNT1 = 0, Toggle Pin.

> Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) mit Interrupt.
 IntCnt = 0, Prescaler auf 1, beim zweiten OVFLW_INT TCNT1 auf 36607
 stellen, beim nächsten OVFLW_INT Toggle Pin und IntCnt = 0.

> Verwenden Sie Timer 1 im CTC -Mode mit ICR1 als CCR - Register.
 Prescaler auf 8, Timer 1 MODE auf 12 stellen, ICR1 auf 19999 stellen,
 beim INT Toggle Pin.

> Verwenden Sie Timer 1 im CTC - Mode mit OCR1A als CCR - Register.
 Prescaler auf 8, Timer 1 MODE auf 4 stellen, OCR1A auf 19999 stellen,
 beim INT Toggle Pin.

> Verwenden Sie Timer 1 im Fast - PWM - Mode.

 Mindestens eine Aufgabe solltest du alleine machen. ;)

: Bearbeitet durch User
von MCTatmega (Gast)


Lesenswert?

Hey
Vielen Dank für die Hilfe
ich gib mir mühe :D

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

MCTatmega schrieb:
> Hey
> Vielen Dank für die Hilfe
> ich

 Ooops.
 Ich habe die ganze Zeit mit 50Hz, anstatt mit 5Hz gerechnet.

 Kommst du trotzdem klar mit der Aufgabe ?

: Bearbeitet durch User
von MCTatmega (Gast)


Lesenswert?

es gehhhht
kanst du mal bitte eine Aufgabe mit Kommentaren an der Seite lösen was 
genau welcher befehl ausführt

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

MCTatmega schrieb:
> kanst du mal bitte eine Aufgabe mit Kommentaren an der Seite lösen was
> genau welcher befehl ausführt

 Ich versuch's mal:
 Zuerst muss man auf 100ms kommen, weil 5Hz = 200ms = alle 100ms LED
 toggeln, OK ?

> Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) ohne Interrupt.
 Das einzige, was man hier machen kann, da ohne Interrupt, ist den TCNT1
 standig im Loop zu prufen. Ist nicht auf us genau, aber bei 5Hz...
 Also:
 Prescaler auf 64 = 16MHz / 64 = 250KHz = 4us.
 100000us / 4us = 25000.
 Demzufolge:
 Prescaler auf 64, in main() TCNT1 auf >= 25000 prüfen, falls ja,
 TCNT1 = 0, Toggle Pin.

> Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) mit Interrupt.
 Hier gilt es:
 Prescaler auf 8 = 16MHz / 8 = 2MHz = 0.5us
 Überlauf = 65536 * 0.5 = 32768us
 3 * 32768 = 98304us, 100000 - 98304 = 1696us
 Fehlen 1696us, also wird beim dritten OVRFLW_INT
 TCNT1 auf 65536 - (1696*2) - 1 gestelt, das ergibt 63839.
 Demzufolge:
 In der ISR eine static variable deklarieren:
1
 static uint8_t IntCnt;
 Prescaler auf 8, bei jedem ISR Eintritt IntCnt erhohen, beim dritten
 OVFLW_INT TCNT1 auf 63389 stellen, beim nächsten OVFLW_INT
 Toggle Pin und IntCnt wieder auf Null stellen.

> Verwenden Sie Timer 1 im CTC -Mode mit ICR1 als CCR - Register.
 Das ist einfach:
 Prescaler auf 64 = 16MHz / 64 = 250KHz = 4us.
 100000us / 4us = 25000.
 Demzufolge:
 Timer 1 auf MODE 12 stellen, ICR1 auf 24999 stellen,
 Toggle Pin in der ISR.

> Verwenden Sie Timer 1 im CTC - Mode mit OCR1A als CCR - Register.
 Das ist auch einfach:
 Prescaler auf 64 = 16MHz / 64 = 250KHz = 4us.
 100000us / 4us = 25000.
 Demzufolge:
 Timer 1 auf MODE 4 stellen, OCR1A auf 24999 stellen,
 Toggle Pin in der ISR.

> Verwenden Sie Timer 1 im Fast - PWM - Mode.

 Mindestens eine Aufgabe solltest du alleine machen. ;)

: Bearbeitet durch User
von MCTatmega (Gast)


Lesenswert?

Suuuuuper habs gerafft
Vielen Dank

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.