Skocz do zawartości

[Kurs] BASCOM - lekcja3 - zaczynamy programować


Pomocna odpowiedź

Szukałem, kombinowałem, ale muszę zapytać, bo nic z tego.

Program kompiluje się normalnie, ale mam problem z wykryciem procka przy programowaniu.

Kupiłem USBasp, sterowniki zainstalowałem, ustawiłem go w bascomie ("MCS USB Programmer"). Naciskam F4 i wyskakuje błąd: "Could not identify chip with ID:FA0000".

Zasilanie jest na pewno, procek kolejny sprawdzam (kolejny attiny2313).

Odblokowałem też LPT w biosie, włożyłem attiny2313 do programatora tego najprostszego na lpt, zasiliłem. Adres portu lpt zmieniałem w biosie i ustawiałem w bascomie (sprawdziłem 378, 278 i 3BC). W bascomie programmer ustawiłem na "Sample electronics programmer", port delay było 0, później ustawiłem 100. Nic to nie dało. Tu z kolei wyskakuje błąd, że nie mógł wykryć proca o ID:000000.

______________

Jeszcze teraz sprawdziłem na 7mce (znalazłem sterowniki podpisane cyfrowo do USBasp). Pierwsze po naciśnięciu F4 błąd wyszedł, że nie może zidentyfikować proca o ID:F50000, później obok rozwijanego menu z prockami do wyboru, jest identify chip, kliknąłem i tam wyskoczył też błąd, że nie identyfikuje ale ID:F60000.

Kiedyś sprawdzałem jeszcze na innym programatorze na lpt i było to samo.

Na tym kompie co próbuję programować jest Win XP, ale USBasp sprawdzałem też na Win vista i na 7mce (wiem że podpisywanie cyfrowe sterów trzeba wyłączyć, ale też guzik dało).

Ma ktoś jakiś pomysł, co to może być i jak to naprawić?

Proszę o pomoc, bo nie chcę kolejnego programu napisać, żeby go nie móc sprawdzić.

USBasp nie jest tak łatwo ustawić w Bascomie. Ja ustawiałem zewnętrzny programator i podawałem ścieżkę do avrdude. Tutaj znajdziesz podpowiedź jak to zrobić.

KD93, dzięki, zabieram się za sprawdzenie, czy coś da.

dondu, schemat tego na LPT? Wrzucę za chwilę, ale to chodzi o ten z czterema rezystorami 330R podpiętymi do wtyku LPT, masy są połączone (LPT i zasilania). Zasilam to z USB (tylko nie kompa, tylko ładowarki do tel, ale jest 5V bo sprawdzałem multimetrem).

To już narysuję, bo mi gdzieś go wcięło.

KD93 takie pytanie odnośnie tego programowania przez AVRdude. Tak jak tej stronie co podałeś, nie mogę wrzucić przez avrdude (z wiersza poleceń), bo po wpisaniu którejkolwiek z tych komend tam wyświetla mi się: "Nazwa 'avrdude' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy."

Co mogłem zmaścić?

Próbowałem też w bascomie dać ścieżkę do avrdude i wprowadzić tą podaną linijkę do parameter, zmieniłem na t2313 jak powinno być. Ale jak wcisnę program to konsola tylko mrugnie, tak, że nie można zobaczyć nawet co tam jest. Wnioskuję że to i tak się nie zaprogramowało, ale jeszcze nie zdążyłem sprawdzić.

[ Dodano: 01-04-2012, 12:11 ]

Ok, przeanalizowałem ten programator na LPT i z tego co widzę, kumpel nieźle go popierniczył. Ja swojego na kompie nie znalazłem, a poszedł na części i obecnie go nie mam. Zrobię od nowa na lpt, ale może ten usb bym ogarną.

________________________________________________________

Udało się, programuje, ale program z przykładu z dwoma przyciskami nie działa poprawnie. Domyślam się, że może być to przez drgania styków, bo podobnie kiedyś w rejestrze przesuwnym miałem. Więc edytowałem go lekko (wywaliłem pętle warunkową i pomiędzy PORTD.0=1, a PORTD.0=0 dałem waitms 2000. Ale niestety nie działa. Jak zamieniam kolejność stanów, czyli na początku stan niski, po pewnym czasie wysoki to dioda cały czas nie świeci, a tak jak teraz to cały czas świeci, więc coś procek reaguje.

$regfile = "attiny2313.dat"
$crystal = 1000000
Config portb = input
portb = &B00000000
config portd = output
portd = 0000000

Do
Portd.0 = 1
waitms 2000
portd.0 = 0
loop
end

Domyślam się, że gdzieś tu może być prosty błąd, ale zastanawia mnie czy wiszący reset nie jest temu winny. Jak się podpinało reset, bo nie pamiętam (w sensie czy do plusa przez rezystor i kondensator do masy, czy jak?).

A no nie działa, bo Twoja pętla wygląda tak:

-zapala diodę

-czeka 2000ms

-gasi diodę

wtedy program wraca do początku i dioda gaśnie zanim się zaświeci czy tam odwrotnie. Musisz dać opóźnienie po jej zapaleniu. Czyli:

-zmiana stanu

-przerwa

-zmiana stanu

-przerwa

A co do USBasp to rozumiem że sobie poradziłeś?

  • Lubię! 1

A tak zapomniałem... tak to nauka historii wpływa na umysł ścisły 😃. Tak najprawdopodobniej tak, bo reakcja jakakolwiek jest. Dzięki wielkie, leci piwko za pomoc 😉. Teraz w końcu mogę za zliczanie impulsów się zabrać, do tej upierdliwej odcinki 😃.

Mam takie jeszcze pytanie, bo coś dziwnego mnie spotkało (albo coś mi się pomyliło).

Napisałem program, ale był problem, bo nie reagował na przycisk, więc napisałem najprostszy jaki można i dalej nic.

Kod tego programu:

$regfile = "attiny2313.dat"
$crystal = 1000000

Config Portd = Input
Portd = &B0000000

Config Portb = Output
Portb = &B11111111


Do

If Pind.0 = 1 Then
Toggle Portb.1
End If

Loop

End

A tu program, który działa

$regfile = "attiny2313.dat"
$crystal = 1000000

Config Portd = Output
Portd = &B0000000

Config Portb = Output
Portb = &B11111111


Do

If Pind.0 = 1 Then
Toggle Portb.1
End If

Loop

End

Różnią się tylko konfiguracją portb. W pierwszym jako input, w drugim (działającym), jako output z tym, że pod portb.0 jest podpięty włącznik (nie ważne czy reaguje na niski czy wysoki sytuacja ma się tak samo dla obu stanów). Czy ja źle myślę, czy tu coś dziwnego jest? Bo dziwne dla mnie jest, że w pinie, do którego wchodzi włącznik ma być konfiguracja jako output.

Teraz zgłupialem do reszty. Zrestartowałem kompa i jest reakcja na przycisk przy tym pierwszym programie, ale pin wyjściowy ma na zmianę wysoki/niski stan. Jak dałem opóźnienie za toggle (25ms) to miga szybciej. Jak nacisnę switcha to, albo gaśnie na czas jego trzymania, albo świeci. Ja potrzebuję stan niski, żeby segment wyświetlacza mi zaświecił (nie chce mi się przepinać tego ze stykowej, a mam już przygotowane pod piasanie konkretnego programu), więc na nim sprawdzam).

Masz wyłączone podciąganie:

Config Portd = Input
Portd = &B0000000 

Jak chcesz włączyć rezystor podciągający to musisz podać 1 w rejestrze PORTD. Czyli jedynki zamiast zer.

  • 2 tygodnie później...

Znowu mam problem, nie wiem od czego to może być. Więc tak, programuję megę8 z taktowaniem 8MHz lub 12MHz (kwarc zewn), ale w tedy muszę na usbasp ustawić ten szybszy zegar (tzn jest przełącznik na procki do 1,5MHz i powyżej), jak ustawiam, żeby "szybciej" programował to nie programuje. Jakiś pomysł czemu? Czy możliwe, że mam w kompie USB 1.1 i to dlatego?

Potrzebuję obsłużyć serwo i jak zaprogramuję na wolniejszym zegarze, to słychać takie cykanie z serwa, ale się nie ruszy, tylko kawałek na początku.

Tu jest program do obsługi tego serwa:

$regfile = "m8def.dat"
$crystal = 8000000
Config Portc.1 = Output

Config Pinb.1 = Input
Config Pinb.2 = Input
Config Servos = 1 , Servo1 = Portc.1 , Reload = 10

Dim I As Byte

S1 Alias Pinb.2
S2 Alias Pinb.1

Enable Interrupts
Set Portb.1
Set Portb.2
I = 100

Servo(1) = I

Do

Debounce S1 , 0 , Prawo , Sub
Debounce S2 , 0 , Lewo , Sub
Loop
End

Prawo:
I = I + 30

If I = 220 Then
I = 200
End If
Servo(1) = I
Return

Lewo:
I = I - 20

If I = 80 Then
I = 100
End If
Servo(1) = I
Return
  • 8 miesiące później...

Witam.

Mam problem z zaprogramowaniem atmegi 32.

Pierwsze proby odbyły się ponad 2 lata temu. Podczas proby wgrania pliku wyskakuje takie coś:

Couldn't identify chip with ID:FFFFF

oraz

Selected chip and target chip do not match (i tu rodzaje mikrokontrolerów - próbowałem na różnych).

W różnych programach to samo - nie wykrywa niczego. Testowałem na zl3avr i płytce do programowania z avt polutowanej przez profesjonalnego elektronika.Programatory kamprog avr i stk500 z avt.

Mój system to win7 64 bitowy enterprise (podobno na 32 lepiej chodzi programowanie avrów).

Mogę zlecić komuś z okolic Olsztyna W-M przejrzenie układów.

Proszę o podpowiedzi, ponieważ i tak wystarczająco długo leży to niedziałając 🙂

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...