Zew. oscylator
Zew. oscylator
Mam problem z zew. kwarcem, podłączyłem dobrze(16 lub 8Mhz) wraz z kondensatorami, lecz po zaprogramowaniu z poziomu AVR Studio nie ma żadnych zmian, mogę odłączyć kwarc z płytki a układ dalej działa... jak widać na załączniku fusy zaprogramowane, nie wywala żadnego błędu, coś ominąłem? programuje ale jednak nie programuje:P
Teraz spojrzałem, że low 0xFF oznacza, że żaden bit do low nie jest zaznaczone, ale to jest sprzeczne z samym sobą, gdyż masz wybraną opcję "Start up time" czyli opóźnienie realizacji programu po włączeniu zasilacza - bit 5 i 6 Sut0 i Sut1.
Oraz co najważniejsze, nie ma zaznaczonego bitu określającego źródło taktowania procesora! Są to bity 0 i 1 CKSEL0 i CKSEL1.
Tutaj leży błąd.
Oraz co najważniejsze, nie ma zaznaczonego bitu określającego źródło taktowania procesora! Są to bity 0 i 1 CKSEL0 i CKSEL1.
Tutaj leży błąd.
Szukam dalej rozwiązania. W dodatku nie działa mi MkAvrCalculator(nie widzi programatora). Mam programator StK500(ISP ADAPTER 2 z firmy Sibit), system Win7. Poprzez Avr Studio da się zmienić wew. kwarc z 4Mhz na 8Mhz i odwrotnie, nie ma za to możliwości zmiany na zewnętrzny 8 lub 16Mhz. Po zaprogramowaniu dalej działa wew osc. 8Mhz. Ma ktos jakieś pomysły? A procek to Attiny2313PU.
Też miałem kłopoty z STK500v2. Dzięki jednemu koledze któremu dziękuję po raz kolejny, nabawiłem się USB ASP z Atnela i teraz prawie żadnych kłopotów nie mam. Czasem wyskoczy coś jednostkowego.
Rada? Zakup USB Asp z firmy Atnel. Nie reklamuję tej firmy tylko ich produkt bo nie ma z nim żadnego kłopotu.
Rada? Zakup USB Asp z firmy Atnel. Nie reklamuję tej firmy tylko ich produkt bo nie ma z nim żadnego kłopotu.
- joon
- Użytkownik
- Posty: 2076
- Rejestracja: 30 cze 2007, 22:56
- Lokalizacja: Kraków, Przemyśl, Warszawa
- Kontakt:
Matrix: uważaj bo zaraz będzie to zaznaczone jako krypto reklama przez niektórych moderatorów :/
Dawid: jak masz problem z MkAvrCalculator napisz do autora- albo dostaniesz rozwiązanie problemu albo następna wersja będzie obsługiwała- a aktualizacje są bardzo często, zresztą teraz przy odpaleniu programu widzisz czy jest nowa wersja
Dawid: jak masz problem z MkAvrCalculator napisz do autora- albo dostaniesz rozwiązanie problemu albo następna wersja będzie obsługiwała- a aktualizacje są bardzo często, zresztą teraz przy odpaleniu programu widzisz czy jest nowa wersja
Odblokowałem jedno uC Attiny2313.
Po zainstalowaniu sys. na nowo MkAvrCalculator działa, wykrywa uC, programuje, odczytuje, wszystko robi. Jednak po wyciągnięciu kwarcu układ dalej działa... LECZ PO WYCIĄGNIĘCIU JEDNEGO Z KONDENSATORÓW(koło kwarcu) JUŻ NIC NIE DZIAŁA?
Nie wiem co to może być, dodaję jeszcze schemat jak mam to podłączone, na tej samej płytce stykowej jest też Mega16 która daje mi sygnał PPM. Może to ma znaczenie.
Co do kodu próbowałem na wszelkie sposoby definiować piny XTAL1 i XTAL2, jako wejściowe, wyjściowe, z podpiętym rezystorem...
Po zainstalowaniu sys. na nowo MkAvrCalculator działa, wykrywa uC, programuje, odczytuje, wszystko robi. Jednak po wyciągnięciu kwarcu układ dalej działa... LECZ PO WYCIĄGNIĘCIU JEDNEGO Z KONDENSATORÓW(koło kwarcu) JUŻ NIC NIE DZIAŁA?
Nie wiem co to może być, dodaję jeszcze schemat jak mam to podłączone, na tej samej płytce stykowej jest też Mega16 która daje mi sygnał PPM. Może to ma znaczenie.
Co do kodu próbowałem na wszelkie sposoby definiować piny XTAL1 i XTAL2, jako wejściowe, wyjściowe, z podpiętym rezystorem...
Kod: Zaznacz cały
#include <avr/io.h>
#include <avr/interrupt.h>
#define SER1 PD0
#define SER2 PD1
#define PPM PD3
#define PPM2 PD2
#define led PD4
volatile uint8_t b;
volatile int i;
volatile uint8_t cnt;
volatile int a;
int main(void)
{
DDRA = 0xfc;
DDRD |= (1<<SER1); //wyjście
DDRD |= (1<<SER2); //wyjście
DDRD |= (1<<led);
DDRB = 0xFF;
PORTB = 0xFF;
GIMSK |= (1<<INT1)|(1<<INT0);
MCUCR |= (1<<ISC11)|(1<<ISC00)|(1<<ISC01);
sei
(); // wl.przerwan
while(1)
{
if (b==1)
{
a++;
{
if (a>50)
{ i++;
a=0;
PORTD ^= (1<<PD4);
}
if (i>50)
{
b=0;
}
}
}}
}
ISR (INT0_vect)
{
static uint8_t cntn;
cntn++;
switch (cntn)
{
case(1):
b=1;
MCUCR &=~(1<<ISC00);
break;
case(2):
if (i>45)
{
cnt = 0;
}
i=0;
b=0;
MCUCR |= (1<<ISC00);
cntn=0;
break;
}
}
ISR (INT1_vect)
{
cnt++;
switch(cnt)
{
case(1):
PORTD |= (1<<PD0);
break;
case(2):
PORTD &=~ (1<<PD0);
PORTD |= (1<<PD1);
break;
case(3):
PORTD &=~ (1<<PD1);
break;
}
if(cnt>2)
cnt=0;
}- Załączniki
-
- Bez tytułu.png (3.87 KiB) Przejrzano 9376 razy
A jak się ma przypadkowe podłączenie odwrotnie zasilania do tej sytuacji? kiedyś te uC omyłkowo włożyłem na płytkę stykową odwrotnie, na moment uC stał się okropnie gorący, nie przejąłem się tym ponieważ niby dalej działał, timery, porty działają do tej pory ale może jednak coś koło pinów XTAL uległo zniszczeniu ?