ATmega8 - LED villogtatás 1Hz-cel

2013-01-31

 

Már régóta azt a szegény ATiny2313-at kínoztam. Tervbe volt véve, hogy az ATmega8-at is mukába fogom. Az ATiny2313-on már kigyúrtam magam, a C meg hordozható kód, pity-puty. Pity-Puty 2-3 éjszaka átkínlódása lett az eredmény, valamint két elprogamozott AVR, nem vagyok benne biztos, hogy tudom még őket reanimálni. No, ezeket azért bocsájtom előre, mert ennél a komplex kapcsolásnál, meg programnál azért bonyolultabbakat is elkövettem már. Most is nagyobb fabatkába kaptam bele, aminek a vége lett ez a vissza a gyökérhez. Nem szabad ezt a kis kapcsolást, és programot lebecsülni, az első lépés az ATmega8 földreterítésében. Én úgy szoktam debugg-olni - már ha kell :) -, hogy a programba a kritikus helyen beleírok mondjuk egy LED bekapcsolást. Ha a LED világít, már eljut a progi a kérdéses részhez. De másra is jó ez a kis kapcsolás. 1 sec (1Hz) periódus idő van beállítva. Mondjuk stopperral megmérve 10 periódus hosszát, megállapíthatjuk, hogy a uC-nek helyesen van-e beállítva az órajele?

Az egész pogram nyúlfarknyi, azt gondolom nem is igényel különösebb magyarázkodást. Az elején egy táblázatban összefoglaltam, a órjel beállítási lehetőségeket, mert én kezdetben jócskán belezavarodtam.



/*******************************************************************************
*   Author       -  Kiraly Tibor
*                   http://www.tkiraaly.hu
*   Date         -  2013.01.31.
*   Chip         -  Atmel ATmega8
*   Compiler     -  avr-gcc ( WinAVR)
*
*   LED ki/bekapcsilas
*
********************************************************************************
*   PonyProg Configuration and Security Bits (bepipalva):
*
*   CKSEL3, CKSEL2, CKSEL1, CKSEL0
*   P       P       P       P       0000  External Clock
*   
*   P       P       P       -       0001  Calibrated Internal RC Oscillator 1MHz
*   P       P       -       P       0010  Calibrated Internal RC Oscillator 2MHz
*   P       P       -       -       0011  Calibrated Internal RC Oscillator 4MHz
*   P       -       P       P       0100  Calibrated Internal RC Oscillator 8MHz
*
*   P       -       P       -       0101  External RC Oscillator 0.1-0.9MHz
*   P       -       -       P       0110  External RC Oscillator 0.9-3MHz
*   P       -       -       -       0111  External RC Oscillator 3-8MHz
*   -       P       P       P       1000  External RC Oscillator 8MHz-
*
*   -       P       P       -       1001  External Low-frequency Crystal
*
*   -       P       -       P       1010  Ceramic resonator 0.4-0.9MHz
*   -       P       -       -       1011  Crystal Oscillator 0.4-0.9MHz
*   -       -       P       P       1100  Ceramic resonator 0.9-3MHz
*   -       -       P       -       1101  Crystal Oscillator 0.9-3MHz
*   -       -       -       P       1110  Ceramic resonator 3-8MHz
*   -       -       -       P       1110  Ceramic resonator 8MHz-, +CKOPT P
*   -       -       -       -       1111  Crystal Oscillator 3-8MHz
*   -       -       -       -       1111  Crystal Oscillator 8MHz-, +CKOPT P
*
*   Calibrated Internal RC Oscillator
*   SUT1  SUT0
*   P     P         BOD enabled
*   P     -         Fast rising power
*   -     P         Slowly rising power
*   
********************************************************************************
*   PB0 (14) - LED - 470R
*                                                                           
*******************************************************************************/

#define F_CPU          4000000                   // orajel 4MHz

#include "tkiraaly_atmega8.h"
#include 




#define LED                  0
#define LED_ENABLE           BS( DDRB, LED)
#define LED_BE               BC( PORTB, LED)
#define LED_KI               BS( PORTB, LED)




int main( void)
{
   LED_ENABLE;
   for(;;)
   {
      LED_BE;
      _delay_ms( 500);
      LED_KI;
      _delay_ms( 500);
   }
}

Itt a vége, fuss el véle, legytek az én vendégeim, innen letölthetitek a hozzávalókat összecsomagolva.