Arduino programozás Bascom alól

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Arduino programozás Bascom alól

Hozzászólás Szerző: Cinege446 »

Üdv!

A teljes internetet átbújtam oda-vissza, hogy Bascom alól hogyan lehet Arduino panelen programozni, de az Istennek sem akar összejönni! Arra jutottam, hogy lényegében az összes módszer ugyan azt a metódust használja, így az ezen az oldalon olvasható megoldást másodjára még tüzetesebben is kipróbáltam, de semmi. Még csak az sem jön össze, hogy a batch fájl lefutása ne egy pillanat műve legyen, hanem gombnyomásra lépjen ki.
Az esetemben annyi az eltérés a taviron szereplő példához képest, hogy 328p típusú a mikrovezérlő és COM3-as portra hozta ki a panelt, valamint az arduino programon belül mások az elérési utak. Ezeket át is írtam a bat fájlban, így a következőképpen néz ki most:

=============================
@echo off
echo.
echo AVR-Duino/Arduino uploader for Bascom by AVRDuDe
echo Version: 0.2 alpha for Arduino-NG / Diecimila
echo Contact: csehrobert(at)tavir(dot)hu
echo http://avr.tavir.hu
echo (c) 2009-02-12
echo.

set avrdudefile=H:\arduino\arduino-0012\hardware\tools\avr\bin
set avrdudeconf=H:\arduino\hardware\tools\avr\etc\avrdude.conf
set comport=COM3
set chip=m328p
set comspeed=19200
set debug=0

if %debug% == 0 goto next
echo Param1:%1
echo Param2:%2
echo Param3:%3
echo Param4:%4
echo Param5:%5
echo Param6:%6
echo Param7:%7
echo Param8:%8
echo Param9:%9
echo.
:next

echo Flash : %1
echo EEPROM : %2
if "%3" == "" echo COM : %comport% (default)
if NOT "%3" == "" echo COM : %3
if NOT "%3" == "" set comport=%3

if "%4" == "" echo Chip : %chip% (default)
if NOT "%4" == "" echo Chip : %3
if NOT "%4" == "" set chip=%4

if "%5" == "" echo COMSpeed: %comspeed% (default)
if NOT "%5" == "" echo COMSpeed: %5
if NOT "%5" == "" set comspeed=%5

echo.

rem cd "%avrdudefile%"
rem avrdude.exe -C "%avrdudeconf%" -p m328p -c avrisp -P %comport% -b 19200 -U flash:w:%1:a
"%avrdudefile%\avrdude.exe" -C "%avrdudeconf%" -p m%chip% -c avrisp -P %comport% -b %comspeed% -U flash:w:%1:a
pause
=================================

Esetleg valaki talál benne hibát, vagy van hasonló tapasztalatotok?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

duino2.bat hova lett bemásolva?
A Bascom alatt external programmer esetén ha bevillanás van: nem látja a bat file-t.
Elérési útjában ne legyen szóköz, ékezetes betű. Én praktikusan a C:\-re rakom.


A fórumban a 02-alpha helyett már 1.0 körül járok....
http://avr.tavir.hu/modules.php?name=Fo ... c&start=15
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Hozzászólás Szerző: Cinege446 »

Szia Robert!

Idő közben a felprogramozás problémája megoldódott! Leszedtem a 2.0.7.3-as patch-et a Bascomhoz, amivel már kényelmesen listából ki lehetett választani az ARDUINO-t. Jelenleg az LCD-vel bajlódom. A háttérvilágítást gyönyörűen elindítja, de a programban megírt szövegből egy karaktert sem jelenít meg! Lehet az a probléma, hogy a D0-D3 lábak nincsenek testre téme? (4bit-en próbálom megszólaltatni)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A beépített arduino - felejtős. STK500-at hívja meg, annak minden nyűgjével együtt... + Nem támogatja az Arduino UNO, Arduino 2560 illetve Leonardo rendszereket:(

Az LCD akkor nem éled, ha:
- bekötés nem jó (R/W a GND-re!),
- programot elírtad,


Programkód? :)
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Hozzászólás Szerző: Cinege446 »

Az R/W le van kötve, azzal nincs gond. Már még a kontrasztra is elkészítettem a feszültségosztót, gondolván hátha... A programkód a lehető legegyszerűbb :)

$regfile = "m328pdef.dat"

Cls
Do
Lcd "Hello"
Loop

Gyakorlatilag mindent a csip beállításaiban adtam meg, hogy az LCD melyik lába a mikrokontroller melyik kivezetéséről van ketyegtetve. Órajelet is ellenőríztem. Egyébként nálam az egyszerű port be- és kikapcsolások felprogramozására tökéletesen ment a beépített Arduino eljárás!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

hiányzik:

initlcd


lcdkiírás: nem kell do loop-ba. Ha kiírtad, ott marad.
LCD lábkiosztásra jobb a config lcd= sort berakni a programba
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Hozzászólás Szerző: Cinege446 »

Elvégeztem a javasolt javításokat. Annyiban változott a helyzet, hogy most a teljes alsó mátrixsort villogtatja kb. fél Hz-es gyorsasággal, valamint a háttérmegvilágítás erőssége is ennek függvényében villog. Most így néz ki a programsorom:

$regfile = "m328pdef.dat"
Initlcd

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portb.3 , Rs = Portb.4
Config lcdmode = PORT

Lcd "Hello"
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Kontraszt nincs beállítva jól.
Program végéről hiányzik at END utasítás - így a chip újraintdulgat...


Ext1 esetén nála ilyen az LCDteszt:

Kód: Egész kijelölése

$crystal = 16000000                                         'orajel
$regfile = "m168def.dat"                                    'chip

Config Lcd = 16 * 2 
Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portd.5 , Rs = Portd.4

Initlcd
Cls
Initlcd
Cls

Lcd "Itt vagyok!"


End                                                         'end program

lcdmode vagy port vagy pin :)
nálad nem kell az lcdmode=port sor....
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Hozzászólás Szerző: Cinege446 »

Annyi a változás, hogy most csak egyszer villan fel az alsó sor. A kontrasztot már próbáltam állítani, de lényegesen az sem változtatott a működésén. Kipróbáltam a Pin elnevezésekkel is meghívva a DuinoLib.inc -et, de szintén ugyan ez a jelenség játszódik le. :(
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Sorrend!


initlcd a config soraid _után_ legyen.
Nálam a mintában a Mega168 chip van!

DuinoLib-t ne keverd bele....

HW hibád van, vagy a programodban van valami nagy buktató...
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Hozzászólás Szerző: Cinege446 »

Most ezzel próbálkoztam:

$include "DuinoLib.inc"
$crystal = 16000000
$regfile = "m328pdef.dat"

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pin5 , Db5 = Pin4 , Db6 = Pin3 , Db7 = Pin2 , E = Pin11 , Rs = Pin12

Initlcd
Cls
Initlcd
Cls

Lcd "Itt vagyok!"


End

Ha a "Pin" jelöléseket átírom portokra, akkor is ugyan ezt csinálja. Egy ismerősömtől majd megpróbálok kölcsönkérni egy másik LCD-t, hátha azzal van a baj, bár nem tartom túlságosan elképzelhetőnek. Mindenesetre köszönöm a segítséget! :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

duinolib inc-t kihagyhatod, és a lcd-nél direkt port.lab hivatkozas elég...


A kod jonak tunik amugy....
A lcd D4...D7 lába van bekötve? :)
A d0...d3 maradhat lebegve is....
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Hozzászólás Szerző: Cinege446 »

Basszus! Már nem az első cucc, amit Kínából rendelek, így tudhatnám, hogy vigyázni kell vele! Az LCD hátán van egy egyszerű kis táblázat, ami balról jobbra írja le a lábek neveit, viszont a tényleges lábkiosztás jobbról balra történik! Újrakábeleztem az egészet és pöccre működik!
Köszi szépen mégegyszer a segítséget, mert a programkódban igen sok gyermeteg hibát vétettem :S Hiába no, nem tegnap volt, hogy utoljára elővettem a mikrokontrolleremet :) Szerencse a szerencsétlenségben, hogy a hibás bekötés ellenére nem ment tönkre az LCD!
Válasz küldése